【分享吧】基于Appium的自动化测试解决方案实践

论坛 期权论坛 期权     
大连飞创   2018-8-15 17:36   3890   0
摘要:
  随着移动设备的普及和移动端应用程序的广泛应用,移动APP开发的迭代速度越来越快,靠人工测试已难以实现,对于标准化的全功能覆盖测试,最好的方式就是自动化测试。
  本文基于Appium自动化测试框架结合测试中心自有产品ATF自动化测试平台设计了一套同时满足Android和iOS应用的综合自动化测试方案。



自动化测试方案的制定
  本文需求主要是为了实现Android和iO两大平台的移动App的测试,即经过全面调研分析选取Appium作为自动化测试框架,选中其主要原因如下:
  1)Appium支持原生、Web和混合应用控件的抓取;
  2) 传统iOS自动化测试工具UIAutomation对于iOS10及以上系统不再支持,而Appium内部集成的XCUITest可支持iOS10以上系统的移动端自动化测试,并且向下兼容;
  3)Appium的跨平台特性使测试开发人员可以使用同一套API来编写自动化测试脚本,大大增加了iOS和Android测试套件间代码的复用性。



Appium自动化测试框架的封装
  为了更好的适应项目需求,我们对Appium做了一层封装,该封装采用分层的设计理念,主要分为三层:
   接口层:接口层使用Jetty框架,接收并解析入参请求,将解析后的指令发送至逻辑控制层,等待处理结果返回。
   控制层:根据接口层的指令向通信层下达控制指令,控制逻辑执行。
   通信层:通信层负责接收控制指令启动相应的session,并通过Appium内部集成接口向待测设备发送自动化执行指令,进行控件识别及操作。详细架构图如下:

  这种封装机制不仅易于维护和管理,并且又为系统带来了一些新的特性:
  1)框架通过唯一的设备标识符来创建Appium session。当需要多设备执行时,会根据不同设备创建多个Appium session,实现了多机并行执行。
  2)针对加密处理过的控件,Appium框架本身是无法识别的,因此在框架中加入了图像识别算法,可实现对安全键盘的识别与控制,极大提高了自动化率。
  3)框架对通用操作进行了一致化的接口封装,使移动端两个平台(Android,iOS)可以共用一套代码来完成自动化测试,提高了测试脚本的稳定性和可维护性。
  自动化测试框架封装后,开发人员可以轻松开发出自动化测试脚本,测试人员可以通过curl命令调用测试脚本来实现单个步骤的自动化测试。



自动化测试平台与Appium紧密结合
  众所周知,测试用例是复现测试场景和复杂的业务逻辑,但是测试步骤是无法满足测试需求的,在此引入测试中心自主研发的自动化测试平台ATF与Appium结合实现真正意义的自动化测试。
  ATF集用例管理,调度执行、执行监控,测试报告等于一身的自动化测试平台,广泛支持Windows、Linux、Android和iOS等多种被测系统,全面提供接口、UI和移动端自动化测试解决方案,作为自动化测试调度和管理中心,ATF框架开放灵活,可无缝衔接QTP,Appium等多款自动化测试工具,并可支持多机并发执行,实现测试无人值守等功能,极大的提高了测试效率。
  ATF与Appium结合后系统总体架构图如下:




自动化测试方案的优势
  Appium与ATF结合的应用为移动端自动化测试提供了全新的解决方案,相比其它方案具有如下优势:
  1)业务逻辑与测试脚本开发分隔开来,开发人员开发可反复使用的测试步骤,业务人员通过图形化界面拼接测试步骤,此设计即降低了自动化测试的技术门槛,又减少了业务或技术变化带来的后期维护成本。下图为测试用例编写的图形化界面:


  2)该方案采用Appium框架,该框架采用统一的Web接口的方式调用脚本使得Android和iOS的测试效率分别提升了42%和14%。
  3) 方案中对于控件识别采用基于元素和图像识别混合的方案,极大提高了控件识别率,进而提升了自动化率。
  4)该方案中ATF平台会自动生成测试报告,技术日志、用户日志和错误点截图等,用户可以此来快速准确定位缺陷。



总结
自动化测试是当今主要的测试方式,但并不是所有的产品和阶段都适合做自动化测试,在选择自动化测试前一定要先分析好自动化测试的适用性,另外自动化测试框架的选择也是关键所在,本文介绍的基于Appium的自动化测试框架能够同时支持Android和iOS系统,在节省人力的同时又保证了质量和效率的提高,充分发挥了自动化测试的优势。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3174
帖子:645
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP