




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
盐 城 师 范 学 院毕业设计Android应用自动化测试工具的设计与实现学生姓名 学 院 信息工程学院 专 业 软件工程 班 级 12(4) 学 号 指导教师 2016年 5 月 16 日盐城师范学院毕业设计Android应用自动化测试工具的设计与实现全套设计加扣 3012250582摘 要近几年,Android系统发展迅速,Android应用更是如雨后春笋,层出不穷,这些应用在带给人们方便的同时,却给软件质量保证带来了挑战。由于Android市场的开放性和人们对应用程序的需求,许多应用未经充分测试就投放市场,它们在功能和安全性上可能存在一些问题。同时Android设备种类繁多、硬件复杂,这无疑增加了应用测试的工作量。现有的Android测试大多是人工测试,测试速度相对较慢;而已有测试工具大部分只能针对某一方面进行自动化测试,功能体系还不够完善。本文提出了自动化性能测试方法,设计并实现了Android自动化测试工具DAT。该工具可实现Android 平台应用测试需要的多设备管理、测试任务分配、自动测试执行、测试过程管理、测试结果报告等功能。本文详细描述了DAT所使用到的Monkey工具、MonkeyRunner工具、Robotium工具以及UIAutomator工具的测试技术及测试框架;重点阐述了DAT工具的体系结构设计、各功能模块设计、工具使用方法。文章最后总结了DAT工具的优点和不足并提出了未来改进的方向。DAT工具可广泛的用于Android手机及平板电脑的应用程序测试中,可以有效地减轻测试人员的负担,有良好的应用和发展前景。【关键词】Android测试;自动化测试;多设备管理Design and Implementation of Android Automated Testing ToolAbstractIn recent years, Android has a sharp development and more and more Android applications spring up. On the one hand, it brings convenience to peoples life, on the other hand, it is a big challenge for the software quality assurance work. Because of the openness of Android market and the need for application developing, a lot of applications have been put on the market without adequate testing, this kind of applications have a high possibility of carrying functional and security problems. Besides, Android device has many categories and its construction is very complicated, this is no doubt makes testing work more tough. Existed Android test is mostly engined by labour power, test speed is very slow; And testing tool is only automated testing for a certain aspect, function system is not sound to some extent. In this thesis, we tried an automated functional method to test devices, designed and realized the Android automated test tool-DAT. It can manage more than one device, distribute testing tasks, run the tasks automatically, control the testing progress and report test results automatically. Next we will introduce the DAT in detail, include Monkey test tool, MonkeyRunner test tool, Robotium test tool and UIAutomator test tool used to assist building DAT. And it make main point that describing the construction, each function module and usage of DAT.In the end of the thesis, we will research the application prospects, strengths and weaknesses of DAT. So we can figure out the future direction to improve it.DAT tool can applied in application program testing of Android mobile phones and tablet compulters, it can reduce the burden of testers. From here we can see the DAT possibly has a good implement and development in the future. Keywords Android testing; automated testing; multi device management目 录1 绪论11.1 移动互联网时代背景11.2 移动应用测试的问题和现状21.3 本文的主要工作21.4 论文工作框架32 相关技术介绍32.1 Android系统简介32.2 Android测试的要点与技术介绍42.2.1 Android设备测试要点42.2.2 测试技术52.3 基于Android应用自动化测试支持工具52.3.1 Robotium工具52.3.2 Monkey工具62.3.3 MonkeyRunner工具72.3.4 UIAutomator工具82.4 小结93 Android应用自动化测试工具DAT的分析与设计93.1 DAT工具的需求和目标分析93.2 DAT工具的架构设计103.3 DAT工具的界面设计123.4 DAT工具的功能模块设计133.4.1 多设备管理功能133.4.2 设备信息获取功能143.4.3 实时监控功能153.4.4 DAT工具的多种测试类型163.5 小结174 Android应用自动化测试工具DAT的实现184.1 DAT的多设备管理功能的实现184.2 DAT的设备信息获取功能的实现194.3 DAT的实时监控功能的实现204.4 DAT的多种测试类型的实现214.5 小结235 系统测试与结果分析245.1 测试设计245.2 对DAT工具的系统测试245.3 测试结果分析28结 论29参考文献30致 谢311 绪论1.1 移动互联网时代背景当代,随着移动互联网的快速崛起,消费者需求的重心已经从简单的短信交流和语音沟通转变为实时获取各种形式的信息内容和娱乐服务。在此过程中,信息通信产业传统的网络连接与信息传递价值正逐渐让步于用户体验消费和功能服务价值,并由此开启了以生产、消费和分享为核心的移动互联网新时代,这改变了电信运营商长期以来主导的移动互联网产业链的局面,使得产业链中各环节的价值发生转变。图 1-1 移动互联网产业链如图1-1所示,在传统的产业模式中,运营商可以通过对用户和通信的控制来占据产业链的绝对主导权,相关应用服务企业需要通过运营商向终端客户提供服务和销售产品1。而在互联网时代,以应用服务平台为核心的产业链逐步形成,应用服务商成为整个产业链的核心环节,运营商在价值链环节中的核心地位发生扭转,应用厂商可以直接通过终端平台向终端用户提供应用服务。在移动互联网产业链下,移动智能终端的发展迅速,重要性也愈发显现。智能终端需要应用的支撑,而应用的开发又是以移动智能终端为平台,两者相辅相成。而这种链接性,促使移动互联网产业链各领域都渐渐将移动智能终端视为必争之地。移动智能终端主要包括智能手机、笔记本、平板电脑、可穿戴设备等。目前,智能手机的出货量远远超于笔记本和平板电脑,而可穿戴设备也在迅速地扩大市场,智能手机是目前应用最为广泛、销售量最多的移动互联网终端设备。智能手机市场主要由Android,iOS,WP(Windows Phone)三大平台组成,而Android平台又占据了其中半壁江山。Android手机硬件种类多,应用程序丰富,这俩大特点不仅给人们的生活带来了便利,也给应用测试带来了挑战。每一款应用在上市前都要进行充分的测试,否则可能会造成多种问题,比如功能不完善,兼容性差,甚至可能导致一些安全问题,泄露用户信息,于是应用测试就显得尤其重要。1.2 移动应用测试的问题和现状Android移动应用开发周期比较短,而测试是贯穿整个应用开发周期的,测试人员每隔几天就要对应用的当前版本进行测试;同时,一个应用的功能点可能有几百几千个,在短时间内完成测试难度大;而当应用版本更新时,大部分功能和界面设计基本未改变,这部分测试内容基本相同;再加上Android设备硬件种类繁多,没有统一的屏幕分辨率基准,应用在不同设备上的显示效果也就各不相同,兼容性问题突出2,增加了测试人员的工作量;各大厂商开发的Android设备所使用的Android版本不同,又给测试增加了难度。所以现在迫切需要能够进行移动应用自动化测试的方法。国内外业界针对不同的方向提出了一些方法并进行实现,比如UI测试、功能测试、压力测试、安全测试等。UI测试工具有Selendroid等3;功能测试工具有Robotium等4;用于压力测试的工具主要有MonkeyError! Reference source not found.,但这些工具只是针对某一方面进行测试5,自动化程度不高,不能一次满足应用测试的所有需求。1.3 本文的主要工作为了解决上述Android测试领域存在的问题,本文研究并开发了面向Android平台的移动应用自动化测试工具DAT。它可以实现Android 平台设备自动化测试需要的多种功能,包括多设备管理、设备信息获取、测试任务自动执行、测试过程监控、测试结果审阅等。在综合分析了DAT工具业务需求的基础上,工具采用了三层结构,底层由 ADB和Android SDK组成,通过ADB发送指令来控制设备执行测试任务;业务逻辑层使用了UIAutomator、Robotium、Monkey等开源框架,可以实现UI测试、功能测试以及压力测试等;表现层使用SWT编写而成,在测试过程中的流程信息则显示在界面上。本工具完成后,能达到以下目的:能够自动执行测试任务,能测试不同硬件以及分辨率的设备,能适应多种Android版本,将功能测试、压力测试和兼容性测试一起完成。希望通过这一工具,能够缓解移动应用测试领域的压力,实现Android应用测试的自动化。1.4 论文工作框架第一章 绪论。叙述了移动互联网时代背景,移动测试领域存在的问题以及本文的主要工作。第二章 相关技术介绍。对DAT工具所需的相关技术进行介绍,包括Robotium、Monkey、MonkeyRunner、UIAutomator等。第三章 Android应用自动化测试工具DAT的分析与设计。提出了工具的基本需求,并对工具总体设计方案、对工具的总体框架和主要业务流程进行了阐述。第四章 Android自动化测试工具DAT的实现。在需求分析的基础上,重点叙述了工具的核心模块的实现方法,包括多设备管理功能模块、设备信息获取功能模块、实时监控模块、多种测试类型模块。第五章 系统测试与结果分析。对DAT工具的测试和应用,并进行结果分析,证明DAT工具的可用性。结论 总结所做的工作,包括工具的功能创新和暂时不支持的功能,对工具的未来扩展进行了展望。2 相关技术介绍2.1 Android系统简介Android平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构6,主要分为四部分。Android体系结构7如图2-1所示,最底层以Linux内核工作为基础,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine。接下来是应用程序框架,开发者可以访问Android核心应用程序所使用的API框架。最上层是各种Android应用,应用由各Android公司自行开发。图2-1 Android 操作系统的体系结构这样层次分明的系统架构,各层各尽其职,保持高内聚低耦合,Android应用开发者不需要深入了解Linux内核就可以做应用开发。Android应用程序通常用Java语言编写,编译后的Java代码、包括应用程序要求的数据和资源文件,包装成一个Android包,文件后缀为 .apk,而一个 Android包中的所有代码被认为是一个应用程序,用户安装此文件即可使用该Android应用。Android应用的主要特点是:一个应用程序可以利用其他应用程序的元素(假设这些应用程序拥有权限)。例如,你的应用程序需要显示联系人列表,你可以直接调用系统的联系人列表,要编写的应用程序不用加入其他应用的代码,而是要利用其中的模块时,只需启动其他应用的相应程序块。相对的,被利用的应用程序的任何部分被请求时,系统必须能够启动该应用的进程,并实例化相应部分的对象8。2.2 Android测试的要点与技术介绍2.2.1 Android设备测试要点1)UI测试:应用界面显示是否正常;点击每个控件元素,输出的结果是否符合预期。2)功能测试:对具体功能点一一测试,确保每个点都能正确实现相应功能。3)兼容性测试:对市场上主流的设备安装应用执行测试,确保都能正常运行。4)压力测试:模拟大用户量情况下,应用是否会奔溃。5)交叉测试:对于被测试应用,该应用是否会受到其他应用响应的影响(例如收到电话),回到应用界面是否还能正常运行。6)安装卸载测试:确保应用能正确安装、卸载,且能正常运行。2.2.2 测试技术目前手机自动化测试技术大体可分为白盒测试和黑盒测试两种9。1)白盒测试。白盒测试有两种类型,一种是基于被测应用的源代码而展开的测试类型,在Android应用的开发流程中进行的单元测试就属于这种类型。还有一种主要是依靠对GUI控件元素的分析、控制以及校验来驱动测试,这种类型的测试方式与被测应用的GUI实现有较强的关联,它一般用于测试应用的功能和界面运行是否正常10Error! Reference source not found.。白盒测试的优点有测试效率高、测试执行环境稳定、UI改动产生的影响小等。但白盒测试实现跨进程测试相对困难(如在编辑短信时跳转到联系人列表中选择联系人,后续测试脚本是无法执行的,因为联系人和短信不在同一个进程中)。2)黑盒测试。黑盒测试是指调用Android对外提供的API来驱动Android设备执行测试11。自动化黑盒测试可以控制移动设备完成触屏、按键灯指令,还可以进行屏幕截图,再将截图数据与图像对比进行校验。相比于白盒测试,黑盒测试不会受操作系统内部特性的限制,可以实现跨进程测试。但由于使用了图像对比的方式做结果校验,测试脚本受UI变动的影响较大。 目前在Android上有几种比较常见的测试工具,比如Monkey工具,MonkeyRunner工具,Robotium工具以及UIAutomator工具等,这几种测试工具将在下文中详细介绍。其中Monkey工具主要用于压力测试;MonkeyRunner和Robotium工具用于功能测试,需要脚本驱动;UIAutomator主要用于UI测试,他功能强大,也可以用于功能测试。2.3 基于Android应用自动化测试支持工具2.3.1 Robotium工具Robotium是一款 Android 自动化测试框架,可以对 Android 平台的应用进行黑盒和白盒测试12。它其实是对android自带测试类Instrumentation的一个封装,方便于测试人员直接调用封装好的接口。如果知道测试应用的代码,Robotium可以进行白盒测试,测试用例也是Android应用,编写非常方便。如果无法查看源码, Robotium可以进行黑盒测试,根据应用界面上各个控件的index值来获取当前要测试的控件。图2-2 Robotium原理图图2-2为Robotium原理图。Robotium 主要用于功能测试,在进行测试时需要程序的 APK 以及其包名,测试包的 APK 及其包名。开始进行测试任务时,由ADB启动测试程序进程,从测试包的AndroidMainfest.xml文件中进行Runner初始化,同时可以确定被测试应用并启动该应用;根据测试程序的任务调用Robotium框架的类,通过设备映射测试用例的执行过程;最后收集测试结果形成报告,测试人员可以从结果中获取反馈。Robotium工具的实现过程如下:根据被测试的应用创建测试APK,其中有按照测试用例编写的函数。在测试时,由DAT工具先后安装被测试应用和测试包到Android设备上,自动执行测试包中的函数,最后再将结果返回到PC上。2.3.2 Monkey工具Monkey是 SDK 提供的一种自动化测试的手段,可以运行在模拟器里或实际Android设备中。它向系统发送伪随机的用户事件流(如点触屏、按键、手势等),实现对应用程序的压力测试13。然而,Monkey并不支持给定的事件序列,用户只能通过调整参数改变事件的数量、类型和频率等。Monkey 作为压力测试的工具,能够快速给出应用在高强度事件流下的鲁棒性。跟人工测试相比,Monkey 事件流的时间间隙更小,还能测试到一些特殊的事件顺序。图2-3 Monkey测试时序图Monkey测试时序图如图2-3所示,本工具使用Python作为编程语言编写脚本,测试时直接执行脚本中的语句即可完成测试,非常简单。2.3.3 MonkeyRunner工具MonkeyRunner 同样也是 SDK 自带的测试工具。MonkeyRunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器14。MonkeyRunner的测试类型主要有:1)多设备管理:MonkeyRunner可以同时控制多个Android设备并实施测试。2) 功能测试:MonkeyRunner可以实现应用的安装与卸载,模拟击键,保存截图等功能;可以在多台设备上运行一个或多个测试任务,任务串行,但设备之间的任务是并行的;测试任务可以测试应用的功能是否正确与完整,并可以提供截图来进行验证。MonkeyRunner工具的测试功能全面,在脚本中即可控制多台设备分别进行测试,但本工具DAT在功能界面可以选择需要测试的Android设备,所以只需将设备的序列号传入脚本中控制相应设备执行测试用例。图2-4为MonkeyRunner原理图。在主机端,MonkeyRunner测试脚本由Python语言编写,可以使用ddmlib等库,Android设备与主机之间通过USB连接;测试执行时,ADB Server 将命令通过默认端口5555发送给设备端的ADB Daemon,中间使用Socket通信,最后系统调用相应的Service完成测试任务。图2-4 MonkeyRunner原理图2.3.4 UIAutomator工具UIAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作(按键、手势等),它不需要测试人员了解应用代码的实现细节,而是利用UIAutomatorviewer(一个图形界面工具来扫描和分析应用的UI控件)抓取App页面上的控件属性,获取到这些信息无论是进行UI测试还是功能测试都是可行的。图2-5为UIAutomator工具获取控件信息的顺序图,描述了UiObject尝试获取一个控件的过程中与相关类的交互。图2-5 UIAutomator工具获取控件图UIAutomator的测试代码基于Java,结构简单、编写容易,使用Ant工具包装成jar文件,再将其导入到测试手机中进行测试,测试过程稍显繁琐。UIAutomator还能跨App测试,比如:很多App有选择联系人、打开相机拍照的功能,这就是跨App测试。但UIAutomator只支持Android SDK 16(Android 4.1)及以上版本。2.4 小结在Android测试这一领域,亟需一个能够进行应用自动化测试的工具,测试技术人员也在尝试开发和改进各类测试工具,希望能用这样的工具帮助他们更加便捷的完成繁杂的测试工作,目前也取得了一些成果,这些工具与思想为本文工具的设计与实现奠定了基础。3 Android应用自动化测试工具DAT的分析与设计本章将详细分析DAT工具的需求与目标, Android 平台设备测试需要的多设备管理、测试任务分配、自动测试执行、测试过程管理功能的实现,以及多种测试类型功能的实现,包括安装和卸载测试、功能测试、压力测试、UI测试。3.1 DAT工具的需求和目标分析Android是一种以Linux为基础的开放源码操作系统,Android平台基于BSD协议15,也就是说Android开发者可以自由更改Android源码。事实上,这是一把双刃剑,与苹果公司的IOS系统不同,谷歌并不能完全控制Android系统,他没有唯一的硬件平台,同一款应用软件在不同设备上的显示效果可能不同,带来了软件和硬件兼容性问题以及各种安全问题16。基于以上原因,应用开发人员和测试人员不得不关注应用程序是否能在各种Android硬件设备上得到支持,以及界面是否匹配各种分辨率大小的设备。 由于虚拟机存在明显的限制, Android 测试需要真机运行环境,而目前针对 Android 的功能测试、兼容性测试、耗能测试、安装卸载测试等都需要同时在多台设备上进行测试,这样的多设备测试需要大量的人力与时间。本文提出的自动化测试工具是Android设备和测试主机间的桥梁,能有效解决测试工作量大而又繁琐的问题,减少不必要的重复劳动。本工具的设计目标有以下几个方面:1)多设备管理。能够有效的管理所有连接到测试主机上的Android设备和模拟器;能够从设备上获取测试所需的各类信息,比如设备型号、Android版本号、分辨率等;能够向Android设备发送指令,驱动设备执行指令;为不同的Android设备分配不同的测试任务并执行。2)测试用例执行。能够在Android设备上执行测试主机提供的测试用例;能够保存并处理测试结果。3)实时监控系统。能够实时屏幕投影,动态的将任意设备屏幕投影到测试主机上。4)多种测试类型。能够实现安装和卸载测试,即安装兼容性测试;能够实现UI测试,测试应用界面是否显示正常;能够实现功能测试,主要是驱动测试用例执行;能够实现压力测试,检查程序的鲁棒性。3.2 DAT工具的架构设计DAT工具自上而下分为表现层、业务逻辑层、数据持久层,体系架构如图3-1。表现层是SWT编写的程序界面,通过向Android设备中安装获取信息的APP来获取信息文件,然后显示在主界面上;各种测试信息与设备列表也将在界面上呈现。业务逻辑层由四大测试框架:Robotium、MonkeyRunner、Monkey、UIAutomator以及ADB、Android SDK组成,通过ADB发送指令调用各个测试框架控制设备执行测试用例,这样的架构能够支持一系列的测试包括功能测试、压力测试、UI测试等。数据持久层使用SQLite存储Android设备传感器信息和权限信息。图 3-1 体系架构图图 3-2 数据流图在整个测试过程中,DAT工具传递的数据包括:设备信息文件、设备列表信息文件、ADB测试命令、测试结果文件、数据库中存储的信息文件,数据流图如图3-2所示。图 3-3 系统结构图本工具的系统结构如图3-3所示。他可以控制多个设备,包括手机、平板等Android移动终端,他们可以通过USB接口连接至PC,如果Android设备过多,可以通过USB HUB连接。在主机端,当有Android设备连接时,便发送ReadDeviceInfo.apk文件(获取设备信息的APP)至设备端并安装。同时设备上就会保存相关的信息文件,主机端通过下载各个设备的信息文件持久化到磁盘中,然后将其显示在主界面上;还有部分设备信息(Android设备权限、Android设备传感器)将采用ADB来获取,再与SQLite数据库中保存的完整设备信息对比,最后一起显示在界面上,便于测试员观测设备信息。DAT工具总体操作流程如图3-4所示。测试用例由测试人员根据需要测试的Android应用编写而成,而使用不同的工具进行测试时所使用的测试用例是不同的;同时,四种测试工具的测试界面也是不同的,根据各个测试工具需要的参数输入相关信息即可完成测试。在主机上运行本工具, 需要安装 Android SDK, 配置环境变量,确保ADB能够使用且版本兼容;Monkey和MonkeyRunner工具需要Python脚本作为输入, UIAutomator工具需要Ant工具包装成jar文件,主机上需要配置Python环境和Ant环境。图 3-4 总体操作流程图3.3 DAT工具的界面设计本工具的界面部分是使用SWT编写的,在整体设计中,界面与功能是分离的,当界面需要更新时,调用界面更新函数可以更新当前界面流程信息。所有的测试任务均在后台完成,并且所有的测试任务均为独立线程,这样使测试任务并行,提高了测试效率。工具的界面采用尽可能的人性化设计,直观清晰。工具的主界面如图3-5所示,分为三部分,左边部分将给出所有Android设备的列表。列表将以树的形式给出,当用户选中某一设备时,在界面的右半部分将会显示出该设备的详细信息,而在下半部分将显示该Android设备的传感器信息以及权限信息。新建测试任务可以选择四种测试类型,在测试界面中可以选择需要测试的应用程序(APK文件),然后根据不同测试类型,选择不同的测试任务。在任务界面还可以选择在哪些Android设备上进行测试。在测试开始后,用户可以看到每台设备处于的阶段,比如安装、测试中或测试结束等。用户可以随时终止测试。同时还设置了观看屏幕按钮,方便用户随时查看需要监控的设备屏幕。测试结束后,用户也可以查看结果信息用于检测该应用是否合格。图 3-5 主界面设计图3.4 DAT工具的功能模块设计在这一框架中,本工具具有多设备管理、设备信息获取、实时监控、多种测试类型四大功能。所有的模块都是独立的线程,同时,他们也都为主程序服务。DAT工具的整体功能设计如图3-6所示:图 3-6 功能模块图3.4.1 多设备管理功能当Android设备连接到主机上时,设备列表将被显示在界面上,DAT可以识别所有的Android设备,包括手机、平板与模拟器。在进行测试时,DAT可以控制多台设备执行任务。一台Android设备应当只有一个测试任务在进行中, 但多个设备之间是没有干扰的,可以同时异步执行测试任务。由ADB发送命令给各个设备控制他们执行功能测试或是压力测试,这些测试任务都是运用后台线程运行,并同时更新主界面的测试信息,程序界面监控所有设备的测试信息并实现反馈。3.4.2 设备信息获取功能工具中维护了当前最新的设备列表,该工具通过向测试设备中安装特定APP来获取指定设备的基本信息,设备信息包括以下内容:序列号:每台设备都含有一个序列号,这个序列号是唯一的,作为标识Android设备的ID号使用。型号:该Android设备的型号,比如用作测试机的小米:MI 4LTE。厂商:该设备的生厂商家,比如Xiaomi。处理器:该设备的CPU型号。安卓版本:该设备当前所使用的安卓版本。分辨率:该设备屏幕的分辨率大小。系统内存:该设备的系统RAM大小。可用内存:该设备剩余可用的RAM大小。内置存储:该设备的ROM大小。可用存储:该设备当前可用的ROM大小。剩余电量:该设备的当前电量。设备传感器:该设备上具有的全部传感器列表。设备权限:该设备上具有的全部权限。第一次启动DAT工具的时候,工具就会向已经连接到主机上的Android设备安装ReadDeviceInfo这一应用,并启动该应用,获取相应设备的信息并保存在设备内存中,然后工具就会下载信息文件将其显示在界面上。每次点击设备列表中的某一个Android设备时,该设备上安装的APP会重新启动以获取当前状态的最新信息,然后保存。设备整体信息一目了然,其中Android设备的传感器和权限都使用中文标注,更加通俗易懂,获取设备信息的流程图如图3-7所示。图3-7 设备信息获取流程图3.4.3 实时监控功能图3-8 实时监控流程图实时监控的流程图如图3-8所示。该工具在进行测试时可以随时查看连接到主机上的设备屏幕,便于观察当前设备的状况以及了解测试的情况。将设备屏幕实时的投影到主机端,而这一投影是动态的,就像放映手机屏幕一样直观,当用户点击或滑动屏幕时,投影也会动态的更新画面。这一功能可以根据用户的需求随时开启或关闭,每台设备之间互不干扰,相互独立。实时监控功能的时序图如图3-9:图3-9 实时监控功能时序图3.4.4 DAT工具的多种测试类型1)安装、卸载测试这一测试主要用于检测Android设备是否能够成功安装和卸载应用程序,包含于兼容性测试,主要检测由于Android版本不符、设备硬件不符造成的兼容性问题。安装、卸载测试已经整合到了四种测试工具中,例如在选择Robotium测试时,安装测试应用是必须的,而在测试结束后也会卸载该程序,当然卸载是可选的,若不想卸载,则不必勾选该选项。若系统存在包名相同的应用,会提示安装失败,因此在安装前会先检测是否含有同名应用,若存在,先卸载旧应用,再进行安装。最后会将安装、卸载结果反馈给用户。2)功能测试功能测试是指对应用程序的功能点一一测试,根据测试用例逐项排查,检测应用是否达到预期功能。功能测试需要脚本支持,即测试用例的驱动。测试用例需要尽可能多的覆盖设备的功能,以达到充足的测试。本工具所包含的功能测试为 Robotium 和 MonkeyRunner 两类测试。在 Robotium 测试中,需要用户给出要测试应用APK的路径以及测试包路径,Robotium的测试脚本完成后也是APK文件,所以工具会自动获取相对应的包名,然后系统会按照 Robotium 的测试脚本执行。在使用 Robotium 时需要同时选择安装测试,一个 Robotium 脚本可以应用于所有已选择的Android设备。在脚本执行完毕后,用户可以查看执行结果。在 MonkeyRunner 测试中,用户同样需要给出测试脚本,在脚本中完善相关代码即可实现多种功能,比如向它发送模拟击键,滑动屏幕,截取用户界面图片,并存储图片等。3)压力测试压力测试是指给应用高强度高频率的事件流,得到应用对于这种压力下的承受能力。压力测试用于检测应用的鲁棒性,比如在高强度的事件流下是否会崩溃等。这里使用 Monkey 测试作为压力测试的基础, Monkey 可以给出高频的伪随机事件流,并在程序遇到错误时给予用户反馈。Monkey 还可以侧重某一方面的事件流,达到有针对性的压力测试。相比于手动的测试而言,速度更快,也容易抛开定向思维,组合意想不到的事件流,还能找到手动测试所不能发现的错误。4) UI测试UI测试是指测试应用界面的功能模块的布局是否合理,整体风格是否一致,各个控件的位置是否符合用户使用习惯。其次是对应用界面中各个控件进行点击是否符合预期结果。常用的UI测试就是人工测试,由测试人员对各种类型的设备安装测试应用进行测试,非常耗时耗力。本工具使用UIAutomator编写测试用例,对每个按钮的响应情况进行测试,判断应用是否符合设计需求;对应用界面在不同环境下的显示情况进行测试。3.5 小结以上的工具设计均采用了分模块的方法,每一模块能独立的进行扩展、维护,同时更方便整体的扩展与维护。工具提供了多设备的管理功能以及自动化的测试功能,同时还能实现屏幕投影效果以及给出详尽的测试结果,达到了预期的目的和需求。4 Android应用自动化测试工具DAT的实现DAT工具的开发环境为Windows操作系统,开发工具为Eclipse,开发语言采用了Java,界面编程使用了SWT,其中用到的开源框架包括Robotium,Monkey,MonkeyRunner,UIAutomator和androidscreencast等。4.1 DAT的多设备管理功能的实现本工具可以识别任意连接到主机的Android设备,如手机、平板等。同时可以获取任意Android版本和硬件配置的设备的各种相关信息,并与这些设备进行通信、发送命令、管理设备测试执行以及接收结果。本工具的界面设计采用Java的SWT设计而成,程序的主界面在MainForm.java中。主界面如图4-1所示。图 4-1 工具主界面-设备信息点击菜单中的“New(N)”就可以新建测试任务,有四种测试类型供选择,分别对应不同的测试界面。在测试界面中,根据提示输入参数并选择要测试的设备,就可以点击“自动测试开始”按钮。测试开始后,界面会更新测试的相关流程信息,不同的Android设备测试速度不同,但设备之间没有任何干扰,并行处理;用户也可以终止测试。多设备的管理贯穿整个程序的始终。当设备连接到主机时,一个安装信息获取APP的线程将会启动,该线程会在后台进行。在测试执行过程中,也是由ADB来控制多个设备的测试过程,并将测试信息显示在界面上。4.2 DAT的设备信息获取功能的实现工具通过自己设计的APP应用(ReadDeviceInfo),将其安装到Android设备上来获取设备基础信息,并以文本形式保存在手机中,然后工具获取信息文件将其读取并在主界面显示。而设备的传感器和权限信息则是通过ADB来获取,再对这些信息加工并显示在界面上。ReadDeviceInfo这一应用很小,而且没有主界面,当其被安装到测试机上时,就会运行并读取设备信息文件,再对这些数据经过加工处理保存在设备内存中,主机需要时就会从设备中下载这些文件。每次需要读取设备信息时该应用都会运行一次并保存数据,因为这些操作很快,并且应用没有主界面,所以测试设备上看不出任何变化。设备基本信息如表4-1所示:表 4-1 设备基本信息类型变量名对应的设备信息Labelv_serial_number序列号Labelv_model型号Labelv_manufacturer厂商Labelv_processor处理器Labelv_android_version安卓版本Labelv_resolution分辨率Labelv_system_memory系统内存Labelv_available_memory可用内存Labelv_total_storage内置存储Labelv_available_storage可用存储Labelv_remaining_capacity剩余电量Listv_device_sensor设备传感器Listv_device_authority设备权限设备信息获取功能伪代码示意:Begin:DAT工具运行;checkConnectDevice(); /检测已连接设备DeviceInfo.uninstallTool(deviceName); /卸载ReadDeviceInfoDeviceInfo.installTool(deviceName); /安装ReadDeviceInfo/*运行ReadDeviceInfo,通过ADB命令:ADB s deviceName shell am start n readdeviceinfo/MainActivity;获取文件,通过ADB命令:ADB pull /sdcard/AndroidTest/infos/info.txt D:deviceName_info.txt; 将ReadDeviceInfo获取的文件导入主机*/DeviceInfo.runTool(deviceName); /解析信息文件DeviceInfo.readFile(“D:deviceName_info.txt”);/获取设备权限信息,通过ADB命令:ADB shell pm list permissions; DeviceInfo.getPermission(deviceName);/与数据库连接进行对比并对权限信息加注解DeviceInfo.getPermissionDetail(deviceName);/获取设备传感器信息,通过ADB命令:ADB shell pm list features; DeviceInfo.getFeature(deviceName);/与数据库连接进行对比并对传感器信息加注解DeviceInfo.getFeatureDetail(deviceName);DeviceInfo.Display();End.4.3 DAT的实时监控功能的实现实时监控实现了在主机上对Android设备屏幕的投影,能够实时的看到当前设备的屏幕情况。由于Android 本身没有提供类似的接口,因此这里的实时监控利用视频放映的原理高频截图,之后按照顺序一帧一帧放映。最终的实际效果会比真机略有延迟,但是仍在用户可接受范围内。截图没有使用 Android 自带的命令截图,因为在早期的Android 版本中,系统并不带有该命令。为了通用所有Android版本的设备,这里使用较为底层的方式。 Android 的屏幕显示和 Linux 相似,都是通过framebuffer机制,也就是存在帧缓冲区。只需要拷贝并解析帧缓冲区,就相当于拿到了每一时刻屏幕的映射。这一缓冲区在 Android 系统的/dev/graphics/fb0 文件中,利用ADB命令实时读取这一文件的内容,并将其中的所有帧解析并还原,就可以得到每一时刻的屏幕截图。然后将这些屏幕截图播放,就可以实现屏幕监控。在该功能实现时,借鉴了一个开源项目AndroidScreencast。实时监控功能的伪代码示意:Begin:If(device = NULL) Thread.sleep();synchronized(device) rawImage = device.getScreenshot();If(rawImage != NULL) index = 0; indexInc = rawImage.bpp 3; For y 0,rawImage.height For x 0,rawImage.widthindex += indexInc;value = rawImage.getARGB(index);If (landscape) image.setRGB(y, rawImage.width - x - 1, value);Else image.setRGB(x, y, value);End.屏幕投影实现效果如图4-2所示。图 4-2 设备屏幕投影4.4 DAT的多种测试类型的实现测试方法用于实现各类测试,是工具比较核心的部分。测试采用并行测试的方法,每一台Android设备对应的每一个测试任务都是一个新的线程,测试线程中包含了大量的测试方法,根据不同类型调用。测试功能点实现主要依赖ADB通信:1)安
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源数字化转型与发展
- 2025云南昭通昭阳区盘河镇招聘城镇公益性岗位工作人员2人笔试备考试题及答案解析
- 培养初中生的创新意识和能力
- 天然气消费市场预案
- 儿童学习心理报告
- 2025年泌尿外科疾病诊断评估答案及解析
- 2025年肌肉骨骼科学手术操作技能测验试卷答案及解析
- 化学工业精细化工预案
- 2025年妇产科疾病常见问题解答答案及解析
- 2025年四川宜宾市珙县事业单位选调13人笔试备考题库及答案详解一套
- 2020~2022年新高考全国卷Ⅰ数学试题及参考答案汇总
- 蛛网膜下腔出血的个案护理
- 李中莹 亲子关系全面技巧
- PMC部门运作流程对下达的生产计划任务合理性负责
- 软件系统运维方案
- 防止电力电力建设施工安全事故三十项重点要求考试题
- 管线打开作业工作安全分析(JSA)记录表
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 住院病人药物使用情况评价表
- OpenVPX标准和架构精选课件
- 大学物理(热学篇)课件
评论
0/150
提交评论