Android用户界面自动化测试辅助工具的开发与应用-软件工程专业毕业论文

东南大学硕士学位论文

Android用户界面自动化测试辅助工具的开

发与应用

摘要

迄今为止在Android平台上,已经存在许多自动化测试框架,但是这些框架大多只关注

底层功能的实现,在使用便捷上关注比较少,而且这些框架并没有哪一款能够完美地适用于

任何项目。所以在使用过程中常常会遇到一些问题,比如因为框架本身的应用限制,导致有

些自动化用例不能被实现。除了这个问题,在实际项目中还存在维护难、定位难以及复用性

差等问题。

针对以上问题,本文对当前测试框架和方法进行分析,最终实现了一种三层结构的自动

化测试辅助工具。接着通过研究传统测试用例的设计过程,同时结合面向对象的思想,提出

了用例对象的概念,基于此概念设计了用例类、步骤列表类以及步骤类。本文还研究了当前

测试框架的使用方法,找出了它们在使用上的相似点,基于这些相似点,实现了混合使用测

试框架的功能。本文还通过研究当前测试框架接口的使用规律,设计了一个公共的动作方法库和一个独立的控件信息存储部件。最后本文还研究了常用日志获取工具的日志监控原理,实现了一套包含日志存储以及分析功能的日志监控方案。

最后再结合实际案例,展示该辅助工具的使用方法以及在实际项目中所起到的作用。关键词:Android;用户界面自动化测试;用例类;日志监控。

Abstract

So协in the Android platform,there are many automated testing tools.However,most ot these tools only focus on the realization of the underlying function,the use of convenient

some attention iS

relatively smalL and no one can be perfect for any proj ect.So often encounter problems in the process of using them,for example,because of the application of the tool itself

limits,resulting in some automated

use cases cannot be achieved.In addition to this problem,there are problems in the actual proj ect maintenance is dimcult.dimcult positioning and poor reusability.

In view of the above problems,the current testing framework and methods are analyzed,and a three 1ayer structure of automated testing tools iS realized.Then,by studying the design process of the traditional test case and combining with the idea of objoct oriented,the concept of the use case object is proposed.The method of using the current testing tool is studied,and the function of a hybrid testing t001iS realized.Summarize the usage of the current t001 interface,and then design a common action method base and a separate control information storage unit.In addition,the log monitoring principle of common log acquisition tool iS studied.and a set of log monitoring scheme including storage and analysis function is designed.

Finally,the use way of auxiliary t001 and the advantage during an actual proj ect wlu be

this paper.

display in

Keywords:Android;User interface automated testing;Use case class;Log monitoring.

II

目录

Android用户界面自动化测试辅助工具的开发与应用I .摘要..I Abstract ...............................II 目录III 第1章绪论.5 1.1课题背景5

1.2研究目的和意义5

1.3国内外相关研究6

1.4主要内容与研究基础.7

1.5论文结构8第2章Android测试框架介绍与选择9 2.1概述..9

2.2测试框架与执行方式分类9

2.3测试框架选择.10

2.4框架使用介绍11

2.5框架特点对比..17

2.6本章小结..17第3章工具需求分析 1 8 3.1用例设计分析..18

3.2控件信息分析.19

3.3动作库分析.20

3.4运行日志分析一21

3.5需求点汇总.22

3.6本章小结..22第4章工具设计23 4.1工具框架设计..23

4.2用例构造器设计..23

4.3控件信息库设计..25

4.4动作库设计..27

4.5获取日志方案设计..27

4.6本章小结.30第5章工具实现 3 1 5.1工具开发环境搭建..31

5.2测试框架运行环境..32

5.3动作库实现..33

5.4用例构造器实现37

5.5日志方案实现.40

5.6工具内容展示.41

5.7本章小结42第6章工具的应用43 6.1工具使用步骤说明一43

6.2用例复制应用实例..44

III

6.3工具混合应用实例一46 6.4获取日志分析实例一49 6.5行为日志查看实例一5 1 6.6本章小结..52第7章结束语53 7.1论文工作总结.53 7.2工作展望.53致谢..54参考文献55

IV

第1章绪论

第1章绪论

1.1课题背景

自2007年到现在,Android系统已经经历了七年时间。在这七年里,Android系统的发

