交易技术前沿移动终端UI自动化测试工

?

本文选自《交易技术前沿》第二十三期(年6月)。

胡蕊莉恒生电子股份有限公司测试中心基础平台测试业务部

摘要:随着移动互联网的高速发展,使用移动App(Application)的人数已经逐步超过PC端应用。而移动AppUI(userinterface)自动化测试也逐步成为测试领域的热门话题,越来越多企业和个人在从事这方面的研究和探索。本文主要介绍本司自主开发的移动APPUI自动化测试工具以及它在金融领域产品中的实践经验和总结。

1UI自动化测试工具的实现

随着移动互联网的高速发展,使用移动App进行金融产品交易的用户越来越多,如何既保证产品的稳定及安全同时又能适应互联网快速迭代开发的要求、跟得上互联网金融发展的步伐,移动AppUI自动化测试已经成为提高移动终端产品测试效率的必要手段。目前,市场上Android及IOS移动设备市场占有率已超过99%,而AppUI自动化测试工具良莠不齐。通常来说评价AppUI自动化测试工具能够支持支持黑、白盒测试,控件定位及支持能力、版本兼容性,实施效率是重要的几项指标。AndroidUI常用的开源工具主要有:Instrumentation及UIAutomator,Instrumentation通过把测试代码和应用代码,运行在同一个进程中,通过Java反射机制,来获取当前窗口所有视图,并根据该视图查找到目标控件的属性信息,并计算出目标控件中心点坐标。然后,利用Instrument内部接口,实现点击操作。其可用来进行黑盒和白盒测试,是谷歌早期推出的UI自动化测试框架,版本向后兼容性最好,可以用来测试安装在低版本Android操作系统上的App,但对使用者技术能力要求较高,不支持跨App交互的情况。UIAutomator是谷歌新推出的UI自动化测试工具,通过Android提供的服务来获取当前窗口的视图信息,进而构造出一个AndroidInput事件来实现对应用的自动化测试。其主要特点是:测试代码和被测应用各自运行在各自的进程内,相互独立。优点是可以实现跨App交互场景,缺点是不支持WebView的自动化测试,需要在APIlevel16及以上的操作系统上才能使用。

      InstrumentationUIAutomator        跨APP支持不支持        WebView不支持支持        版本兼容性好不好        代码能力要求高低        控件识别支持较好较好  

IOSUI自动化测试工具分为注入式UI和录制回放UI测试工具,注入式工具可以完成对被测应用的UI进行功能测试,可以模拟用户的操作覆盖比较全的应用功能。缺点是需要在源代码中插入测试代码,而这些应用发布时又得去除,引入了被测应用和发布应用不一致的风险如:Bromine。录制回放UI测试工具,主要通过录制用户的操作行为,通过回放来完成对被测应用的功能测试,比较常用的有Instrument、FoneMonke。Instruments工具总体比较强大,首先它不需要队App进行任何修改和打桩,保证了App的原生功能,其次对IOS控件支持非常好,同时支持暂停、截图等功能。缺陷是扩展性不太好,执行过程中有时会中断。本文将介绍分别采用Robotium及XcodeInstruments来实现Android、IOSUI自动化测试。

1.1AndroidUI自动化测试的实现

Robotium是一款基于Android的自动化测试框架,主要用于模仿用户的场景测试。Robotium对Android自带的Instrument测试类进行了封装,是另一种通过InstrumentationTestRunner来完成Android应用测试的框架。Robotium支持Activity、Dialog、Toast、Menu等控件,对WebView也有较好的支持。它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行识别并操作,便于测试人员对Android应用编写强健而有效的自动化黑盒测试用例。本工具利用Robotium解决了AndroidAppUI自动化测试控件获取及操控的问题,而Robotium本身是基于Junit的,但Junit使用起来较为繁琐而且需要编写的很多硬编码,那么采用TestNG无疑是最佳的选择。本工具采用TestNG做驱动,用例和脚本分离的模式,测试开发工程师只需要维护脚本库,测试工程师只要编写实例化的自动化用例,即可实现自动化测试。这样即降低了自动化测试工具对测试人员编码能力的要求,同时也提高了工具的复用问题,一个脚本可以支持多套用例的执行。同时也提高了人员的利用率,降低了自动化测试成本。整体设计架构如图1所示:

图1AndroidAppUI自动化测试工具整体架构图

1.2IOSUI自动化测试实现

Xcode中自带的Instruments工具可以用来进行APP的自动化测试,以及用于进行内存泄露,文件读写操作等的性能分析。本工具通过java来驱动Instruments,利用Instruments的自动化录制工UIAutomation来实现控件元素的识别及属性获取;同时能够很方便的录制测试脚本、回放和查看运行结果。并采用C/S架构,Server端使用java编写,用于编写用例,并通过Junit方式来运行。Client端使用JavaScript编写,接收Server端的指令来驱动UIAutomation。采用测试用例与测试脚本分离关键字驱动模式,对XcodeUIAutomation工具进行了封装和优化,从而实现IOSUI的自动化测试,整体设计架构如图2所示:

图2IOSAppUI自动化测试工具整体架构图

2自动化工具的测试实践

目前采用该工具已经实现了本公司某移动金融终端产品UI层的全自动化测试,测试人员只需编写简单的excel关键字用例,即可实现自动化测试。节省了大量的人力成本,提高了测试效率。如图3所示,为本司某移动金融APP利用该工具实现自动化测试的场景。整个过程无需人工干预,对于失败或出现异常时,工具会自动截图并记录日志文件,方便后续问题定位。

图3移动金融AppUI自动化测试场景截图

3总结

目前移动AppUI自动化测试工具,大多是利用开源工具实现控件识别和操作来实现自动化测试。另外很多移动云测试网站提供了脚本录制回访、控件遍历、随机测试等来实现移动AppUI自动化测试,但都无法支持结果判断及跳转等功能,所以无法完全支持功能测试的需要,然后可以考虑作为冒烟或机型兼容性测试的选择。随着移动互联网的快速发展,UI层瞬息万变,如何实现移动APP界面自动化测试快速实施还有很漫长的路需要探索,相信会有更多的技术和好的工具应运而生。

参考文献

[1]YKim,TOh,JKim-《MobileInformationSystems》-[2]芈峮,iOS测试指南.电子工业出版社,年5月1日[3]邱鹏、陈吉、潘晓明,移动App测试实践.机械工业出版社,年7月

作者简介胡蕊莉

浙江大学软件工程硕士,年进入UT斯达康从事移动增值产品研发及测试工作,年加入恒生电子负责互联网金融终端产品测试,工作期间与团队成员合作研究并完成恒生第一、二代移动AppUI自动化测试工具的设计及研发并投入使用。研究并主导编撰公司移动非功能测试方法及标准。在二级刊物发表文章一次,多次在公司内刊发表文章,在APP测试领域有一定的积累和见解。

?免责声明









































白癜风最好的医院在哪
北京中医白癜风医院哪家最好



转载请注明:http://www.jiaju1314.com/zytd/10550.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了