软件工程由多个环节组成,每个环节都需要软件测试人员参与,有些环节虽然不是软件测试人员主要工作体现的地方,但却是不可或缺的重要组成部分。相应的,软件测试也由多个环节组成。接下来将整体介绍软件测试的各流程环节,以及软件测试人员在这些环节中所需要执行的大体工作内容以及需要输出的工作成果。
软件测试是伴随着项目的立项而开始的,也就是说,软件项目一旦确立,软件测试工作也就开始了,那么软件测试到底是如何贯穿到整个软件工程中的呢?
软件需求分析是软件测试流程中的基础一环,用来明确软件测试对象以及测试范围,并作为测试覆盖的基础。其目的是确保所有风险承担者尽早地对项目功能达成共识并对将来的产品有个相同而清晰的认识。
本阶段主要由需求人员统一收集需求,并整理成文档格式转发给PM(Project Manager项目经理或者Product Manager产品经理)、开发经理和测试经理。然后PM召集开发经理、测试经理和需求分析人员进行会议讨论,了解具体每个需求的实际含义,并明确各个需求的有效性、可用性和可测性;然后确定最终实现的需求和功能点,并整理出重点需求。接着PM会根据会议讨论结果编写需求说明,并且再次召集各职能小组人员参与开会讨论,对需求说明进行修复、完善、并最终确定《需求规格说明书》。《需求规格说明书》决定了项目以后所有工作的基调。
这个阶段的主要负责人是PM,PM有时候是指项目经理,有时候是指产品经理。
软件测试人员在本环节中的主要作用是参与需求评审,通过提出评审意见的方式对需求进一步矫正,并为下一个环节(制定测试计划)中工作量的评估打下基础。
本阶段的输入文档主要是需求说明相关文档,输出文档是《需求规格说明书》。
软件测试需求分析阶段主要工作内容如下图所示:
-
软件测试计划制定
了解了软件的需求之后,软件测试人员会讨论开发这个版本的目的是什么、要包括什么功能、功能的范围是什么样的、有哪些可以参考的文档、用什么测试策略和工具来执行软件测试工作,然后快速地进行风险分析,并据此制定风险应对方案,还要确定测试资源,还需要确立几个里程碑事件……这看起来就是一个测试计划分析的过程,而最终形成的文档就是《软件测试计划》。
软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试范围、测试配置、测试进度、测试资源、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是软件测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制软件测试进度,应对软件测试过程中的各种变更。
本阶段主要负责人是测试经理,但软件测试员会参与软件测试计划中与本人相关部分的内容制定。
本阶段输入文档是《需求规格说明书》和《项目开发计划》,输出文档是《软件测试计划》。
软件测试计划制定阶段主要工作内容如下图所示:
-
软件测试用例设计
软件测试用例是指导软件测试工作的一种文档,它是通过使用在软件测试计划中确定的测试技术,对于已确定的软件测试需求进行逐步推敲而设计出来的。
软件测试用例设计完成,要进行综合评审,通过评审可以弥补软件需求中遗漏的一些因果关系和异常案例,可以改善测试分析和设计的过程。类似地,软件测试工作的其它产出文档,如软件测试计划、软件风险分析应该进行评审。
本阶段的主要负责人是测试经理和测试工程师,但需要注意的是,在很多公司测试经理不光要做管理和任务分配工作,也会负担重要功能部分的实际设计和评审工作。
本阶段的输入文档是《软件需求规格说明书》、《软件测试计划》、《软件设计文档》(包括《软件概要设计文档》和《软件详细设计文档》),输出文档是《软件测试用例》。
软件测试用例设计阶段主要工作内容如下图所示:
-
软件测试环境搭建
要顺利执行测试,首先要确定正确地搭建了软件测试环境。软件测试环境是指为了完成软件测试工作所必须的计算机硬件、软件、网络设备、历史数据的总称。测试环境的搭建是一项非常重要的工作,同时也可能是一项很耗时的工作。有些软件的测试环境要求比较复杂,需要在测试执行之前做好充分的准备。如果正在测试的是第一个版本,搭建测试环境就尤为重要了,需要从头做起。
有些项目也曾尝试在开发环境下做测试,但效果并不好。开发环境主要是方便程序员调试程序存在的,而测试环境则比较接近于生产环境,如果在测试环境上测试结果不能通过,那么是肯定不能部署到生产环境给用户或客户使用的。
就像程序员有用于他们调试的环境一样,测试人员也需要有对测试环境的访问和控制权,以保证一些私有的测试数据不会被其他人用到,这样可以提高他们的工作效率。测试环境适合与否会严重影响测试结果的真实性和正确性。
通常在搭建测试环境的时候,开发人员会提供安装指导书,否则也可以在搭建测试环境遇到问题的时候要求开发人员协助。通常,测试环境会有专人来负责。
-
测试数据准备
目前很多互联网软件应用,后台都会有数据库做支撑,那就需要在测试的时候准备相应的测试数据,准备测试数据是软件测试工作的一项必备工作。如何快速地创建测试数据,也是测试工程师的重要能力之一。
创建测试数据的过程,往往需要很长的时间,传统的创建测试数据的方法分为手动创建和自动化创建两种方法。
手动创建测试数据一般有如下几种方法:
使用自建脚本也可以生成测试数据,比如脚本语言Ruby或Python,Fit或FitNesse等工具以及Shell脚本等。
实际工作中,可以结合手工方式和自动化方式,灵活运用多种方法去创建不同测试阶段需要的测试数据。另外,也可以在平时就保存一些常用的测试数据。但随着时间的推移,测试数据也会过时。就算是从实际的生产过程中得到的数据,如果时间太久,也不再能精确的代表当前的生产数据了。一个使用了无效数据而“测试通过”的测试场景是没有说服力的。所以测试数据也需要经常更新。
-
测试执行及缺陷处理
提交了测试对象并且测试对象满足了测试执行的进入准则后(测试的进入准则会在第3章软件测试计划中详细讲述,就是满足了一定的条件,才能开始执行测试),可以开始测试执行。
测试执行是指按照之前设计好的测试用例,按照里面的步骤一步一步的执行,查看预期结果与实际结果是否一致的过程。
测试的执行只能有2种结果:Pass或者Fail。测试不通过的话,测试人员就应该把发现的问题及时记录下来,报告给开发人员做出相应的修改。缺陷记录是测试人员工作的具体表现形式,是测试人员与开发人员沟通的基础。因此,如何录入一个高质量的缺陷报告,是每个测试人员都要重视的问题。
测试工程师对于那些已经被开发人员修复的缺陷,需要做回归测试以验证其是否得到正确修复,确认已经被修复的,就将缺陷关闭,否则重新提交给开发人员进行修复。对于缺陷的处理可以使用缺陷管理工具。
本阶段的负责人是测试经理。测试经理需要跟踪每个项目的实际测试情况,并对难以处理的情况做出决定。本阶段,测试工程师的工作是执行具体的测试工作、提交缺陷、回归缺陷。
本环节输入文档是《需求规格说明书》《测试计划》《软件设计文档》《测试用例文档》以及《测试数据》。输出文档是《软件缺陷报告》。
测试执行阶段主要工作内容如下图所示:
-
测试总结和报告
软件测试进行到一定程度就要进行测试评估了。测试评估可以在软件测试过程中阶段性进行,也可以是测试整体结束后进行。通过测试评估生成的软件测试报告(又叫测试评估报告)来确定测试是否达到了出口准则。
测试报告是一个展示测试人员工作过程的机会。软件缺陷列表和软件测试用例都太细了,而且篇幅比较大,专业性又强,很多人对其不感兴趣,但是测试报告却是很多人都会看的一份文档。所以,学会写软件测试报告会帮助你更好的在工作中找到自己的价值。
测试报告要介绍项目的基本信息,展示软件的遗留问题,回顾整个测试过程,同时得出测试结论,并在最后提出自己建设性的意见,然后用PDCA循环来进行过程改进。完成软件测试报告之后要进行评审,以确定软件测试是否确定要结束。
本阶段的主要负责人是测试经理,测试报告一般由他来完成。但测试执行人员会提供自己所负责模块的测试情况给测试经理以帮助完成这份文档。
本阶段的输入文档是《需求规格说明书》《测试计划》《设计文档》《测试用例》《软件缺陷报告》。输出文档是《软件测试总结报告》。
测试总结阶段主要工作内容如下图所示:
-
测试文件归档
软件测试到此是否就结束了呢?还有最后一个环节,那就是测试文件的归档。测试文件归档是在测试验收结束,宣布测试有效及结束测试后,对整个过程中涉及到的各种标准文档进行归档、存档。可以使用文档管理工具来完成此项工作。如Ftp、SVN、Git、VSS、Wiki等。
软件测试的过程,其实是一个完整的PDCA循环。测试不应该在执行完软件测试后就戛然而止,应该使用这次测试总结出来的经验和教训指导下一次测试的设计和执行。软件测试中到处都体现着PDCA循环的精神。
测试工作就像进行一场战争,敌人不是开发人员,而是可恶的、狡猾的、隐蔽的bug。测试人员应该与开发人员成为亲密的战友,共同对万恶的bug展开一场轰轰烈烈的歼灭战,并且最好能把它们消灭在产生的源头。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】