专栏首页携程技术干货 | 敏捷模式下携程的接口自动化平台演变

干货 | 敏捷模式下携程的接口自动化平台演变

作者简介

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)大幅降低了对自动化测试人员的技术要求,方便团队快速实现和提升接口自动化测试的覆盖率,提高自动化测试在业务需求研发过程中的占比,得以更大程度地发挥其应有的重要作用。

本文分享自微信公众号 - 携程技术中心(ctriptech),作者:Tony

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | 基于图像比对技术,低成本维护的携程机票前端测试平台SnapDiff

    携程技术
  • 干货 | 去哪儿自动化测试框架Qunit中的零侵入切面技术应用及分布式运行平台

    作者简介 毛京超,任职去哪儿网酒店事业部,负责代理商对接业务线相关的测试工作,参与去哪儿Qunit自动化测试框架的开发。 蒋承君,去哪儿网金融事业部测试工程师,...

    携程技术
  • 干货 | 携程微服务架构下的测试浅谈

    施赛花,携程机票BU测试工程师,主要负责携程机票聚合层服务的测试,以及自动化工具的开发。善于研究新技术,并转用于实践,提升测试工作效率。

    携程技术
  • 【海云捷迅云课堂】初识自动化测试

    海云捷迅云课堂专题,旨在秉承开源理念,为大家提供OpenStack技术原理与实践经验,该专题文章均由海云捷迅工程师理论与实践相结合总结而成,如大家有其他想要了解...

    海云捷迅
  • 筛选自动化测试用例的技巧

    与手动测试相比,软件测试自动化具有许多优势。它改善了结果和质量,提高了可靠性,并减少了结果偏差。此外,它还可以加快流程,增加覆盖率测试并最终提高软件的整体质量。...

    FunTester
  • 自动化测试总结

    最近要在新入职的公司准备一份自动化测试的培训,这是我在得知要做自动化测试培训以后,随手画了个图,压压惊:

    测试开发社区
  • 千万别以为自动化测试多容易,看看这五个灵魂拷问,是你你也懵

    说起自动化测试,在这个软件吞噬世界的时代里,早不是什么高端技术了。从基本的单元测试,到复杂的系统测试,几乎都可以使用自动化测试来代替原本的手动测试。

    博文视点Broadview
  • 测试自动化与自动化测试:差异很重要

    自动化测试是通过自动化(例如一组回归测试)进行特定测试的行为,而不是手动进行,而测试自动化是指自动化跟踪和管理不同测试的过程。

    FunTester
  • 测试自动化与自动化测试:差异很重要

    自动化测试是通过自动化(例如一组回归测试)进行特定测试的行为,而不是手动进行,而测试自动化是指自动化跟踪和管理不同测试的过程。

    泽阳
  • 巧用自动化测试组合拳保证产品质量

    “如何保证质量”一直是产品或项目过程中关注的焦点,而测试是产品质量把控环节中非常关键的部分。本文结合我们的实践经验,总结出一套有效的自动化测试组合拳。

    宜信技术学院

扫码关注云+社区

领取腾讯云代金券