APP下载

移动应用自动化兼容性测试方法综述

2018-08-13赵佳萌宣军法

软件 2018年7期
关键词:测试方法云端测试

陈 星,赵佳萌,宣军法



移动应用自动化兼容性测试方法综述

陈 星,赵佳萌,宣军法

(中国人寿研发中心 开发五部,北京 100038)

随着移动应用技术的发展,层出不穷的移动应用已经成为用户操作的主要入口,用户在感受移动应用带来便利的同时也对应用质量提出了更高的要求,如何开发和运营高质量的移动应用需要依靠强大的测试方法。移动应用兼容性测试就是其中一个方面,面对市场上众多的移动设备和操作系统,兼容性测试过程异常繁琐,如何实现兼容性测试技术的自动化,代替重复的手工测试,提高测试效率是移动应用测试的研究重点。本文对目前出现的兼容性测试问题进行了分类并详细分析了出现这些兼容性问题的主要原因,针对近年来移动应用兼容性测试方法进行了系统地总结和分析,重点介绍了基于云端的自动化兼容性测试方法,同时分析了目前主流的自动化兼容性测试平台的各项指标。

移动应用;兼容性;自动化;云端;测试方法

0 引言

随着移动互联网的高速发展,移动设备的碎片化现象日益严重,据中国信息通信研究院发布的数据,2017年android操作系统机型已超过1000款[1],ios操作系统机型也在不断更新中,面对越来越碎片化的移动设备市场,如何选择合适的移动设备和应用环境,是当前兼容性测试迫切需要解决的难题之一[2]。移动应用兼容性是指移动应用在不同的软硬件系统上和不同的应用软件之间能否稳定正常工作的能力,兼容性测试是指测试移动应用软件在不同的硬件产品上、不同的应用软件之间、不同终端操作系统平台上、不同的网络环境等中是否能够稳定正常运行的测试[3],目前移动应用兼容性测试所遇到的挑战有:

(1)系统版本覆盖广

(2)不同厂商对ROM的定制修改

(3)不同机型的硬件配置不同

传统的兼容性测试方法是通过购买少量主流机型进行手工测试,这种测试方法效率极低,过度依赖于人为主观因素,而且随着应用的复杂性和功能不断增加,兼容性测试的复杂度和工作量也不断增加,本文对自动化兼容性测试的目的和意义进行了描述,介绍了兼容性测试的类型和主要方法,重点介绍了基于云端的自动化兼容性测试方法,分析了目前主流的自动化兼容性测试工具。

1 移动应用兼容性的问题分类

移动应用的兼容性是指与移动应用软件在不同运行环境是否能正常运行的能力,兼容性问题主要涵盖以下几个方面:

(1)安装失败

移动应用安装失败主要原因有内存不足、手机上已经安装了其他签名版本、操作系统版本不匹配或者需要用户手动授权等,其中通过第三方测试机构的数据,内存不足是安装失败的最主要原因,版本不匹配的情况发生在应用要求的系统版本高于实际运行的系统版本。

(2)启动失败

移动应用启动失败主要原因有内存不足,加载资源错误。

(3)运行崩溃

内存不足、温度过高、操作系统不兼容、CPU不兼容等,具体问题需根据崩溃日志进行定位。

(4)运行卡死

移动应用卡死又称ANR(application not reponse),一个应用程序开始运行的时候会单独启动一个进程(Process),一个进程可以有许多的线程(Thread),UI Thread在程序运行时候就被创建,是一个进程的主线程,主要控制用户UI界面的显示、更新和控件交互,通常情况下UI Thread运行的时间应该越短越好,而访问网络、本地数据库读写应该在子线程去执行,如果UI Thread执行了这些费时的操作,系统在等待时间内发现UI Thread没有响应就会报错。

(5)运行卡顿

原因类似运行卡死。

(6)功能异常

具体原因需开发人员根据错误日志具体分析。

(7)UI异常

UI异常主要跟移动设备分辨率有关。

2 移动应用兼容性的问题影响因素

出现以上兼容性问题会造成用户体验差,应用无法正常使用等,移动应用兼容性主要受以下几方面的影响。

2.1 操作系统版本

根据2017年11月谷歌发布的最新Android版本统计数据,目前市面上Android系统版本从2.3到8.0,大版本下还有许多的小版本,如2.3.3-2.3.7,对于Android的很多版本功能是不向下兼容的,Android系统碎片化情况问题严重[4],市场占比情况如图1[5]。

图1 Android系统市场占有情况

ios用户普遍升级到10以上,根据苹果的官方数据,ios系统占比情况如图2[6]。

图2 Ios系统市场占有情况

