1、1摘要现代不同于过去,人们的生活水平在不断提高,对事物的接受力也在不断提高,再加上科技的发展,从而导致事物的更新速度越来越快。软件产品也是一样,要求也越来越高。对软件的期望不光要在功能上不断更新,出现新的好用的功能,也要在性能、实用性、可靠性等方面符合人们的需求。而现在的中国 IT 行业正是九十点的太阳,涉及到的领域越来越广泛,也越来越受到国家的重视,相应地出台相关政策,扶植投资相关企业。而互联网技术是近代历史上最伟大的技术发明之一,是现代社会进入信息社会的标志。互联网技术被广泛应用在通信、建筑、航天等多个行业,并已经形成了自身的产业集群,成为了当代人们工作生活的基础。移动互联网技术,正是在互
2、联网技术的基础上研发出来的将移动通信和互联网技术二者相互结合的移动网络技术,在当前阶段,移动互联网技术已经呈现出一种无可抵挡的发展态势,其已经深入的覆盖大部分使用移动通信的人群中,研究移动互联应用与工程实践对于社会发展有重大意义。未来的 5G 时代正是与移动互联相结合的互联时代,移动互联网的发展,导致事物的更新速度越来越快。软件产品也是一样,要求也越来越高。对软件的期望不光要在功能上不断更新,出现新的好用的功能,也要在性能、实用性、可靠性等方面符合人们的需求。本论文旨在研究探讨软件测试的背景意义,围绕产品项目以及相关工具介绍软件测试的基本的功能测试以及自动化测试的相关知识。文中对软件测试的意义
3、、概念、技术、方法逐一进行简单讲解,并对被测试的项目进行需求分析,然后展示我实习时经手的一个项目,并且对其中的登录功能模块进行了测试用例的编写,最后大概的对这次测试做了简短的总结。2目录摘要 .1第一章 引言 .31.1 目的 .31.2 背景 .41.3 范围 .4第二章 测试方法相关介绍 .52.1 测试用例的基本原则 .52.2 测试用例应注意哪些问题 .52.3 测试用例的作用 .52.4 相关技术介绍 .62.4.1 白盒测试 .62.4.2 黑盒测试 .62.4.3 等价类划分法 .72.4.4 边界值分析法 .72.4.5 因果图方法 .72.4.6 错误推测法 .82.5 Ro
4、bot Framework 简介 .82.5.1 Robot Framework 库介绍 .82.5.2 关键字介绍 .102.5.3 Robot Framework 的主要构成 .10第三章 需求分析 .113.1 电信对外服务平台的目的 .113.2 电信对外服务平台的内容涵盖 .113.2.1 前台内容 .113.2.2 后台内容 .143.3 电信对外服务平台的特色 .15第四章 项目软件测试的过程 .154.1 测试计划 .154.1.1 测试目的 .154.1.2 背景 .154.1.3 迭代测试说明 .164.2 测试内容 .174.2.1 UI 测试 .174.2.2 功能测试
5、 .19第四章 自动化测试 .214.1 自动化测试介绍 .214.2 自动化的适用场景 .224.3 自动化的实施步骤 .233第一章 引言1.1 目的测试电信数据对外服务平台中的各个功能模块是否满足用户要求,并测试是否存在 bug。预期达到能够使系统进行快速的改进和系统的提高。为了在软件投入生产性运行之前,尽可能多地发现软件的错误。在谈到软件测试时,引用 Grenford J. Myers 在The Art of Software Testing一书中的观点: (1)软件测试是为了发现错误而执行程序的过程; (2)测试是为了证明程序有错,而不是证明程序无错误; (3)一个好的测试用例是在于
6、它能发现至今未发现的错误; (4)一个成功的测试是发现了至今未发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,4没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。1.2 背景随着科学技术的发展 ,电
7、信运营商的业务范围也在不断扩大。作为提供固定电话、互联网接入以及移动电话等网络及通信服务的电信运营商来说,在大数据背景下,其业务运营平台的构建对其正常运行发展影响巨大。该平台作为在用户及系统开发人员之间交流的基础,对电信服务的发展有不可估量的影响。该开发项目的历史,列出用户和执行此项目测试的机构或人群;该项目前后经历了三个阶段,前期设计阶段,然后是开发阶段,最后是软件的测试阶段。项目的用户针对的是电信服务的对外人员,系统的功能测试主要由专业的软件测试人员进行测试。1.3 范围我们测试电信对外服务平台系统采用的是黑盒测试的方式来对系统进行测试。主要测试软件的功能是否满足客户的需要,性能是否优越以
8、及系统所存在的问题。对系统的各个模块进行详细的测试,并记录测试的结果,对测试的结果进行细致的分析处理。测试时对系统的各个功能模块进行拆分测试,并以每一个模块都要测试到。对所有可能的结果进行测试,以及测试过程中存在的问题进行分析,然后提交测试的记录。最后,对软件存在的问题以及性能的测试进5行全面分析,并给予记录。 在测试的过程中需要提出各个问题的假设,以及根据需求报告文档中存在的项目功能模块和用户的需求来改善系统。列出可能会影响测试设计、开发、或实施的所有风险或意外事件。列出可能会影响测试设计、开发或实施的所有约束。第二章 测试方法相关介绍2.1 测试用例的基本原则用成熟测试用例设计方法来指导设
9、计;测试用例的正确性;测试用例的代表性;测试结果的可判定性;测试结果的可再现性;足够详细、准确和清晰的步骤;2.2 测试用例应注意哪些问题不要把测试用例设计等同于测试输入数据的设计;不要强调测试用例设计得越详细越好;不要追求测试用例设计“一步到位” ; 不要将多个测试用例混在一个用例中; 不要让没有测试经验的人员设计测试用例;62.3 测试用例的作用有效性:有效地节省时间和资源,提高测试效率; 避免测试的盲目性,使得软件测试的实施重点突出、目的明确;可维护性:降低工作强度,缩短项目周期;可复用性:使得测试过程事半功倍;可评估性:程序代码质量的量化标准应该用测试用例的通过率和测试数目来进行评估;
10、可管理性:测试用例是测试人员在测试过程中的重要参考依据,便于对测试工作进行有效的管理;2.4 相关技术介绍按照软件测试用例的设计方法而论,软件测试可分为黑盒测试和白盒测试;2.4.1 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑测试、基路测试等,主要用于软件内部结构的验证。72.4.2 黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正
11、常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等,主要用于软件确认测试。2.4.3 等价类划分法等价类划分:是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法. 2.4.4 边界值分析法边界值分析法:边界值
12、分析方法是对等价类划分方法的补充.边界值分析方法的考虑:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误。82.4.5 因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这
13、就需要利用因果图(逻辑模型) 。2.4.6 错误推测法基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 其基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.2.5 Robot Framework 简介Robot Framework 是一个基于 Python 并且是关键字驱动的开源自动化测试框架,主要用于验收级别测试和验收测试驱动开发(ATDD)。它有一个易于使用的表格语法,用于创建测试用例,它的测试功能可以通过用 Python 或 Java 实现的测试库来扩展。用户还可以使用与创建用例时相似的简单语法,来从现有的关键字中
14、创建新的更高级别的关键字。92.5.1 Robot Framework 库介绍RF 的库分为标准库(standard library)和扩展库(external library) 。 对于标准库,这些库是直接绑定在 RF 内的,无须再下载;而外部库,是需要根据个人需要,下载后再安装导入才能使用的。 对于标准库,又分两类,类似 BuiltIn 库是 RF 自动加载到内存的,安装后按下 F5 就能直接使用,不需要再次 import,而 XML 库需要再次import 才能正常使用。因为 BuiltIn Library 提供了很多常用的关键字,比如 Sleep, Log, Evaluate 等,所以
15、 RF 就把这个常用的库自动加载到了内存。官网上标出的 11 个标准库在这里都能找到对应的.py 文件。概括介绍下这几个标准库的作用:BuiltIn : 自动导入,它包含一些非常常用的关键字,如Log、Set Variable、Evaluate、Sleep 、Comment、Should Be 10EqualCollections : 处理操作 List 和 Dictionary;DateTime : 支持创建和验证日期/时间值以及它们之间的计算;Dialogs : 支持暂停测试执行并从用户那里获得输入;OperatingSystem : 支持执行各种操作系统相关的任务;Process : 支
16、持系统中的执行进程;Screenshot : 捕获和存储截图;String : 处理操作字符串;Telnet : 支持连接到 Telnet 服务器上打开的连接执行命令;XML : 验证和修改 XML 文档;Remote : 部分远程库接口,它没有关键字. 2.5.2 关键字介绍我把它比作一个能够测试(或者帮助测试)被测物(我们能够用一些关键字实现另一些关键字。 )高阶关键字:测试被测物的业务逻辑。低阶关键字:在一个合适的粒度实现高阶关键字,高阶关键字通常把功能分解成一些低阶关键字。技术关键字:提供技术层面的实现(访问并且测试被测系统)2.5.3 Robot Framework 的主要构成测试组件(Testsuite):测试用例被实现的地方。每个工程都