展非常迅猛,基于它的手机也越来越具备竞争力,据中国报告大厅发布的(2014.2020年中国智能手

机行业竞争格局分析及投资可行性报告》显示,2014年Android智能手机的市场份额为81.5%而iOS的份额为14.8%E1|。在这种明显的市场利益驱动下,越来越多的手机生产

商和软件科技公司纷纷开始投入Android系统相关软件的研究与开发

中。

随着Android队伍的不断壮大,Android系统提供的功能越来越完善,用户对手机服

务的期望越来越高,在这种强大的粘性下,第三方Android应用的个数成几何趋势增

涨。据

2014年的统计,谷歌Play Store的应用数量达到了143万【2J,这样的数字对于用户来说是

乐见的,但是对于服务提供商和软件公司来说,这是庞大的竞争压力,想要在这样巨大的数

字中脱颖而出,就需要不断的给用户带来新奇的功能和优质的体验。功能的不断变化,意味

着版本需要不断的更新,不断的更新,就意味着需要不断的测试,想要在短期内做到充分的

测试,自动化测试必然是首选。

想要展开自动化测试工作,首要的条件就是找到一款合适的自动化测试框架,找到一种和产品项目契合度高的框架非常重要,这将影响到后续自动化项目工作是否能够平滑开展。至今为止业界已经存在大量的Android自动化测试工具和框架,但是想要找到完全适合自己

项目的自动化测试工具是非常困难的,最终不得已只能通过开源的测试框架,比如Robotium[31、MonkeyRunner[4】以及Ulautomator[5j等测试框架,在有限的项目周期内,简单编

写一些针对当前项目的用例脚本来验证基本功能,然而本人在实际工作中发现这些自动化测

试脚本中存在大量的冗余代码,而且后期的维护工作量也很大,更重要的是这些脚本在其他

项目中基本不可复用。

如果想要解决上文的问题,就需要找到一种使用更加便捷,功能服务更加贴近实际项目需求的

工具。本文将在已有自动化测试框架基础上,并结合本人多年的Android自动化测试经验,

来研究一种Android用户界面自动化测试辅助工具。

1.2研究目的和意义

随着Android自动化测试技术的发展,自动化测试框架变得越来越多,当需要建立自动

化工程的时候,首要的工作就是调研自动化工具的可用性,对于一个测试新人来说,这将是

一个不小的工作量。调研结果出来以后,对比完适用性结果,就可以选择一款框架开始进行

自动化测试了。根据本人的测试经验,如果只是测试单个Android应用,就可以选择Robotiu

m。如果偏向于兼容性测试,可以选择比较流行的云测试服务平台。如果涉及到跨应用,就

可以选择MonkeyRunner、Ulautomator等工具,这些工具基本可以满足普通的测试要求,但

是因为这些工具本身存在一些使用上的局限性,导致无法满足测试需求,比如MonkeyRunn

el"对于被测系统的版本没有限制,但是它提供的查找控件的方法比较少,而UIautomator提

供的方法虽然多,但是它要求被测系统的API(APh Application Programming Interface应用程

序接口[61)版本是16以上,且当控件信息不完整时,也不能像MonkeyRunner一样使用ID查

询。所以做跨应用测试时,如果只选择单一工具,肯定会出现一些不好解决的问题。

那么如果可以将MonkeyRunner和UIautomator混合使用在同一条用例中,就可以起到互

东南大学硕士学位论文

的效果,这就是本论文的研究目的之一。除了工具混合使用的研究目的外还有以下目的以及意义:(1)根据MonkeyRunner和Ulautomator框架中API的实际使用情况,研究生成一

个公共

方法库,以此减少编写自动化用例的代码量,且提高自动化成果的复用性能力。

(2)提供一套规范的调用公共方法库的方法,.和提供一套简便的用例生成方法,以此提

高用例编写效率以及用例代码的可读性。

(3)集成一套系统日志的获取以及存储方案,降低用例执行时,问题目志丢失的概率,

以及提高日志分析的便利性。

1.3国内外相关研究

目前为止,国内外已经存在一些非常专业的针对Android自动化测试的开源框架和工具,Robotium、MonkeyRunner、Ulautomator、Appium等等‘71。同样,也存在一些付费的测试工

具,PerfectoMobile、TestDroid、还有一些云测试服务平台。这些工具各有优点,各有擅长。

下面简单介绍几种工作中常用的国内外Android自动化测试工具。

1.3.1国外研究状况随着Android系统的不断更新,对Android自动化测试框架的需求越来越

强,同时对它

的能力要求也越来越高,所以在这种需求驱动下涌现出了一些广受认可的自动化测试框架,

比如针对单元测试的Robotium测试框架,采用录制脚本方式的MonkeyRunner测试框架,

还有随Android4.1版本一同推出的Ulautomator测试框架。

Robotium是一款在Android平台自动化测试中比较流行的测试工具,它既可以用于黑盒

测试也可以用于白盒测试,在功能上它除了能够提供了模拟各种手势,包括点击、长按、滑

动等模拟操作,还在JUNIT单元测试框架基础上提供了断言机制的API。但是它只能用于单一应用的测试,不支持跨应用的测试。

MonkeyRunner是Google公司开发的包含在SDK中的一款自动化测试工具,它可以通

过Python脚本语言调用该工具提供的API来实现自动化测试脚本,但是它只提供了一种以

ID遍历控件的方法。它还提供了一个录制回放的功能,可以将所有操作全部录制下来,然后

再进行回放测试。该功能的好处是操作方便快捷,但是同样受限于手机的分辨率和性能。

Ulautomator也是Google公司开发的Android自动化测试工具,也包含于SDK中,它提

供了更多的遍历控件方法以及更完备的模拟动作,还具备了判断控件是否存在的API,基于

它基本可以满足基本的自动化测试。但是它要求被测Android系统API是在16以上的版

本。

Appium是基于苹果的UIAutomation以及谷歌的UiAutomator框架开发的一个开源、跨平台的自动化测试工具,用于黑盒测试。在使用语言上,因为是C/S架构的,所以只要某种

语言有http客户端的API,就可以通过这种语言编写测试代码。

1.3.2国内研究状况在已有的Android自动化测试框架基础上,国内也出现了一些比较优秀的云测试平台。

例如Testin云测试平刽81。它是一个基于真实终端设备环境,基于自动化测试技术的云端服

务测试平台。Testin在云端部署了许多真实的测试终端,并开放这些终端给用户进行测试,

6

第1章绪论

用户只需向该平台提交自己需要测试的App应用,然后选择测试规定的网络和机型,.最后

提交测试脚本,便可进行App应用的自动化测试。一旦开始执行脚本,就无须人工干预,测

试结束后,可以提供含错误信息的测试日志,还能给出uI截图、内存/CPU/启动时间等在

内的标准信息测试报告。

云测试工具除了提供比较完善的兼容性测试方案外,还提供了功能的测试,通过上传基

于Robotium编写好的脚本,就可以完成指定的功能测试。

随着云测试技术的发展,现在除了执行普通应用的自动化测试,还能支持手机游戏的自

动化测试,从普通的功能测试领域推进到复杂的性能测试领域,所以云测试平台已经越来越

受到广大测试工作者的喜爱。

1.4主要内容与研究基础

1.4.1主要内容本论文研究的工具不同于其它的Android自动化测试框架与工具,其它框架

与工具都是

为了更好的实现自动化的功能,比如查找控件方法、提升执行速率等,而本课题的研究目标

是解决自动化测试项目在创建以及维护时遇到的问题。本课题将使用下面五点作为主要研究

内容。该五点内容如下:

(1)研究如何将工具混合使用在同一条脚本用例中。

(2)如何生成一个公共的方法库。(3)如何提供一个

规范的公共方法库调用方法。(4)如何增加用例的编

写效率。 (5)如何可靠的获取系统日志并存储。

1.4.2研究基础

本论文研究的辅助工具中涉及到公共方法库的建立以及日志的获取的方法。对于公共方

法库的建立方法,本人将参考工作中使用过的测试工具TMSS中动作库建立方法,就是将

完成一个测试用例中所有涉及到的动作细化并整理成一个个具有独立动作意义的AW(Action

Wordt刿),而这些AW还可以供其他测试用例调用。

关于日志获取的方法,在日常工作中,一般都是使用DDMS工具去查看Android系统日

志,它是一款界面工具,它包含很多功能,而查看日志只是该工具的功能之一,如果能够将

它获取日志的功能从它的实现中剥离出来,加以修改并移植到本论文研究工具中,就可以使

本论文工具具备良好的获取日志功能。

相关文档
最新文档