移动应用运行于不同操作系统之上,有些应用需要在不同的操作系统平台上重新编译,有些应用需要重新开发或是进行较大改动,才能在不同的操作系统平台上运行,对于两层体系和多层体系结构的软件,还要考虑前端和后端操作系统的可选择性,探索移动应用的兼容性需要验证移动应用在不同操作系统上运行是否与操作系统版本无关。

2.2 硬件配置不同

不同移动设备CPU型号、GPU型号、内存大小、屏幕分辨率大小、摄像头像素、声卡型号等硬件配置的不同,导致移动应用的表现形式也不同,如屏幕分辨率是最常见的兼容性问题,如果代码未对不同分辨率的机型做适配处理,就会出现错位、遮挡、留白、拉伸和模糊等各种UI问题,这时候就需要开发人员从界面设计和代码(比如使用相对布局)层面就需要进行考虑[7]。

2.3 移动设备厂商对ROM的定制修改

该问题主要针对Android系统,目前主流的移动设备厂商都对Android系统进行了深度定制开发,如华为EMUI、小米MIUI等都有自己的接口,开发者在基于谷歌标准Android系统开发后,将应用运行在不同厂商的ROM上可能会遇到各种兼容性问题,比如调用相机和一些底层服务出现的不兼容,以及不同移动设备对于方向和重力传感器灵敏度设置不同的问题。

2.4 异构数据库

大部分的移动应用系统都需要安装数据库系统,目前常用的数据库系统有Oracle、Mysql、Microsoft SQL Server、Sybase、DB2等,不同结构的数据库平台在切换的过程中如果应用不能正常挂起那就会导致兼容性问题。

2.5 异种数据

对于某些移动应用需要支持常用的数据格式,例如某些应用需要支持常用的DOC、WPS、PDF等文件格式,如果软件无法完全正确地读出不同格式的文件,那说明存在异种数据的兼容性问题。

2.6 应用软件之间的兼容

每个移动应用软件的运行环境不尽相同,其他应用软件的运行是否会造成应用的某些功能无法正常实现也是移动应用兼容性要考虑的问题。

2.7 网络环境不同

基于开发环境和生产环境的不同,在各种网络连接下(WiFi、3G、4G等)移动应用可能会出现因延迟和稳定性问题导致的运行不正常的问题[8]。

3 传统兼容性测试方法

传统的兼容性测试的基本做法是测试人员根据移动应用用户的特征挑选出要覆盖的范围,通过自购少量主流机型,搭建配置测试环境,采用人工测试的方式执行测试用例获取结果[9],由于兼容性测试存在系统版本和移动设备两个维度,如果要覆盖所有的系统版本和主流设备,那会造成大量的测试工作量,并且需要不断购入真机,所以通常的做法是在少数主流设备上执行全量的测试用例,在其他兼容性测试范围内的设备上覆盖主要功能的用例,不同功能点的兼容性测试情况通过手工记录的方式进行记录和跟踪,这种测试方式的结果过度依赖于人为主观因素,对于获取的结果无法进行专业化记录和展现,对开发人员后期定位和修改问题造成很大的困扰。

4 基于云端的自动化兼容性测试方法

传统兼容性测试方法只要有相应的设备和时间就能开展,但这种测试方法需要提供完备的设备类型,对于不同维度的兼容性需要进行手工截图和记录日志,重复的劳动会造成大量的工作,基于云端的自动化兼容性测试方法可以代替重复的手工测试,提高测试质量和效率,有效减少测试开支。

根据云计算技术的体系架构[10]可将基于云端的自动化兼容性测试的体系结构进行大致描述如图3。

通过上图可以看出基于云端的自动化兼容性测试体系架构可以分为四个层面:面向服务的体系结构构建层(Service Oriented Architecture,SOA),管理层、资源池层和物理资源层[11]。SOA层主要是面向用户的应用服务层,用户可以通过标准的Web服务访问底层的各种资源,该层对底层的资源及架构进行封装,用户无需考虑底层各种资源的分配以及功能如何实现等。管理层主要是对整个平台进行管理,包含用户管理、任务管理、资源管理和安全管理四个方面,管理层可以保证用户权限、测试环境、任务及资源合理分配等各项活动有序进行。资源池层对云测试平台中所有物理资源进行抽象和管理,具体资源有各种终端及模拟器等设备资源、计算资源、存储资源等,所有的物理资源在资源池层进行封装。物理资源层是基于云端的自动化兼容性测试的实体层,如终端设备及模拟器、物理主机、存储器等基础设施。

图4为基于云端的自动化兼容性测试网络结构图。

基于云端的兼容性自动化测试的平台提供了大量的真机和终端模拟器,用户可以通过远程调用的方式,使用浏览器来提交测试项目和测试脚本,测试云将进行资源和统计,最后得出完整的兼容调度,把测试任务分配到云端执行[12],再将执行结果进行分析性测试报告,整个测试流程如图5。

