第8章 自动化测试框架
通过第7章的介绍,相信读者已经熟悉了自动化测试的相关工具,以及如何编写自动化脚本,并使用TestNG框架执行测试用例,输出测试结果。在本章中,我们将通过一个真实的项目了解自动化测试框架,开发该框架的背景主要是为了实现公司"以客户需求为导向"的战略转型,这必然对业务流程优化再造和服务模式创新提出更多、更高的业务需求。公司积极快速响应市场需求、适应市场变化,必然在项目上提出更多、更紧急的业务需求。项目迭代次数增加,测试的需求也会呈爆发式增长,上线后风险不能把控,因此急需一种测试方法来满足这种爆发式的需求增长。自动化测试框架理念应运而生,希望在保持原有的人力资源基础上,提高现有的测试质量和效率。
本章内容将详细讨论自动化测试框架的思想,采用业务流程的分析方法进行框架的设计和分析,把手工用例如何转换成自动化用例,使用Java语言自主开发测试框架、编写测试脚本,使用流行的Git版本控制工具维护管理测试脚本,采用Jenkins做持续集成,通过定时任务来运行测试脚本,搭建分布式测试环境在最短的时间完成测试任务,最后通过邮件发送测试报告。本章主要内容如下:
· 测试框架分析
· 测试框架设计
· 测试框架开发
· 脚本开发
· 持续集成
8.1 框架分析
自动化测试框架提供一整套自动化测试工作流。采用业务流程分析方法,先熟悉业务系统,然后根据业务系统划分出业务流程。业务流程指系统的一个完整的流程,例如用户购物流程,首先是用户登录系统,然后选择日期和价格以及需要购买的产品后,提交订单生成订单号,最后付款。这样一个完整的流程称为一个业务流程。这个业务流程可以拆分成相互独立的功能模块,比如用户登录、产品购买、提交订单、付款,这些功能模块也称为业务组件。由不同的业务功能模块就可以组成不同的业务流,而业务流程的实现可以定制化,这就是业务流程分析方法的精髓。通过下面的知识将进一步了解业务流和业务组件在业务流程分析方法中的重要作用。
8.1.1 框架设计目标
有效地使用自动化测试框架,不仅可以提高回归测试的执行效率和优化人力资源,而且便于满足业务需求变更和数据变更,便于不同的用户使用自动化测试框架。自动化框架把提供业务流可维护、数据可定制、脚本组件化以及数据和脚本相分离为目标。建立一套自动化测试框架相关的规范和管理制度,从而形成一套完备的自动化测试框架,主要体现在以下几个方面:
· 自动化测试框架将实现对测试资产库的统一管理,测试资产库包括:测试需求、测试计划、测试用例、测试数据、测试脚本、测试缺陷、测试日志和测试报告。自动化测试框架使测试资产库得到合理有效地复用,从而快速复用于回归测试;
· 开发管理测试脚本,定时运行测试脚本发送测试报告;
· 通过自动化测试框架,实现脚本和数据分离;
· 框架通过自主定制开发,方便扩展,易于维护;
· 引入"业务流程"分析方法,梳理自动化测试用例;
· 通过自动化测试框架,部分功能测试通过自动化测试来实现,提高测试效率。
8.1.2 业务流程层次分析
一个业务流程可分为多个业务功能模块,一个业务功能模块又可细分成多个业务单元。每个业务单元可以执行不同的操作,如图8-1所示为业务流程分析过程。一般将业务功能模块与业务单元统称为业务子流程。整个业务流程按层次分解成业务流程、业务子流程和执行操作。
图8-1 业务流程层次分析
8.1.3 业务流程测试自动化
通过业务流程分析可将业务流程分解成多个业务组件,多个业务流程中可能包含相同业务组件,比如用户登录、退出等公共模块,对业务流程进行组件化开发后,可降低开发与维护的工作量。一个业务组件变化,不需要修改其他组件,功能测试人员只需要根据业务规则设计测试用例关注业务,而自动化测试人员根据测试用例编写测试脚本关注技术的实现,实现业务与技术的分离。设计业务流程组件的原则如下。
· 业务功能的复用性。
当某个业务功能同时被多个业务流程所覆盖时,建议组件化。
· 业务功能的复杂度。
当某个业务功能本身的业务逻辑与前台界面较为复杂时,建议组件化。
· 业务功能的独立性。
当某个业务功能可以完成一个独立功能时,建议组件化。
· 业务功能的模块化。
当某个业务功能联系比较紧密时,可以使其模块化,能更好维护该模块。
8.1.4 手工用例自动化
自动化测试用例的设计通常存在两种情况,第一种情况是已有手工用例库的老系统,第二种情况是无手工用例库的新系统。自动化测试可以发生在系统集成测试阶段,但更多体现在回归测试阶段。在针对某系统进行自动化测试覆盖时,采用"业务流程分析法"设计业务流程用例,针对无用例库的新系统可以直接设计业务流程自动化测试用例,对于已有手工用例库的老系统,则可采用测试用例的"拆并原则"对手工用例进行转换,形成自动化测试用例。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。