2.2.1 软件测试工作的流程
在1.2节中,我们已经讲述了软件生命周期的各个阶段,那么测试的流程是什么呢?
下面来看软件测试的流程图,如图2-1所示。
图2-1 软件测试的流程图
以上流程为软件测试的主要流程,根据项目的不同,会参与到其他流程中,比如评审工作。下面针对每个过程进行讲解。
1.需求分析
需求分析是项目组人员(开发、测试人员)通过需求文档对项目进行熟悉、思考,了解项目业务流程、项目环境需求、项目性能需求等相关信息,通过这个过程,增强对软件业务的熟知和理解。项目组人员对需求分析的程度,直接影响项目的最终成果。
需求分析一般指用户功能需求分析、软件功能需求分析、测试功能需求分析、环境需求分析、性能需求分析。
有些人认为需求分析是没必要的,在后期编码的时候一起解决就可以了,而且节省时间。这种观点是错误的,需求分析过程是非常重要的。
需求分析是使客户思想变成软件的连接桥梁,没有或者不充分的需求分析会导致最后的产品不是用户想要的产品,而且开发人员想象出来的产品,其实用性很有可能会大打折扣。
比如,用户需求的功能为:(1)可以设定特价商品;(2)当购物满300元,享受返现50元的活动。
项目人员在拿到这个需求时,没有经过详细地分析,就完成了此功能。当用户使用此功能的时候发现,购物满300元确实返现50元,但是当买的都是特价商品或者购买的商品中有特价商品的时候也是返现50元。这时客户就会再次提出,购买特价商品不算在300元内,此时要再次补充这个功能。
如果对需求进行了分析,就会发现还有特价商品的问题,及时和客户进行确认,将特价商品考虑在内,并加以解决,就不会出现上面的问题了。
因此,项目人员一般要对项目的关联非常熟悉,才能开发出符合用户需求的软件产品。
2.测试策划
我们的人生需要策划、我们的学习需要策划、我们的工作需要策划,软件测试工作一样需要策划。
产品从可行性分析到最终形成发布使用的产品,需要一个缜密的产品策划,而测试策划就是产品策划的一部分,通过测试策划来规划一个产品的所有测试工作。
有人说,测试何必那么麻烦,编码完成拿来测试一下就可以了,有什么好策划的?
测试策划是对整个测试工作的规划,通过阅读测试策划相关文档,使测试相关工作人员、开发相关工作人员等项目工作人员了解测试的职责、依据、策略、内容、时间,以及在测试工作过程中其他项目人员的工作内容,从而能够增强产品质量,提高工作效率。测试策划是整个软件生命周期中测试工作执行的基础。
测试策划的内容包括:
● 定义、总结测试工作需求,包括用户、开发对测试工作的需求。
● 明确项目测试过程经历的测试阶段,以及各个测试阶段通过的标准、测试类型、测试采用的工具及技术等。
● 明确项目周期测试工作中的沟通方式及沟通方案。
● 估算项目测试工作量,可以根据算法和同类项目比较得出。
● 确定项目测试过程中需要的资源(如人员、软硬件、工作场地等)。
3.测试设计
测试设计是对测试策划的细化和分析,从而制订出符合待测试项目的测试策略、测试方案及测试用例的过程。此项工作内容对测试人员的素质及经验要求都很高,测试人员的素质和经验直接影响测试设计,以及测试工作的质量。
1)测试策略的设计
我们知道,在国内软件行业中,软件测试团队的组建还需要不断地完善,那么如何合理配备软件测试工作与研发工作呢?如果对一个大的项目进行简单的测试,那么这个测试工作是不负责任的;对一个小的项目进行复杂的测试,同样是不负责任的,它耗费了不必要的资源。我们要通过测试策略的设计,来合理安排测试工作与研发工作。
一个好的测试策略离不开测试人员的经验教训,也离不开项目的资源(用户和研发测试需求、测试资源配置、待测试项目的规模、类似项目测试策略参考等),通过这些资源我们可以分析待测试项目,对项目的测试工作制订合理的测试策略。
那么从测试策略中我们能知道什么呢?
首先,在控制相应的测试成本的情况下,是否还能达到预期的测试效果;
其次,测试活动安排是否合理;
最后,测试策略设计的技术是否可以使用,是否可以完成预期的质量目标。
2)测试方案设计
在测试方案设计完成后,就要针对测试策略进行进度安排,考虑资源配备、测试工作的成本,以及技术的可行性。
首先,确定每个测试阶段的工作进度,在进度上要注意配合开发及市场人员工作。
其次,确定每个测试阶段的工作资源(包括软硬件、人力资源)到位时间,确定工作时间,注意项目的交替,人力资源浪费等。
最后,确定项目的技术可行性,项目技术是否可以使用,使用的成本是否符合项目成本,技术的使用能否保证工作进度等。
3)测试用例设计
测试用例设计是对测试方案的进一步细化。具体的测试用例设计,本书就不再介绍了,相关技术已经非常成熟,可参考书籍也比较多。
4)自动化测试脚本的设计
自动化测试是提高软件测试效率及性能等方面的技术,显然自动化测试脚本的设计是重要的一步。
自动化测试脚本的编写依据是测试用例,一般脚本生成有两种方法:一种是运行软件、运行测试工具,录制脚本,根据需求修改脚本;另外一种是完全手工编写脚本。
4.环境搭建
环境搭建是测试工作的一个重要阶段。测试环境的适用性、正确性严重影响测试结果的真实性和正确性。
● 硬件环境:服务器、客户端、网络连接设备、打印机/扫描仪等硬件设备构成的环境,特殊项目还有其他辅助设备,如电表终端。
● 软件环境:软件运行时的操作系统、数据库、其他常用应用软件或者定制应用软件,其中主测试环境和辅测试环境侧重点不同。针对电子商务的Web测试还要考虑浏览器的环境搭配。
● 环境搭建遵循的原则:环境要符合软件运行的最低要求;选用比较普遍的操作系统和软件平台;没有病毒的环境,并且使用有效的正版杀毒软件环境,同时要考虑对内存的影响;电子商务Web测试要注意浏览器环境的搭建。
注意:在搭建环境时要注意软件运行系统的产生方式,按程序一步一步地进行安装。
5.测试执行
测试执行是依据测试设计执行相应的测试活动,并记录和报告执行过程中产生的错误和缺陷的过程,其中也包括测试设计过程中没有包括的测试,如GUI测试。
● 测试进度控制:根据测试设计,跟踪测试工作的进度。当发生意外需要调整进度时,要根据成本及相应的项目需求变更测试设计中的进度。
● 测试用例:依据测试进度执行测试用例,并且及时修改和补充测试用例,同时要及时评审,保证补充和修改的测试用例的正确性、全面性。
● 执行测试:根据测试设计及测试用例,在测试的各个阶段执行测试。比如:在单元测试阶段中,依据单元测试用例执行程序,验证程序的正确性;集成测试阶段,依据集成测试用例执行系统程序,验证程序接口的正确性;系统测试阶段,依据系统测试用例执行系统,验证系统是否满足用户需求。
● 其他测试方法的测试:在实际工作中,测试的执行过程中会加入随机测试、错误猜测法测试等开放式测试方法,以提高软件的质量。
● 自动化测试的执行:依据测试进度,执行自动化测试脚本。若项目有需求变更,则要对应修改相应的测试脚本。
● 测试缺陷的记录及管理:在测试执行过程中,及时记录缺陷(遵循缺陷的描述规则,合理填写缺陷的属性),为开发人员追踪、修改缺陷提供依据;利用高效的测试工具,比如,TestDirector、Bugzilla等测试管理工具管理缺陷,对缺陷进行跟踪、控制,并及时回归缺陷。
6.测试总结
测试总结是在项目测试工作结束时,对整个测试工作的总结,包括总结手工、自动化测试工作。另外,对项目过程的相关资料(如测试过程文档、测试脚本、测试工作及工具使用经验总结等)进行收集、总结,纳入到测试部门的知识库,为后期项目的测试工作提供经验教训,从而提高测试工作的质量和效率。