图3 基于云端的自动化兼容性测试的体系结构

图4 网络结构图

图5 基于云端的自动化兼容性测试流程

5 主流基于云端的自动化兼容性测试工具

主流的云测试平台都支持对原生native、混合hybrid和Web应用的测试,其中兼容测试是通过在多种测试设备上安装、卸载和运行被测应用,遍历移动应用的每个界面,主要检查移动应用是否会报错或者崩溃,部分云测试平台还会对每个页面进行截图并进行对比。下面介绍目前推出的主流的支持自动化兼容性测试的云平台。

5.1 国外主流的云测试平台

国外主流的云测试平台有Xamarin Test Cloud、TestDroid、Sauce Labs、Google Cloud Test Cloud、AWS Device Farm。

Xamarin Test Cloud目前拥有超过2000多部终端,支持andriod和ios操作系统,支持脚本录制的自动化测试,所采用的自动化测试框架有Calabash(ios和Android)和自主开发的Xamarin.UITest[13]。Xamarin Test Cloud最大的优势就是拥有海量的终端,用户覆盖程度较广。

TestDroid目前在云端部署了超过400台Android和ios操作系统的真机[14],支持脚本录制的自动化测试,并且支持多种自动化测试框架,包括支持ios的Calabash、appium、UI Automation和 Jasmine,以及支持Android的Calabash、appium、Espresso、Robotium和uiautomator,TestDroid还有一个最大的优势就是支持游戏测试。

Sauce Labs[15]是目前全球最大的web和移动应用自动化测试的云平台,拥有56个Android测试平台和26个ios测试平台,支持脚本录制的自动化测试,并且支持租用测试设备进行手动测试,Sauce Labs使用自己的开源自动化测试框架appium。

AWS Device Farm目前拥有超过200台Android和ios操作系统的真机,支持8台自主开发的FireOS操作系统,支持脚本录制的自动化测试,并且支持多种自动化测试框架,包括支持ios的Calabash、appium、UIAutomation和XCTest,以及支持Android的Calabash、appium、JUnit、Espresso、Robotium和uiautomator[16]。

5.2 国内主流的云测试平台

国内主流的云测试平台有Testin云测、testbird、百度MTC、腾讯优测、阿里MQC。

Testin目前部署了600部Android和80部ios终端,开发者只需在Testin平台提交自己的移动应用,选择需要测试的网络、机型,便可进行在线的自动化测试,无须人工干预,自动输出包含错误、报警等测试日志、UI截图、内存、CPU、启动时间等在内的标准测试报告。Testin云测支持的自动化测试框架有Robotium、JUnit、Athrun和Testin SDK,其中只有Testin SDK支持ios和Android,其他框架都只支持Android[17]。

TestBird目前覆盖90%以上的Android和全系ios终端设备,支持H5、Hybird混合以及Web应用的兼容性测试[18],能够对问题进行统计并有行业对比数据,自动输出含错误、报警等测试日志、UI截图等在内的标准测试报告,可帮助开发人员进行错误定位。

百度移动云测试中心(MTC)目前拥有300部Android和30部ios终端以及各种配置的模拟器[19],但百度MTC只支持通过自己的测试脚本录制工具录制的脚本。

腾讯优测(Utest)目前覆盖98%以上的Android机型,目前不提供ios终端设备的兼容性测试,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务,不支持脚本测试,可远程连接测试设备进行手动测试[20]。

阿里MQC目前部署了140部Android和10部ios终端,能够支持阿里自主操作系统YunOS,支持脚本测试,无法进行人工测试[21],采用的自动化测试框架是支持Robotium和增强后的appium,其中appium可以支持ios和Android,能够进行崩溃分析。

6 结论

移动应用的兼容性问题是开发人员遇到的常见问题,解决移动应用兼容性问题可以有效提高移动用户体验,如果使用传统的测试方法对移动应用进行兼容性测试会大大提高测试成本和工作量,基于云端的自动化测试方法可以很好的解决这个问题。本文对兼容性测试问题分类进行具体分析,同时比对了国内外主流的自动化兼容性测试平台,为兼容性测试工作的开展提供了指导。随着移动设备的多样性和碎片化,移动应用的兼容性测试工作已经成为目前非常紧迫且具有挑战测试任务[22],为保证移动应用的质量,兼容性测试还需测试人员和开发人员的共同努力!

[1] 中国信息通信研究院. 2017年国内手机市场运行情况及发展趋势分析[R]. 中国信息通信研究院, 2018.

[2] Huang Junfei. App ACTS: Mobile App Automated Compatibility Testing Service: Proceeding of 2014 2nd IEEE International conference on Mobile Cloud Computing,Services and Engineering, 2014 [C]. Oxford: IEEE, 2014.

