近年来,虽然Android在智能手机市场份额上远远高于IOS,但是谷歌的应用商店Play Store里的应用数量却不及App Store。而2014年,谷歌Play Store的Android应用数量达到143万[2],超过App Store的121万,从而在应用数量上也越居第一。Android应用在数量上迅猛地增长,不仅如此,随着人们需求的提高,和开发人员水平与数量的提高,Android应用在逻辑复杂度上也呈爆炸性增长。但是,这种增长也带了负面效应,众多水平参差不齐的开发人员涌入Android市场,且由于Android的开放性造成设备款式繁多,导致Android应用产品质量参差不齐。根据调查显示,超过半数的用户,在使用Android应用时遇到如程序崩溃,死机,闪退等问题,甚至有许多应用从一开始便无法启动。而用户对于这些经常崩溃的程序,多数采取直接放弃的手段。值得重视的是,如果由于程序漏洞导致用户重要信息泄露,则会造成严重后果。因此,保证Android应用程序的健壮性对于开发者和用户都有着重大意义。文献综述
通过测试,应用程序可以充分提高健壮性。而且测试也可以解决由Android的开放性带来的设备款式繁多带来的兼容性问题。但是市场竞争使得产品发布周期紧缩,因此Android应用对自动化测试有着强烈的需求。
Android测试主要被分为两种类型:动作输入和外部数据输入。动作输入用于测试用户在屏幕上的动作,如点击,拖拉等。外部数据输入测试则是测试一些能够接收来自外部的诸如文件,图片,音频,视频等数据的应用组件,观察并监控这些复杂的多媒体输入数据是否会引起程序的崩溃。
1。2 国内外研究现状
2 相关技术
2。1 Android及其应用概述
早在1995年之前,人们就产生了在诸如智能手机这样的便携式终端上运行操作系统的想法。最早可以被认为是运行了操作系统的终端是索尼公司的MagicLink,其搭载了苹果公司研发的MagicCap操作系统,具备了通信搜索,可以收发邮件和搜索信息等功能,引起了当时人们的广泛关注。在MagicCap的研发工程师中有一名叫做Andy Rubin的年轻人,创立了Android公司,该公司于2005年被Google公司收购,而Android这个名字则作为操作系统的名称得以保留。来:自[优.尔]论,文-网www.youerw.com +QQ752018766-
图2。1 Android系统分层图
Android操作系统基于Linux内核,是一款开放源代码的操作系统。如图2。1所示,Android系统的架构十分清晰,从下到上分别为Linux内核层,Android本地框架层,应用程序框架层,应用程序层[7]。不同的Android版本可能会有不同的Linux内核对应版本,比如经典的Android 4。4的核心为标准的Linux 3。10内核。内核层提供一些系统级的服务,如显示驱动,键盘驱动,能源管理等等,是Android系统的核心。Android本地框架层可以分为两个部分,一是各种库,该部分由C语言实现,一般以系统中间件的形式提供,与移动设备平台的应用密切相关。另一部分是Android运行环境,包括持久层库和Dalvik虚拟机器。Dalvik虚拟机器执行dex文件,是基于寄存器的虚拟机,可以根据硬件实现较好的优化。应用程序框架层为应用层的开发者提供API,比如各种UI设计的控件,如Views、Text Box、Button等。应用程序层上分布各种应用,由Java语言编写,包含各种资源文件。
Java程序和相关资源在经过编译后,形成APK包。APK包就是Andorid应用的存在形式[8]。通常Android应用包含五大组件[9]:Activity、Intent、Service、Broadcast Receive、Content Provider。Activity用于表现屏幕界面,因此当有外部数据输入时,由Activity对该数据进行响应。在对应用进行数据传输时,需要构造一个Intent对象,Intent描述了程序的意图,即程序想要做什么。而Intent的相关类IntentFilter则描述一个Activity能处理什么样的意图。即IntentFilter是一个Intent的过滤器,将不符合Activity处理意图的Intent过滤掉。为了能够正确地接收和处理数据,每一个能够接收外部输入数据的Activity必定配置了一个IntentFilter。我们可以通过分析IntentFilter来构造携带外部输入数据的Intent,以达到将外部输入数据输入到能够处理它的Actitity中去接受处理的目的 Android应用外部数据输入测试用例生成方法研究(2):http://www.youerw.com/jisuanji/lunwen_93880.html