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

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


南航与Macaca

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

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

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

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

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

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

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

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

南航落地Macaca

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Future

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

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

Macaca:南方航空人工测试的拯救者相关推荐

  1. 【合集】云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库等(下)...

    2019独角兽企业重金招聘Python工程师标准>>> 云栖社区从几百位讲师中精挑细选了若干精华,其中涵盖了智能物流.大数据.开源数据库.智能工业.容器技术以及智能应用实践等. 作为 ...

  2. 使用PO+跨平台改造Macaca示例(APP端)

    在学习完Macaca基础后,就迫不及待的模仿着Macaca示例项目,开始了测试用例的开发,并且在几天时间里就完成了几个页面的测试.然而,此时项目的所有代码都放在一个.py文件里,该文件已有上千行代码, ...

  3. Macaca简单入门

    执行Macaca自动化脚本时,首先需要启动一个Macaca服务器: $ macaca server --verbose 参数设置 启动Macaca服务器时如果没有指定端口号,服务器URL的配置参数如下 ...

  4. 联想拯救者Y9000-ubuntu-nvidia-驱动安装

    概述 由于联想拯救者Y9000的硬件都比较新,所以在安装ubuntu 的时候会有很多驱动的问题,本文主要讲解安装nvidia驱动的问题,如网卡.触摸板无效的其他问题请在我的其他文章中查找 友情提示 安 ...

  5. macaca之app-inspector

    简单介绍 之前已经将macaca的环境搭建好了,现在就需要进行元素的定位,这里使用app-inspector,然后进行自动化脚本的编写. 实际操作 一.安装app-inspector npm i ap ...

  6. 近4万Star,登月源码登顶GitHub,这位女程序员“拯救”了阿波罗

    作者 | 伍杏玲 转载自CSDN(ID:CSDNnews) 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstrong)成功 ...

  7. 程序员如何用“撞针“拯救35亿地球人?

    春节假期即将结束,有多少程序员朋友已经离开家乡在返回北上广深等工作所在城市的路上?有多少程序员已经开工大吉开始了新一年的代码征程?回首这一个春节,8 部电影在大年初一齐上线,<流浪地球>在 ...

  8. 手机拍视频最怕抖,只能靠AI拯救了

    视学算法报道 转载自:机器之心 编辑:陈萍.维度 视频画面的稳定与否,很大程度上影响着观感的舒适度!如何补偿视频抖动,拯救手抖党,来自台湾大学.谷歌等研究机构的学者,提出了防抖新算法,视频拍摄--稳. ...

  9. 【Python基础】拯救你奇丑无比的Python代码的神器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Python编程语言需要遵循PEP8规范,但是初学者往往记不住这个 ...

最新文章

  1. JAVA-Socket通信笔记
  2. ftp://ftp.cs.wisc.edu/
  3. IL入门之旅(三)——Dump对象
  4. hiho一下 第三周 Hiocoder #1015 : KMP算法
  5. 2017年,这两个大数据岗位一定会火!
  6. 孙悟空都服输!波士顿动力最新逆天机器人视频,翻筋斗连拿大顶!
  7. 快速掌握MATLAB应用,从这一步开始
  8. Jeecg-Boot使用war包在Tomcat中部署之参考教程
  9. 四川长虹招聘机器视觉、图像识别工程师
  10. android中slider控件,VideoRangeSlider视频裁剪控件
  11. 读书 - 《许三观卖血记》
  12. 指纹识别技术未来发展趋势
  13. 古典密码分析(冗余度,唯一解距离,语言统计,重合指数)
  14. portal服务器认证系统有哪些,portal服务器认证过程问题
  15. 北理工嵩天Python学习笔记
  16. 容器CICD实践:基于Helm实现应用交付自动回滚
  17. DaaS架构及落地 (一)
  18. 项目管理中的成本绩效方法
  19. STM32F103代码远程升级(五)基于MQTT协议WiFi远程升级代码的实现
  20. jvm mat分析dump文件

热门文章

  1. Pravega应用实战:为什么云原生特性对流处理很重要?
  2. Java™ 教程(控制流语句)
  3. Lock-Free 编程
  4. 查询一个ID出现2种结果的情况
  5. 1.3Python快速入门
  6. Rman--状态管理命令
  7. XAMPP:访问phpmyadmin出错的解决方案
  8. Lua1.0 代码分析 opcode.c
  9. Oracle Real Application Testing diagram
  10. python socket文件传输