Android应用程序测试技术综述外文翻译资料

 2022-04-28 10:04

Android应用程序测试技术综述

Yasser Khan

目录

摘要 ......................................... 4

1. 背景介绍 .................................... 5

2. Android系统概述 ............................. 5

3. 基于模型的GUI测试.............................7

4. 符号执行 .................................... 10

5. 模型检验 .....................................11

6. 非功能性测试..................................12

6.1. 可靠性测试 .................................12

6.2. 可用性测试 ............................... 13

6.3. 安全性测试 ................................ 14

7. 结论..........................................15

参考.......................................16

摘要

如今,手机被用于各种各样的活动,从娱乐、社交到业务活动。存在不同的操作系统的不同的手机来执行这些操作活动.Android操作系统是这种场景的先驱。很多开发商都从其他平台转移到Android平台开发应用程序,因为它开源性和免费出版服务。因此,大量的Android应用程序迅速浮出水面。然而,问题是是否有效。存在测试技术以确保Android应用程序的质量。本报告介绍了一项调查。在文献中报道的Android测试技术。本报告所涵盖的技术包括基于模型的GUI测试、符号执行、模型检查、可靠性测试,可用性测试和安全测试。

1背景介绍

移动使用的广泛性,许多手机从不同的制造和运行不同。操作系统充斥着市场。今天的大部分活动都是社交网络,使用手机进行交易、娱乐等。因此,在不同的操作系统中,市场上存在着大量的移动应用程序。提供这些服务。随着这些移动服务的丰富,提出了这个问题。这些服务提供的服务质量。今天的大多数应用程序都是为Android操作系统开发。随着这些应用程序的迅速发展,问题在于是否存在足够的测试技术来确保Android的质量。本报告的目的是找到以下研究问题的答案:用于测试Android应用程序的文献中存在哪些技术?回答这个问题是通过获得知名在线数据库的论文进行的一项调查。期刊。确定了几篇文章,提出了Android的测试技术。这次调查中提出的Android测试技术包括基于模型的GUI。测试、符号执行、模型检查和非功能测试技术软件质量特性、可靠性、可用性和安全性。本报告的其余部分安排如下。第2节概述了Android系统。第3节介绍了在文献中报道的Android GUI测试技术。第4节介绍通过符号执行生成Android测试用例。5部分提出研究验证模型应用于验证Android应用程序的研究。第6节介绍了Android应用程序的非功能测试,包括软件质量。特性、可靠性、可用性和安全性。第7节比较Android测试技术并总结报告。

2Android系统概述

Android是一种基于Linux的智能手机操作系统。Android应用程序用java,是不是一种特殊的JVM虚拟机Dalvik执行。Android应用程序分发给用户通过服务谷歌Play1免费。Android的架构可以看成是一个叠层。最底层是Linux内核提供的驱动程序的显示、键盘、摄像头、WIFI、GPS、等书层包括中间件编写本地代码的C / C 。应用程序框架提供用于开发Android应用程序的API和工具。图1显示了Android系统。

图1 安卓系统的体系结构

Android应用程序的基本组件是活动、服务、广播接收器和内容提供者。活动代表应用程序的视图,并包含如文本框、按钮、菜单等GUI元素,服务代表运行在活动线程后台的长时间运行的操作。广播接收器通知系统或其他应用程序触发的事件的应用程序。内容提供程序使应用程序能够访问本地(文件和数据库)和外部资源。三组件活动、服务,广播接收器通过知道意图的消息相互调用。图2演示了Android应用程序的组件。

图2 Android应用程序的组件

3基于模型的GUI测试

基于模型的测试(MBT)是一个测试用例自动生成描述的软件测试方法(模型)的软件。MBT的好处是它使生成的测试用例数量不受限制,提高了可维护性测试套件开发商必须保持模型而不是大量的测试用例数。MBT工具不可用,和形式化建模技能的需要,限制了它的应用行业。解决MBT工具缺乏的限制,Takala等人。介绍了一种Android应用测试GUI工具tema2 MBT。特马允许测试人员在测试模型(SUT)作为一个高级的有限状态机(FSM),其中美国代表SUT的状态和转换代表使用SUT的案例。高级状态机必须提炼成一个或多个低级的有限状态机,其中转换代表Android GUI事件如窃听,刷卡,和键盘机。这两级FSM方法的优点是,高层次的FSM是可重用的,只有低层次的FSM需要重新实现一个不同的域。特马自动生成可执行的测试用例基于FSM覆盖准则如行动覆盖低级的有限状态机,状态覆盖或随机覆盖。

