1. 云栖社区>
  2. 博客列表>
  3. 正文

Macaca:南方航空人工测试的拯救者

云学习小组 2016-11-02 15:48:31 浏览1657 评论0

devOps 自动化测试 杭州云栖大会 开源无线和前端专场 南方航空 Macaca解决方案

摘要: 在2016杭州云栖大会的“开源无线和前端”专场上,南方航空移动架构师孔兆祥带了题为《南航Macaca技术实践》的精彩分享。分享中,他首先介绍了Macaca的基本概念;接下来重点讲解了Macaca落地南航的过程;分享结尾,他对Macca未来的使用方向做了展望。

2016杭州云栖大会的“开源无线和前端”专场上,南方航空移动架构师孔兆祥带了题为《南航Macaca技术实践》的精彩分享。分享中,他首先介绍了Macaca的基本概念;接下来重点讲解了Macaca落地南航的过程;分享结尾,他对Macca未来的使用方向做了展望。

以下内容根据演讲PPT及现场分享整理。


南航与Macaca

在没有接触Macaca之前,南航在移动端自动化测试是完全空白的:QA基本靠人工操作完成测试。随着南航业务不断地发展,开发迭代速度的加快,纯人工操作已经无法满足快速迭代的需求;另外,南航需要推广自身的DevOps,但由于其自身特点,DevOps需要很大范围内接入自动化测试工作。

为了解决上述问题,南航亟需寻找一个满足下列要求的自动化测试方案:

  •  第一较低的学习成本;
  •  第二便于上手;
  •  第三该解决方案必须是轻量化的解决方案。

通过不断地寻找,不断地对比,最终南航将目标聚焦在阿里巴巴开源解决方案Macaca上。

9dd1cd82d0bbbb7bad6b99fdc62cbe8e77ee0404

Macaca是一套完整的自动化测试解决方案,它的三个特性对南航极具吸引力:

1、它是跨端的解决方案(测试领域的创新之作),支持移动端和PC端,极大地释放人工成本,提高了工作效率(只需学习一套脚本工具);

2、它支持多种语言,Macaca由Node.js开发的,支持JS、Python、Java编写自动化脚本;

3、它是一个轻量化的开源项目。

南航落地Macaca

09874224617d705ab132214b8afcd3bb8458c4c9

在落地Macaca之前,需要先部署如图所示的技术栈:Node.js用于部署Macaca;Gitlab&Gitlab Runner用于存储代码和测试用例;Slack用于团队的沟通协调;Reliable是配合Macaca使用的CI平台。

97e407d869184f4bbe441cbd8ab0e4a1756c4cfc

Macaca具体使用流程如下所示:开发人员首先将代码提交到Git仓库(Gitlab);然后Gitlab触发Webhook(使用*.yml脚本编写流程);Webhook触发业务任务,业务任务推到Gitlab Runner进行项目构建以及Build RPA包。

fc4df1ddf16000d1a12e034744f0a96ed78c7df0

(接上图)RPA包会触发Reliable 平台的API,然后创建测试用例的任务,也就是说开发人员每提交一次代码或创建一次构建,都会生成一个测试用例的任务。

0565f5a6bdeee46b107ea2a1629915548ddcf717

Reliable是一个分布式CI平台,Master会把测试任务分发到其他Slave执行(Slave客户端即Macaca客户端);客户端运行Macaca测试用例。

8c39fc4c2500749ec1c1106f8786f25087f679e6

测试用例运行之后,会有两种情况发生:如果成功,则可以直接查看生成报告;否则会通过Slack通知开发人员测试失败,重新修改代码。

bb8398e3b9ec0605cdcfc1a46add4afff6108a9b

上图是测试过程总览,从图中可以看出:已经形成开发到测试的闭环。

fed8f402ab177ac41f1eba0f91597f584a834c0d

上文提到Slack是一个IM平台,当然这里也支持钉钉。它的作用是:当测试用例失败时,可以通过IM平台提示测试用例哪里出现问题。

9a9824372e0b512b6af9a621669a11149d02fe59

上图是简单的登录测试用例:输入用户名和密码,然后点击登录按钮。中间的图是Macaca测试用例的目录结构图,App目录中存放着项目构建成功RPA包;macaca-test目录存放着Macaca测试用例;具体测试用例的代码如右图所示,以行为驱动的方式开发。

e85a0e99e3873178af34c15150e52ceb867fe397

Macaca中还提供了Inspector工具供用户直观、方便查找到想要选中的元素。图中右侧一栏提供的是XPS、ID、Name数据,用户通过Inspector工具寻找目标界面的元素。

db0654ab267a9cbe716f0b892935dd469c699556

南航选择Visual Studio Code作为常用的IDE。之所以选择Visual Studio Code,是因为它能够轻量地、方便地支持使用者Debug,用户可以根据自己喜好选择相应地调试工具。

ee42bf474a06a78e1db065bf15a76811c56218c9

上图是Reliable的界面。通过Reliable,用户可以查看测试用例和测试结果;并且Reliable天生与Macaca无缝衔接,这正式也是南航选择Macaca的原因之一。

d59062c96506b56d3aab4754d71c0717f0810a20

最终的测试结果需要与南航的测试平台对接(Macaca产生的测试报告、测试结果数据在导入南航测试管理平台前需要进行数据转换),形成完整的测试流程。


62bdc3cd58c3a036975729654caaa37ffcd2dd00

总结来看,Macaca给南航带来的价值主要是两点:

  •  成本投入、回收角度分析,仅考虑自动化测试脚本制作成本,第五轮测试执行后即可回收成本;
  •  风险控制角度分析,首先测试报告自动生成,可以提高测试过程管理有效性;其次生产上提高质量,降低风险,减少缺陷流出的成本;此外,有利于测试资产传承,降低对测试人员业务熟练度的依赖性。

除此之外,Macaca还给南航带间接性收益:QA从原来的从人工操作转变成具备可编程的能力;开发人员从原来直接提交代码,到现在提交代码前需要通过Macaca UI单元测试等;Macaca的应用推动了南航工作流程和工作方式的演变。

Future

7b0a27e4ec265d8c30e2e23326a843192da3f1ab

未来,为了推广Macaca,让Macaca被更多用户所接受,南航需要以下几个方向继续努力:

  •  为了让Macaca运行更加稳定,需要建立私有的CNPM库;
  •  基于Reliable的基础上,建立CI&CD平台;
  •  大力推广DevOps,扩大自动化测试范围;
  •  完善文档,回馈开源社区;
  •  H5端部署到Macaca中。

 

版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

用云栖社区APP,舒服~

【云栖快讯】2017互联网超级工程阿里双11完美落幕,交易额突破1682亿,但阿里工程师如何玩转“超级工程”,背后黑科技又是如何?12月13-14日,12位大咖直播分享揭秘1682亿背后技术实践,马上预约  详情请点击

网友评论

关注
云学习小组
一群热爱技术的朋友们在云栖社区组成的学习小组!
164篇文章|411关注
移动测试(Mobile Testing)是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,... 更多>

全球领先的SaaS性能测试平台,具有强大的分布式压测能力,可模拟海量用户真实的业务场景,让应用性能问题无所遁形。 更多>

业内领先的面向企业的一站式研发提效平台,通过项目流程管理和专项自动化提效工具,能够很好地支持互联网敏捷项目的快速... 更多>

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本... 更多>
社区之星年度评选,投票可抽奖

社区之星年度评选,投票可抽奖