技术文章

技术干货—敏捷测试流程

与传统测试组织相比,敏捷开发团队不再细分小组,敏捷开发团队构建时即确定了测试工程师,因此,敏捷测试中不存在测试团队构建环节。

 

同时,因产品规划期间已经设定了具体的实现目标,大部分软件公司不再要求测试工程师编写测试计划与方案,或者编写的计划与方案相对简要,因此,敏捷测试流程中,通常只具有以下几个节点,如图1- 7所示。

 

敏捷测试流程

图1- 7软件测试工作流程图

 

2.2.1 分析测试对象

 

敏捷开发团队中的测试工程师,接受任务分配后,需熟悉被测需求,其获得待办事项列表、用户故事集、需求大纲等资料,通过阅读从总体上掌握被测对象情况,便于开展后续的需求分析、用例设计等工作。

 

2.2.2 分析测试需求

 

测试工程师熟悉相关需求后,根据测试管理需要,可将用户故事、需求大纲以测试人员视角提取出来,便于后期的用例设计与执行。

 

因用户故事或需求大纲在某种程度上已经表述较为清晰,测试工程师可直接将用户故事或需求大纲作为测试步骤进行测试。

 

如果用户故事或需求大纲存在较多验证信息,则可根据测试用例设计的需要,细化测试需求,并利用需求管理工具进行,如本教程采用的禅道项目管理平台。

 

以ECShop登陆功能为例,用户故事表述如下:

 

01

 User Story1

 

注册用户输入正确的用户名和密码,可登陆系统,以便于他们进入系统执行其他操作。

 

02

User Story2

 

注册用户输入错误的用户名或者错误的密码,系统拒绝登陆,并给出“用户名或密码错误”的提示,以保证系统的安全。

 

User Story1、User Story2两个案例表明了角色期望通过什么操作达到什么效果,获得什么价值,这样的用户故事较容易理解,如果开发团队不要求编写用例,测试工程师则可利用上述用户故事的表述直接进行验证,从而检测被测对象是否实现用户需求。

 

如果需要编写用例,则可将用户故事编写到禅道中,作为测试需求,便于后续的测试用例设计。通常情况,产品经理或产品需求开发工程师会编写用户故事,测试工程师只需引用即可。

 

2.2.3 设计测试用例

 

如果敏捷开发团队要求设计测试用例,则测试需求分析提取完毕后,经过敏捷开发团队评审通过后,测试工程师开展测试用例设计活动。

 

测试用例设计可采用等价类、边界值、正交试验、状态迁移等常用的设计方法进行。

 

测试用例文档可使用Word、Excel等形式管理,也可使用ALM、禅道等工具进行管理。测试用例设计完成需经团队评审才可使用。

 

2.2.4 搭建测试环境

 

测试版本发布,开发工程师申请测试时,如需搭建测试环境,测试工程师应从开发工程师处提取测试版本,根据开发工程师提供的测试环境搭建单进行测试环境搭建。测试环境搭建需要测试工程师掌握与被测对象相关的硬件、软件知识。

 

2.2.5 执行测试用例

 

测试环境搭建完成、测试版本发布后,测试工程师进行测试用例执行。根据前期设计并评审通过的测试用例,测试工程师先对待测功能模块实施冒烟测试。

 

冒烟测试通过后,开展正式的测试活动。执行测试用例过程中,如果发现有遗漏或者不完善的测试用例,应当及时更新。用例执行过程中如果发现了缺陷,则需按照缺陷管理规范提交缺陷。

 

2.2.6 跟踪处理缺陷

 

常用缺陷管理工具有Bugzilla、ALM、禅道等。大多数公司都有自己的缺陷管理流程规范,开发团队成员需根据缺陷管理流程开展缺陷跟踪处理工作。

 

缺陷处理阶段,大多数情况下需进行3次甚至更多的迭代过程,多次进行回归测试,在规定时间内达到Sprint结束可发布或交付的标准。

 

2.2.7 输出测试报告

 

测试完成后,如有需要,测试工程师将对被测对象做一个全面的总结,以数据为依据,衡量被测对象的质量状况,并提交测试结果报告给项目经理或产品经理,从而帮助项目经理、产品经理及其他利益相关方了解被测对象的质量情况,以决定下一步的工作计划。

 

功能测试报告主要包含被测对象的缺陷数量、缺陷状态统计、缺陷分布、是否通过测试等信息。

 

自动化测试、性能测试活动很多时候属于单独的测试环节,很多团队将手工功能测试、自动化及性能测试报告分开总结。

 

2.2.8 实施自动化测试

 

如有必要,开发团队可对需求稳定、测试周期长、存在大量重复操作的业务实现自动化测试。敏捷开发中,对自动化测试要求较高,并且大多数基于接口实施自动化测试。

 

自动化测试一般分为基于UI与接口两种类型。基于UI层面的自动化测试代表工具有UFT、Selenium、Appium等,接口方面则是Jmeter、Postman、SoapUI等。

 

自动化测试对测试工程师的技能要求较高,需掌握如JAVA、JavaScript、Python等编程语言。

 

2.2.9 实施性能测试

 

一般在功能测试完成后,根据用户需求开展性能测试工作。与功能测试一样,性能测试实施之前,需要进行性能测试需求分析、指标提取、用例设计、脚本录制、优化等一系列设计过程,然后再进行场景执行、结果分析等。

 

目前行业内使用一些自动化工具进行性能测试是目前实施性能测试的主要手段,常用的性能测试工具有LoadRunner、Jmeter等。