作者简介
Tony,携程高级测试开发经理,负责自动化测试框架及平台类工具开发。
一、引言
现有的接口自动化测试实现,多以使用代码工程项目的形式,借助第三方软件测试编程框架,手工编写自动化测试脚本,并采用其它的第三方开源调度平台(如Jenkins)实现自动化任务的调度与执行。
这样的传统做法,首先是自动化测试用例数据管理与维护不方便,数据检索、统计与报告不便捷。其次,对于从事自动化测试工作的人员技术要求也相对较高,特别不利于在原来以手工测试为主的团队快速推进自动化工作。
再次,各类自动化代码工程项目,也增加了开发与测试人员的代码维护难度,冗余代码较多,且与公司内其它系统间的依赖交互需要在各自动化项目中进行不同程度的实现,增加了自动化测试人员的代码编写复杂性。
同时,公司对技术研发团队的优化,新的敏捷开发实践,在去测试化的工作团队中,几乎不再有专门从事自动化测试代码编写与维护的人员,而由开发人员与极少的测试人员共同承担测试工作。再继续维护代码工程类的自动化脚本项目,对所有研发人员来说都是一项繁琐而复杂的工作,不利于自动化测试工作的长期开展。
二、解决方案
如何克服上述现有技术实现方式对于软件开发测试团队带来的困扰?
将自动化测试工作进行平台化成为最优的解决方案,公司过去有过类似的实践,但仍然存在配置过于复杂等问题。因此,我们急需要提供一种更轻量更简易的自动化测试在线编写与执行的系统及方法。
三、方案的实现要点
1)将接口自动化测试工作移到一个平台化的工具上,实现自动化测试用例的便捷管理、测试执行与报告的简单快速。
2)实现自动化测试用例配置的简易化,实现脚本的在线编写和执行。
3)支持报文即验证点的功能,使测试用例无需脚本或仅需少量脚本。
4)实现自动化用例与Mock用例的直接关联,提升Mock在自动化中的使用便捷性,提高用例稳定性。
5)支持AB实验配置,QConfig配置,Redis依赖数据配置等。
6)支持数据库查询与操作,支持获取依赖服务的报文进行验证。
7)支持自动化的持续集成,支持Pipeline及代码覆盖率统计等。
8)实现测试设计管理功能,支持测试设计思维导图的导入导出,并与自动化数据关联进行测试执行与统计。
9)支持不同的自动化执行策略,提供对性能测试的支持等。
10)直观的各类自动化测试统计报表,扩展的外部调用API等。
四、技术实现
平台系统前端采用当前流行的Vue架构实现,后台采用Java技术实现,数据存储采用MongoDB,同时集成与Mom、Paas、QConfig、Redis、CI、Mock、PTest等平台交互的功能,测试用例脚本编写采用JavaScript等脚本语言。
1)用户在线编写用例使用JavaScript脚本,脚本中可使用由平台后台用Java实现的方法。
2)测试的执行,由Java分布式执行服务完成,由于测试用例使用解释性脚本编写,执行过程无需编译,执行速度快。执行的调度与执行不再依赖任何第三方工具。
3)平台通过与Mock、QConfig、Redis等工具对接,实现测试依赖数据的挡板功能,有效的提升测试用例的执行稳定性的同时,使用户不再需要操心与这些工具的交互环节。
4)平台与CI、Paas等工具对接,实现由代码Merge请求触发应用的自动发布与自动化测试执行,实现代码质量的提前检测。并结合gitLab的Pipeline功能根据自动化测试等结果规范代码提交行为,提高开发提交的代码质量。
5)通过与性能测试、项目管理等工具对接,同时对外提供扩展API,可使测试用例、测试结果等数据复用到更多场景。
五、平台易操作性
易操作性对工具的推广和使用至关重要,在平台功能的设计上力求精简有效,降低用户配置的复杂性,使配置过程简单明了。
极其简单的操作流程:[测试设计]> 测试用例配置与编写 > 创建测试套件与测试项目> 配置执行计划 > 测试执行与自动化报告。
操作流程简单说明:
1)测试设计,该步骤为可选步骤,通常是在需要对测试需求进行测试框架设计时使用,采用思维导图的方式输出测试设计结果,可在平台上进行增删改查与导入与导出操作。
2)创建测试用例,配置测试用例,简单的进行服务请求配置与测试验证配置,即可实现一个用例。更详细的配置还可以包括前置服务配置、其它依赖数据配置(如:依赖服务Mock配置、AB实验配置、Redis数据配置等),测试验证配置中,可分别配置如响应验证报文、SOA调用验证报文配置等,还可以编写请求格式化与测试验证脚本等,在用例配置过程中,可以随时使用测试用例的试运行功能,即时查看用例的编写是否正确。
3)添加测试套件,对测试用例按所属服务、测试类型、测试级别等进行分类管理与装配。
4)配置测试项目,引用和组装对应测试套件,配置服务测试地址、测试执行计划(含自动发布等)、邮件报告通知等。测试项目是正式执行测试的管理单元。
5)完成以上步骤,即可运行测试项目,查看测试报告、用例执行详情,进行失败用例重试等。
六、小结
接口自动化测试的平台化,对技术研发团队的积极效果在于:
1)提升接口自动化测试工作开展的便捷性,缓解和减轻开发和测试的自动化测试脚本编写与维护工作,降低手工测试的人力和时间成本投入。
编写单个测试用例的时间平均缩短60%以上,测试执行秒/分钟级出报告,测试项目执行时间平均缩短90%以上。
上线时间 | 应用 | 服务 | 用例 | 项目 | 执行次数 |
9个月 | 239 | 798 | 4195 | 241 | 33962 |
2)大幅降低了对自动化测试人员的技术要求,方便团队快速实现和提升接口自动化测试的覆盖率,提高自动化测试在业务需求研发过程中的占比,得以更大程度地发挥其应有的重要作用。
-END-
本公众号全部原创已整理成一个专栏,请在公众号里回复「测试开发」获取!
【推荐阅读】
App自动化测试方案。
浅谈如何自动化生成测试脚本...
测试技术资源大放送!包括但不限于:测试理论,测试开发,Python,Java,自动化测试,人工智能测试,测试管理,测试工具,性能测试,接口测试,安全测试,app专项测试,招聘内推,求职,selenium,appium,jmeter,linux,mysql,测试课程,等等。在下面公众号内回复「1024」,即可免费获取!!