为了执行测试用例,GUI事件必须由工具生成。这是通过Android SDK工具实现的猴子,可以从客户端应用程序发送的GUI事件。结果测试用例是通过验证GUI的状态来确定的。的GUI对象的内容是运用层次viewer4获得Android SDK的应用。对内容进行分析,以确定测试用例的结果。在一个免费的Android应用英国广播公司新闻Widget的评价工具的有效性提出了特马。在使用TEMA自动化GUI测试用例生成和执行的第一步是FSM建模。BBS新部件的FSM建模造成7低水平的有限状态机,每个代表一个系统的观点。9更低级的FSM建立系统功能相关的部件,启动和关机。240测试用例被随意采摘转变在低级别的FSM随机生成。执行团队测试用例的结果揭示了BCC新部件中的6个bug。此外,在FSM建模阶段发现了8个bug。从一个行业从业者认为通过TEMA方法发现的漏洞是新获得的反馈,并能未经人工测试发现。这种方法最大的缺点是需要大量的建模工作。通过建模采取模型BBS新闻时间的有限状态机小部件是“几天”,作者报告。另一个缺点是测试用例执行缓慢,因为层次结构查看器需要花费5秒来提供GUI对象。图3说明了特马的基于模型的测试方法。

图三 TEMA 基于模型的测试方法

马费坦奴A2T2是Android应用等人提出了另一个MBT工具。用于快速碰撞测试。在A2T2,建模阶段是自动爬行(探索)的看法SUT。生成的模型是一个“GUI树”,其中节点表示GUI对象,而分支表示它们之间的事件驱动的转换。节点包含与GUI对象的属性和状态。从模型中自动派生出有限数量的崩溃测试用例。崩溃测试旨在通过模拟用户来揭示应用程序的失败。事件,并通过断言验证GUI对象的状态。在Android应用程序计算器上对所提出的方法进行了评估。在GUI爬行和测试用例生成之后,生成了一组17个测试用例。这个测试套件的有效性是通过执行在两突变体的原系统测量。测试套件显示了断言错误,因此它成功地检测了突变体注入的错误。这种方法的缺点是,爬虫组件只考虑用户事件,不考虑从其他应用程序或Android操作系统接收到的事件,而且,在生成的测试用例中分配给GUI对象的值是随机选择的。诸如边界值分析和等价划分等输入选择技术可以揭示随机生成无法揭示的故障。图4说明了A2T2 MBT方法。

图4 A2T2 MBT方法

Android应用程序称为Anroid Ripper伪MBT工具了。在Android Ripper坦克建模阶段是对用户隐藏。该方法在这个意义上,Android Ripper探讨了类似(RIP)GUI对象确定的程序可以使用事件的所有可能的序列。不同的是,Android Ripper创建并维护一个内存中的有限状态机模型,和测试用例的生成配置。这个有限状态机包含关于GUI对象,信息状态,它们之间的转换和事件驱动。Android Ripper可配置GUI对象,指定输入值和爬行抓取策略,终止条件(事件序列的长度)。记忆的FSM分析飞检测事件序列。对于每个事件序列,生成并执行一个测试用例。在对所有事件序列进行抓取、测试用例生成和执行结束后,生成一个报告,列出每个测试用例的结果,并观察到异常。针对Android SDK的随机GUI测试工具猴子,比较了该工具的有效性。比较了安卓应用WordPress执行;其结果表明,Android Ripper获得较高的代码覆盖率,并检测更多的故障,比猴子。Android ripper的缺点是相同的方法;事件序列是有限的用户驱动的事件只。应该指出的是,Android Ripper的测试过程中小型应用WordPress(10017行代码)花了近5个小时。图5说明了Android Ripper的MBT方法。

