安卓应用软件兼容性测试用例的自动生成

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:yyj55555
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
Android是一种流行的移动操作系统,具有最大的市场份额。Android OS不断发展,市场上存在各种Android版本。此外,设备制造商通常会定制原的Android OS来实现各种功能以吸引客户。这些现象使得Android生态系统严重碎片化,从而使Android开发人员很难测试其Android应用程序的兼容性。因此,现实生活中许多Android应用程序都存在各种兼容性问题,这可能会严重影响用户体验。兼容性问题已经引起了学术界广泛的关注。为了解决这个问题,研究人员提出了许多静态分析工具,例如Fic Finder和Ci D。但是,这些技术有一个共同的局限性:它们会生成许多错误警报。测试是一种为了检测程序错误而广泛使用的技术。但是,由于搜索空间爆炸问题,对Android应用程序执行兼容性测试具有不少挑战。首先,要测试的设备型号太多。市场上有来自1,200多个制造商的24,000多种不同的设备。其次,要测试的API版本太多。由于Android平台发展迅速,市场上的设备运行的API版本有十多种(从10到29)。第三,要测试的API调用点太多。我们分析了API版本28的Android SDK的源代码,结果显示,SDK中大约有220,000多个方法。自动兼容性测试的一个直观的方法是在一个设备(例如,具有Android原生OS的设备)上生成测试,并在具有各种API版本的其他设备上重复执行测试(重放),以识别不一致之处。不幸的是,由于上述挑战的存在,进行这种详尽的测试是不切实际的。在本文中,我们提出了一种适用于Android应用程序的实用兼容性测试技术。我们的基本想法是:Android应用程序中的兼容性问题通常是由Android平台演变和操作系统定制引起的;在测试期间,我们只需要执行可在不同设备型号和API版本触发定制的系统代码或演化的框架API的测试即可,其他测试几乎没有机会触发兼容性问题。为了自动测试Android应用的兼容性,我们首先需要确定两种类型的API,称为目标API。第一种与定制系统有关,我们通过对比具有代表性的三星手机系统和原生系统来找出手机厂商经常定制的文件的位置。我们通过分析SDK中的调用关系找出SDK中所有可以调用到定制代码的API,这些API作为第一种目标API。另一种与Android平台的演化有关,我们分析了API版本21到28之间的SDK,通过分析相邻版本之间的差异确定了由于SDK演化而引入和删除的API,我们把所有的这种API放入一个集合,作为第二种目标API。然后,我们设计并实现了第一个用于测试Android应用程序兼容性问题的框架,GTFC。GTFC将生成触发目标API的兼容性测试并且在不同的设备池中进行测试重放来检测是否存在兼容性问题。该框架包括四个阶段:(1)插桩阶段:此阶段的目标是确定应用程序运行测试时,测试是否触发目标API。在此阶段,GTFC将对应用程序进行静态分析。它将在调用目标API的位置之前插入特定的语句。在后续测试生成阶段中,该语句将在应用程序触发目标API时,将该API调用事件写入日志文件。(2)测试生成阶段:在此阶段,GTFC将通过驱动通用测试工具来生成测试。这些测试称为常规测试。后续的兼容性测试将通过对常规测试进行选择和优化来生成。在驱动通用测试工具时,我们可以通过设置参数来控制常规测试的数量及其其长度限制。可供选择的常规测试工具有很多,我们通过对不同测试工具进行对比研究,最终选择了使用Appium来生成常规测试。Appium是基于控件进行操作的,不同于其他基于坐标的工具,比如Monkey。这一特点能够保证生成的兼容性测试可以在其他设备上进行重放。(3)兼容性测试合成阶段:在此阶段,GTFC将通过分析第二阶段的日志文件来生成兼容性测试,具体包含两个步骤:测试用例选择,测试用例优化。在第一步中,GTFC将选择合适的测试用例。如果某一日志文件包含目标API调用事件的记录(在第一阶段中提到),这意味着这一测试会触发目标API。这一测试将会被选择。在后面的步骤中,选定的测试将被处理(剪切和添加事件)作为兼容性测试。这里,一个测试指的是一个序列的操作。剪切指的是只选取从第一个操作到触发目标API的操作这一段子序列。添加是指我们会在这一操作系列后面添加操作来获取操作序列完成之后的设备状态。这里的状态指的是当前的UI界面。在此阶段之后,我们可以获得对应于两种目标API的两种类型的兼容性测试。最后我们将对这些测试进行筛选。首先,我们会去掉那些长度太短的测试。其次,我们将第一步筛选剩下的测试在用于生成测试的机器上进行测试重放,重放失败的测试将会被移除。需要注意的是,在进行测试重放时,我们会将测试重放一定次数,如果在一定次数内重放不成功,则被视为重放失败。原因是重放过程会受到网络时延和其他环境因素的影响,一次重放不成功不能说明该兼容性测试是无效的。(4)测试重放和问题检测阶段:对于测试重放,GTFC有两个设备池可重放生成的兼容性测试。一个包含不同供应商的设备。另一个包含具有不同API版本的设备。上一阶段生成的兼容性测试将在相应的设备池上重放。最后,GTFC将比较不同供应商和不同API版本的重放结果,并检测是否存在兼容性问题。对于兼容性问题检测阶段,GTFC定义了一个两级的判断标准来确定是否发生了兼容性问题。第一级判断是检测是否存在崩溃(或闪退),如果存在应用直接崩溃的现象,就认定在该设备出现了兼容性的问题。没有出现应用崩溃现象的设备将进行第二级的判断。第二级判断是检测是否存在不同的UI布局。如果存在,则说明有兼容性问题出现。为了评估GTFC的可行性,我们首先开发了20个Android应用,并植入了一系列兼容性问题。具体来说,我们让其中10个应用程序调用Android版本演化而引入的API,但是不检查当前设备的API版本。这会造成向后的兼容性问题:当这些应用运行在拥有低版本的操作系统的设备上时,它们会直接崩溃退出,原因是在这些低版本的操作系统上不存在后续版本才引入的API。另外的10个应用程序则是分别触发了那些经常被厂商所定制的硬件,照相机,蓝牙,GPS,等等。随后,我们使用了GTFC对这20个应用进行兼容性测试。我们的预期结果是对前10个应用程序,GTFC会生成触发预先插入的目标API的兼容性测试,对后10个应用程序,我们的预期是GTFC会生成触发那些与定制化硬件有关的API的测试。实验结果符合我们的预期,对这20个应用程序,GTFC都可以生成兼容性测试用例触发到相应的API。为了验证GTFC的可用性,我们使用GTFC测试了766真实的Android应用程序,GTFC检测到了8个新的兼容性问题。其中的3个兼容性问题的表现是在某些设备上崩溃,剩下的5个兼容性问题表现为该应用程序在不同的设备上的UI界面有差别。具体表现为字体,图标大小,颜色,图标间距以及弹窗的不一致。这说明GTFC可以发现真实应用程序上的兼容性问题。此外,为了验证GTFC的高效性,我们统计了生成的兼容性测试用例所包含的事件数占常规测试事件的比例。结果表明兼容性测试用例所选择的事件的数量在每个应用上平均占比为10%,即平均减少了90%的事件。我们将本论文的贡献总结如下:(1):GTFC是第一个用于自动测试Android应用程序兼容性问题的框架。现在虽然存在许多针对Android应用的测试工具,但是它们都不不是专门针对兼容性问题的。GTFC可以很好地和通用测试工具进行整合,高效测试Android应用中潜藏的兼容性问题。(2):我们详细介绍了GTFC的四个阶段的工作原理和细节,并阐述了所涉及的算法。(3):我们开发了20个应用程序用于评估GTFC。结果表明,GTFC是测试Android应用程序兼容性的有效工具。我们在真实Android应用上的实验结果也说明GTFC可以帮助发现兼容性问题。
其他文献
随着互联网的不断发展变化,基于TCP/IP体系结构上的现有互联网逐渐面临着许多问题,比如网络规模被动扩张、IP地址严重匮乏、网络速度无法适应高速网络应用的发展、网络经常因
在经济发展全球化进程中,跨国公司在国际服务贸易中发挥着重要的作用。但是跨国公司却利用延期纳税规则,在低税率地区设立子公司,并利用对子公司的控制身份将母公司的利润囤积在该子公司,以达到减轻或逃避居民国对自身征收财产税或者所得税的目的。这种方式直接导致本国的税收大量流失,为了打击这类的避税行为,我国在反避税立法中引入了受控外国公司规则。2008年颁布的《中国人民共和国企业所得税法》首次规定了受控外国公
研究目的:在小学体育教学过程中,许多体育教师只是针对小学生体能方面的提高以及身体状态的训练,并没有去深入地挖掘小学体育课程核心内在的教育价值。而本文为小学体育课堂
本文采用数值模拟的方法对电袋复合除尘器优化后的结构进行计算,计算结果显示,采用阶梯式结构,袋室间的流量偏差在±5%以内,袋室间安装阻流装置,可以消除袋区局部的高速气流,
近年来,伴随着乒乓球运动在老年人群体的兴起,白城市在全民健身的时代背景下也开展了老年业余乒乓球竞赛活动,本研究通过对其开展现状进行了分析,并提出相应建议策。促进老年
当前,畜禽养殖污染问题日渐凸显,已成为农村环境治理的一大难题。龙岩市位于福建省西部一带,是生猪养殖大市,畜禽养殖废弃物产量多,其造成的环境污染问题日益严重,同时也在一定程度上影响了该市生态文明建设,成为急需解决的问题。为积极响应国家的环保政策,提高畜禽粪污资源化利用水平,龙岩市陆续探索出台相关措施方案,以有效解决畜禽粪污资源化利用问题。龙岩通过三年的实践取得了一些成效和经验,笔者对此项工作进行了调
无人驾驶汽车是高度自动驾驶的智能汽车,其高度自主性改变了传统的人车关系,并使现行刑法陷入无人驾驶汽车交通肇事的刑事归责困境。以人车关系为依据对刑事归责主体进行类型
具有卓越营养价值和功能特性的双蛋白体系备受关注。优质动植物蛋白结合实现优势互补的双蛋白科学发展策略已被提出,但现有研究和应用集中在乳蛋白和大豆蛋白,与水产蛋白相关
五四运动使中国迎来了"社会改造"的时代。在"社会改造"的语境之中,"主义"在高度关注中"崛起",并成为"社会改造"的根本性问题。于是,时人对于"主义"的认知和解读,皆与"社会改
研究目的:为探究皮划艇运动员损伤特点及引起损伤的因素,规避运动员损伤风险,降低运动员损伤几率,本文通过对国家皮划艇运动员损伤部位、损伤频率分布及功能性动作筛查测试数据进行分析,研究皮划艇运动员损伤特点及身体动作机能存在的潜在不足,为今后合理制定运动员训练计划,降低运动员损伤风险,探究尽早发现运动损伤潜在风险方法提供参考依据。研究方法:本文选取国家队皮划艇运动员48人,对48名皮划艇运动员进行疾病损