[3] 张涛, 周文强, 李坤, 王海鹏, 成静. 一种基于K-Mean算法的移动应用兼容性测试方法[J]. 西北工业大学学报, 2015, 33(3): 512-515.

[4] Hyung Kil Ham, Young Bom Park. Designing Knowledge Base Mobile Application Compatibility Test System for Android Fragmentation[J]. International Journal of Software Engineering and Its Applications, 2014(1): 302-314.

[5] Google Android. Google Android[EB/OL], 2017. http://www. android.com/.

[6] APP Store. APP Store[EB/OL], 2018. https://developer.apple. com/support/app-store/.

[7] 邱鹏, 陈吉, 潘晓明. 移动App测试实践-顶级互联网企业软件测试和质量提升最佳实践[M]. 北京: 机械工业出版社, 2015.

[8] Zhenyu Liu, Yun Hu, Lizhi Cai.Research on software security and compatibility test for mobile application: Proceeding of 2014 Fourth International Conference on Innovative Computing Technology (INTECH), 2014[C]. Luton:IEEE, 2014.

[9] 鞠炜刚, 欧林宝. 基于环境资源自动匹配的云测试框架研究与应用[J]. 计算机应用与软件, 2018, 35(01): 32-37+51.

[10] 刘正伟, 文中领, 张海涛. 云计算和云数据管理技术[J]. 计算机研究与发展, 2012, 49(S1): 26-31.

[11] 张亚萍. 基于云计算的软件测试关键技术研究[D]. 南京邮电大学, 2016.

[12] 顾宇隆, 杜明, 刘振宇, 李锋, 殷琦, 刘晓强. 基于本体的云测试资源分配与任务调度方法[J]. 计算机应用与软件, 2015, 32(11): 14-17+35.

[13] Xamarin. xamarin[EB/OL], 2018.https://developer.xamarin. com/testcloud/.

[14] Testdroid. Testdroid[EB/OL], 2018. https://cloud.testdroid.com/.

[15] Wikipedia. Wikipedia[EB/OL], 2017. https://en.wikipedia. org/wiki/Sauce_Labs.

[16] Amazon. Amazon[EB/OL], 2018. https://aws.amazon.com/ cn/device-farm/.

[17] testin. Testin[EB/OL], 2018. https://help.testin.cn/.

[18] testbird. Testbird[EB/OL], 2018. https://www.testbird.com/.

[19] baidu MTC. Baidu MTC[EB/OL], 2018. http://mtc.baidu. com/site/introduction.

[20] 腾讯优测. 腾讯优测[EB/OL], 2018. http://utest.21kunpeng.com/.

[21] huoxingqiu. Testerhome[EB/OL], 2016. https://testerhome. com/topics/6775.

[22] Tao Zhang, Jerry Gao, Jing Cheng,Tadahiro Uehara. Compatibility Testing Service for Mobile Applications: Proceeding of 2015 IEEE Symposium on Service-Oriented System Engineering (SOSE), 2015[C]. San Francisco: IEEE, 2015.

Survey of Mobile Application Automation Compatibility Testing Method

CHEN Xing, ZHAO Jia-meng, XUAN Jun-fa

(Department of the Fifth Development, China Life Insurance R&D Center, Beijing 100038, China)

With the development of mobile application technologies, more mobile applications have become the main entrance for users’ operations. People feel the convenience of mobile applications and at the same time, higher requirements of application quality are needed. How to develop and operate high-quality mobile Applications need to rely on powerful test methods. Mobile application compatibility testing is part of them. As there are so many mobile devices and operating systems on the market, the compatibility testing process is extremely cumbersome. How to realize the automation of the compatibility testing technology and replace the repeated manual testing method by improving the testing efficiency is the research focus of current mobile application testing. This paper discusses the classification and the main causes of the current mainstream compatibility testing problems and also systematically summarizes and analyzes the mobile application compatibility testing methods in recent years,. The cloud-based automated compatibility testing method is particularly presented and the current mainstream automation compatibility testing platforms are analyzed.

Mobile application; Compatibility; Automated; Cloud; Test method

TP39

J

10.3969/j.issn.1003-6970.2018.07.018

陈星(1989-),女,研究生,主要研究方向:移动应用兼容性;赵佳萌(1990-),女,本科生,主要研究方向:移动应用兼容性;宣军法(1970-),男,研究生,主要研究方向:应用兼容性。

本文著录格式:陈星,赵佳萌,宣军法. 移动应用自动化兼容性测试方法综述[J]. 软件,2018,39(7):89-94

猜你喜欢

测试方法云端测试
基于泊松对相关的伪随机数发生器的统计测试方法
幽默大测试
云端之城
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
“摄问”测试
“摄问”测试
“摄问”测试
美人如画隔云端
行走在云端