图5 AndroidRipper方法

符号执行是对程序中所有可执行代码路径的分析,以便确定将执行这些路径的输入值。java路径finder5(JPF)是一种多用途验证工具,它包括一个可以自动生成的符号执行扩展。对于java应用程序的测试用例。然而,JPF不能用于Android应用程序,因为Android应用程序运行在Dalvik虚拟机而不是JVM。mirzaei等人扩展JPF支持Android应用程序的测试用例生成。这个作者实现这个重新编译Android应用程序的源代码执行JVM。这并不直接,因为Android应用程序依赖于Android应用程序框架库。作者通过用模拟替换框架类来解决这个问题。模拟他们行为的类。使用JPF Android应用的另一个障碍是事实Android应用程序没有一个入口点(main方法);它们是事件驱动的,即由用户操作、其他应用程序或Android操作系统发起。作者克服了这个问题。生成应用程序处理的所有GUI事件的调用图。每个调用图的根是事件处理程序,如oncreate()等,onclick(),调用图的主要活动的oncreate()方法遍历以确定隐式链接(启动活动、设置事件处理程序),在所有调用图表之间处理OS事件等;这些链接的目标始终是调用图的根节点,即事件处理程序节点。这个组合调用图可以遍历到查找所有可能的代码执行路径及其各自的事件序列。扩展的JPF可以生成驱动程序(测试用例),通过适当的方式刺激代码路径输入值。由于可以获得无限数量的执行路径,所以作者建议迭代和增量(基于事件的数量),创建驱动程序直到实现适当的代码覆盖率为止。作者评估了他们建议的扩展JPF在实验的Android应用程序。然而,作者进行了重新编译没有评论时间、测试用例生成时间和驱动程序执行时间。建议的工具没有已提供下载。图6演示了符号执行方法扩展JPF。

图6 扩展JPF符号执行的方法

5模型检验

模型检查是对系统的FSM表示的自动分析来确定。给定属性是否保留在该FSM [ 4 ]中。的jpf-awt6,JPF的延伸,是一个模型查看java的GUI应用程序的工具,并允许等常见故障检测并发问题、死锁和运行时异常。Merwe等人。介绍了Android的jpf-awt JPF,延伸,支持模型检查Android应用程序。类似于安卓的符号执行JPF延伸在中引入,必须在JVM上重新编译Android应用程序源代码以使其启用。检查使用jpf-awt模型。这是通过建模Android的一个子集来实现的。在JPF应用开发框架。子集是足够的,因为它有助于避免模型检验的状态爆炸问题。此外,作者修改了输入模型。对jpf-awt使Android GUI用户和JPF Android系统事件的模拟。一包含Android用户和系统事件序列的脚本文件,以及GUI的输入值对象,提供用于执行在一个给定的SUT模型检查JPF Android输入。一个简单的评价了JPF Android检测应用程序故障的有效性Android计算器应用程序。据报道,JPF Android是成功的检测“除以零”和“空指针”异常和死锁,这将很难通过单元测试来检测。图7说明了Android的JPF模型检查。

图7 Android JPFM模型检验

刘等人的另一项研究。[ 7 ]扩展JPF支持检查安卓系统模型应用.5流行的Android应用程序进行扩展提出了JPF。这个评价结果表明,模型检查所需时间不超过4分钟,500MB内存。此外,建议的工具成功地显示了2的内存泄漏错误。正在测试的应用程序。该工具的缺点是它假设静态布局。屏幕上的GUI对象;在运行时GUI对象的布局的更改不被模型检查器。此外,它不能检测Android应用程序中的并发错误。然而,并发相关的问题可以由JPF Android工具提出检测。上述缺点严重限制了该工具的故障检测能力。

6非功能性测试

非功能软件测试是指测试软件的质量特性,例如可靠性、可用性、效率、可伸缩性、安全性。

6.1可靠性测试

Android 开发的最佳实践建议, 不应在主线程 (即 UI 线程 ) 上执行资源密集型任务 (磁盘 i/o、数据库操作、图像处理、网络 i/o)。然而, 经验不足的 Android 程序员可能会在 UI 线程

全文共12146字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[13061],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。