干货分享:龙猫在自动化测试领域的深耕与收获

  

  自动化测试框架龙猫是由蚂蚁金服终端工程技术部实验平台技术组自主研发的一套自动化测试框架、支持,      、      、      、      、      、      ,等移动端自动化测试场景。   

  

  为了确保蚂蚁金服移动测试平台在集群环境下能够稳定,高效运行自动化任务,并灵活快速支持多场景域内业务,龙猫经历了从0到1,从1到2,并逐步演进到目前支撑阿里域内10 + BU日常自动化测试及结合移动开发平台美国电影协会对外输出,成为集团内使用面最广、性能最为稳定的自动化测试框架之一。   

  

  本文将围绕龙猫一路踩坑,迭代完善成熟的过程,从沉淀总结的一些方法论和解决方案展开分享:   

  
      <李>      李   <李>      李   <李>      李   <李>      李   <李>      李   
  

  
  

  

        龙猫C/S架构模型设计   

  

  蚂蚁金服移动测试平台最开始引用了Appium开源解决方案,但由于其部署复杂,接口不稳定,设备掉线,多层服务链路,社区维护不够迅速等种种问题,综合评估业内类似框架都有共性的痛点,因此我们决定重新设计一套适合云测集群环境,满足域内不同业务需求快速迭代更新的解决方案。   

  

  基于已有的痛点,我们认为龙猫从设计上需要满足”调用链路尽可能短”,“项目结构尽可能简单透明”等特点,从而确保测试链路上的不稳定因素尽可能少,同时,综合考虑异常情况下,我们需要能够快速定位问题,并具备一定的自修复能力。结合业内多个框架普遍采用三层或多层的设计,龙猫最终被设计成了C/S模型的两层架构。   

  

  干货分享:龙猫在自动化测试领域的深耕与收获“>
  </p>
  <p>
  两层架构的设计理念实际上为龙猫带来很多优点,比如:
  </p>
  <ol>
  <李>
  
  :只要客户端与手机链接,就可以开始自动化流程,避免了中间服务的命令中转及服务本身资源管理;
  李</>
  <李>
  
  :无论在自动化的调用速度还是链路的稳定性上都有了质的提升,此外简单的架构模型确保了近些年框架快速迭代的可行性。
  李</>
  </ol>
  <p>
  <br/>
  </p>
  <h3>
  
  
  全链路稳定性构建
  </h3>
  <p>
  面对蚂蚁云测集群自动化严格的要求,稳定性的问题依然浮出水面,成为龙猫不得不解决的一道难题。
  </p>
  <p>
  在自动化任务的任何链路节点都有可能发生异常,所以稳定性实际上覆盖多个层面,比如:
  </p>
  <ul>
  <李>
  
  李</>
  <李>
  
  李</>
  <李>
  
  李</>
  <李>
  
  李</>
  <李>
  
  李</>
  </ul>
  <p>
  接下来我们从以上5个方面阐述在整个调用链路上我们都做了那些努力。
  </p>
  <p>
  
  </p>
  <p>
  龙猫框架在前期开发中,日常维护需要投入极大精力,每日要面临框架自身缺陷引起的异常和各种业务自身的异常问题。同时,各类异常问题要求人工筛选,从而推动框架自身及业务方去解决。由此带来的结果是,大部分云测任务因为这类代码问题而引起终止,导致测试开发不够稳定。
  </p>
  <p>
  为了改善任务异常带来的不稳定因素,杜绝框架自身SDK问题,并且业务异常能够做到智能分的类,我们首先做了一次全类型异常堆栈的上报统计。根据后台统计数据可以大概分为“业务层逻辑异常”和“SDK层异常”,针对发现问题,我们集中投入专项研发精力,修复框架逻辑不合理引起的异常,杜绝SDK自身问题,针对海量业务异常,我们做了一层抽象归类,将业务异常逻辑归类为明文提示并给予一定推动建议,并且添加检测点状态校验,针对某些偶现异常,重脚步层做一次重试提示用例结果成功率。
  </p>
  <p>
  在程序异常治理过程中,我们发现业务用例大多都需要在程序各个运行阶段封装一些业务逻辑,然而SDK层也会有一定的初始化过程,通过JUnit运行起来的用例一旦业务封装或SDK层接口调用实际不对,就有可能引起程序不稳定现象,因此,龙猫框架更加现有的业务需求现状,及日常已发现的问题,自身定制了一套规范的龙猫用例生命周期,业务用例可以在钩子方法中封装各个节点的逻辑。
  <h2 class=干货分享:龙猫在自动化测试领域的深耕与收获