阅读644 返回首页    go 技术社区[云栖]


如何快速掌握阿里巴巴内部高效测试流程?

自动化测试是软件测试技术上的一大进步,我们都知道自动化测试可以给工作提效,减少重复劳动,但在实践过程中,却总是碰到各种各样的问题,导致进入自动化测试盲区。如何做好自动化测试,是很多企业迫切想要解决的问题。近日,阿里巴巴产品专家金桐从自动化的烦恼,到分层自动化单元测试、业务服务层测试和UI测试的优劣势分析,再到阿里巴巴分层自动化的实践之路,为大家提供了一套分层自动化实施解决方案。

自动化

为什么要做自动化?



自动化的烦恼


259f5d4c4fa515b66832995c04188cd541e6c3f5





成本高



效果差


覆盖率低


及时性低



f810d9c4f71f1813ec34ced8f67b167b64502511

分层自动化


54e3edeabd4ec7eccfbed5ee7d0fc23a42c47d46

分层自动化的特点比较如下:

Unit(单元/底层服务):


Service(接口/集成服务):


UI(系统/页面):



bd75e5ffb8338ebd45d93ea4c1da09962efd67c1

除了分层方法与建议外,还有分层投入比,究竟花了多少时间做单测、多少时间作接口和UI?我们清楚知道,根据(N-1)M的劳力节约公式,不是所有项目都需要做自动化测试,主干核心、业务稳定、项目周期长和重复工作多的项目是需要做项目自动化测试的,图中展示了Google产品分层自动化投入比,它是比较完美的,当我们底层建设很完善的时候,上层建筑的确可以花费较少时间,维护成本也会相对降低。我们目前达不到,但可向这个比例去发展。

阿里巴巴分层自动化的实践


首先,分层自动化工具革命


19887c52863327d8383ce070263527647228b56d8eff911e197c17b4b8f54beafb895b1bdd4abd9a

UI自动化—AUI:

21ae2572c23cc791c2d2a722cf1a457a1fa3617a

接口自动化—SAT:

6b97e993d55bc88ebafc3c28983a9e74f1e5267f

单测—Amon:

57d6d5d0c865b7824fe9e9ca64cef5fed9a16c38

不仅如此,阿里云效还从需求-开发-测试-发布整个项目流程中可工具化、平台化的手工工作,全面进行工具化、平台化的改造,如图所示。 

a76c711b78e3b41f08cf3109ae90920211ae0547


开发环节:从拉分支开始,到自测的部署环境与单元测试,全部平台工具化。一键拉分支、一键部署、一键触发单测集成,不到喝杯咖啡的时间,即可查看环境部署结果和findbugs、PMD、Sonar等代码扫描结果。

测试环节:手工测试中有用例和缺陷两款主打产品,平台沉淀,无需再做一些文件传输,加上前面介绍的分层自动化相关测试平台与工具,在自动化测试工作上的效率提升,最终实现整体测试工作的平台与工具化。

其次,项目流程革命


80612122c9d7c54cb095ff625ffd1e11987de5d6





aa65274806b3a69189f1b94732cb17cc494ddb27

图为阿里项目分层自动化持续集成完整示意图,我们多了集成自动化平台,该平台可以把分层自动化工具串联在一起,去做整个持续集成、持续交付操作,让工具具备了平台能力。不仅如此,我们还将分层自动化测试纳入到了拟发布流程中,开发同学提交环境部署后,会自动提交自动化测试,不需要测试同学介入,如果失败了才会通知测试人员排查,完全做到了CI/CD的理想效果。

46c7408d061d8ab6fae51f157a1512ef01f359e8

项目集成可以使用,那么日常的产品回归也可以用,图为阿里产品分层自动化持续集成完整示意图,集成自动化给日常回归产品做了赋能,将分层自动化工具平台和集成自动化串联,去保证日常产品质量的回归。


  • 阿里内部:大幅提高研发测试比,减少重复劳动带来的加班,更多高效工具的诞生,使用这套体系,B2B研发测试配比达到了8:1,部分产品线13:1,却全年无故障。
  • 研发:单测成本降低,覆盖率可视化,自测有保障,故障降低。
  • 测试:测试要求降低,重复工作减少,增加工作成就感,各种工具诞生。
  • 云效客户:企业快速赋能,提高研发测试效率,快速掌握阿里内部高效测试流程。

关于云效(https://yunxiao.aliyun.com):


4ec4f8078c61952382c55bc1284788ad5c91d3b7






最后更新:2017-08-16 12:02:29

  上一篇:go  PostgreSQL前言
  下一篇:go  独享云虚拟主机和共享云虚拟主机的区别