【Android论文栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Android论文-基于Android的自动化测试 - 期刊论文的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
20 Computer Era No. 2 2012 基于
Android 的自动化测试 谢红霞,吴红梅 浙江大学城市学院,浙江 杭州 310015 摘 要: 以
Android 客户端的测试为研究内容,分析了
Android 自动化测试框架及其层次关系,尝试在现有测试方法的 基础上进行测试手段的优化和创新。
研究了基于 JUnit 和 instrumentaion 的
Android 自动化框架的实现技术,并利用 Hudson 进行集成,实现
Android 的自动化测试。
产品的开发实践表明 这种自动化测试方法效率高、用户体验好 对于
Android 的自动化测试研究具有一定参考价值。
关键词:测试自动化;
Android;手机;设计 中图分类号:TP306.2 文献标识码:A 文章编号: (2012) 1006-8228 02-20-03 Design and implementation of automated testing based on
Android platform Xie Hongxia Wu Hongmei (City College of Zhejiang University,Hangzhou,Zhejiang 310015,China) Abstract:This paper focuses on testing of
Android clients. The authors analyze the
Android automated testing framework and its hierarchy. The implementation is based on two automated testing framework of
Android platform: JUnit and instrumentation. The purpose of this article is to propose an optimized test method. Making use of the continuous integration features of Hudson the real sense of automated testing can be achieved. It shows that this automated testing method improves efficiency and enhances user experience in some extent. This research will have values for automated testing of
Android. Key words:automated testing;
Android;mobile phone;design0 引言 方法无法满足需求时就会对这一层进行扩展。
从测试的角度 随着新一代无线网络技术的发展,未来互联网的重心会从 讲,必须先了解开发的方法和系统内部的结构,才能使测试更传统的计算机转移到新一代移动设备上。
而随着
Android 开源 定位错误的效率更为快速。
为高效,手机系统的逐步普及,
Android 已受到手机生产厂商、移动运营商、手机应用开发商的广泛关注可以预见将会有更多基于
Android 的手机以及平板电脑出现。
这些产品出现以后,就会有很多相应的应用,对测试人员来说,这些应用的测试工作是一个重大的课题,特别是基于
Android 的自动化测试。
本文研究了基于
Android 的自动化测试技术。
1
Android 自动化框架
Android 是 Google 与开放手机联盟合作开发的全球首个完全开放的手机平台,其最大的特点就是开源、免费、智能。
采
Android 是 基 于 Linux 内 核 的 操 作 系 统 , 用 软 件 堆 层 图1
Android 系统框架图(software stack)的架构1, 。
21.1
Android 系统结构 1.2 常用
Android 测试手段
Android 系统主要分为四层,分别是应用程序层、应用程序
Android 常用的测试手段有5:框架层、系统运行库层和 Linux 核心层,如图 1 所示。
上面两层 ⑴ CTS 用来确保设备符合
Android 兼容性规范。
为 Java 程序,第三层是为 Java 运行的虚拟机及 C/C编写的程 ⑵ Monkey 用来进行压力测试。
无论是应用程序还是系序库,第四层则是 Linux 核心代码和驱动层 3,4 。
统都可以使用它来测试其负载能力。
开发中我们接触最多的是应用程序框架层,当一些现有类 ⑶ ASE 为
Android 带入脚本语言,通过脚本(如 Python) 收稿日期:2011-11-14 作者简介:谢红霞 , 浙江余姚人, (1971-) 女, 计算机软件测试, 主要研究方向: 网络存储。
计算机时代 2012 年 第 2 期 21调用
Android 的功能,从而定制一些测试。
用程序运行前初始化,与应用程序运行在同一个进程当中,监 ⑷ 用 Robotium 工具实现黑盒的自动化测试,可以在有源 听与系统的交互过程,包括 activity 的开始、结束。
还可以控制码的情况下或仅有 APK 文件的情况下对目标应用进行测试。
包括按键, 组件的一些交互事件, 拖拉等行为事件。
Robotimu 提供了模仿用户操作行为的 API,例如在某个控件上 ⑶ Nstrumentation 对 JUnit 的扩展 在单击, Text 控件中输入信息等等。
从 SDK 中我们还可以看到 junit.framework 中有以下树如 ⑸ 单 元 测 试 。
Android 整 合 了 JUnit 测 试 框 架 和 图 3 所示:Instrumentation 机制,可以针对某个应用进行单元测试。
因其功能强大,本文将在后面作重点讨论。
上述测试手段各有特色。
对于 CTS/Monkey,不需要开发,直接执行测试就可以了。
对于 ASE,可以扩充它的现有 API 用Java, Python 调 用 API 实 现 丰 富 的 测 试 功 能 。
而 用Robotium 可以模仿普通用户行为,把一些原来由测试工程师作的测试变成 Robotium 自动化实现6。
1.3
Android 现有测试方法 安 首 先 搭 建 测 试 环 境 , 装 AndroidSDK 、 (开 发 包) ADT/ 图3 junit.framework 中的测试扩展 (开发插件。
在 AndroidSDK 中已经给出了如何在系统DDMS上进行测试的方法,如图 2 所示。
图 3 中所示的是比较重要的几个扩展。
比如淘宝的客户端 首页的 Activity 是 TaoActivity,我们想测试它上面的一些功能, 就 可 以 实 现 一 个 叫 作 ActivitityInstruemtationTestCase2 TaoActivity的子类,而当这个子类运行的时候,TaoActivity 就 会 自 动 启 动 ,而 不 需 要 调 用 intent 的 方 法 。
然 后 用 拖拉等行为, Instrumentation来模拟用户的点击、 这样就实现了自 将 然后在 setup 动化测试。
从所建的工程来看, setup方法重写, 就会使得整个测试更简洁。
方法里面调用自己封装的方法, public class TEST extends ActivityInstrumentationTestCase2 private Dox dox public TEST supercom.taobao.taobao MainActivity2.class Override public void setUp throws Exception dox new DoxgetInstrumentation getActivity 图2 测试框架图 ⑴
Android 中的 JUnit public void test throws Exception JUnit 采用测试驱动开发的方式,也就是说在开发前先写好 测试代码,说明被测试的代码会被如何使用,错误处理等,然后 并 直开始写代码, 逐步测试这些代码, 到最后通过测试。
可以通过直接调用封装的 dox 方法来调用一些用户基本行AndroidSDK 中所带的 JUnit 的功能如表 2 所示。
如 拖 为 , 点 击 、 拉 等 。
下 面 的 代 码 就 是 调 用 sendKeyDown- 表2 AndroidSDK 中的 JUnit UpSync方法实现简单的返回。
在常规测试中若要调用返回 类 功能说明 必须写相当量的代码,而封装以后就可以直接调用 dox.goback junit.framework JUnit 测试框架 方法来实现) 。
7 junit.runner 实用工具类支持 JUnit 测试框架 public void goBack
android.test
Android 对 JUnit 测试框架的扩展包 sleeper.sleep
android.test.mock
Android 的一些辅助类 inst.waitForIdleSync
android.test.suitebuilder 实用工具类,支持类的测试运行 try inst.sendKeyDownUpSyncKeyEvent.KEYCODE_BACK ⑵
Android 中的 Instrumentation 类 sleeper.sleep 还 在 图 2 的 测 试 包 内 除 JUnit 以 外 , 包 含 Instrumentation catch Throwable e 类。
JUnit 测试是自动进行的,而这个自动测试的过程就是由 Instrumentation 来完成的。
Instrumentation 类似于 Windows 里 2
Android 自动化测试的设计及其实现的“钩子(hook)函数”监听系统与应用间的各种行为。
它在应 流程控制以及对时间优化分析,自动化测试流程为: 22 Computer Era No. 2 2012 ⑴ 项目启动阶段。
创建项目空间,同时参与产品需求评 ⑶ 移动设备脚本审并给出测试方面的建议。
移动设备是指安装了
Android 系统的目标机器。
将开发完 ⑵ 项目策划、需求分析阶段。
参与 UC 评审,对开发实现 成的脚本放到该目标机器内,通过远程命令启动该脚本,脚本方式进行沟通,编写测试计划。
统计结果被返回。
被执行, ⑶ 系统设计阶段。
在系统设计的同时进行测试设计。
2.2
Android 工程自动化实践 ⑷ 编码阶段。
测试部门编写测试用例并通知项目内成员 在一个团队中,如果要发布产品,就会按照发布流程规范进行评审。
进行。
主要步骤有: ⑸ 测试阶段。
测试部门执行三轮测试,冒烟测试、集成测 ①运营部门将渠道号提交给开发,要求开发部门将最新的试、回归测试手段。
客户端进行打包。
此外还需要对测试手段进行优化,除了传统的功能测试以 ②开发部门将开发完成的包提交给测试进行发布测试。
引入接口测试等各种辅助测试以从整体上优化测试,外, 使测试贯 ③测试部门通过后通知开发。
穿整个产品开发过程。
④开发部门使用渠道号进行打包。
2.1 系统架构介绍 ⑤将打包完成的包提交给运营。
Android 自动化测试架构有 3 个部分组成,包括测试管理服 ⑥运营部门分发给各个渠道。
务器、测试设计执行客户端、移动设备脚本。
运营、开发、测试的流程如图 5 所示。
图5 软件发布流程 3 结束语 本文针对
Android 新一代移动设备的测试方法进行了优化 图4 系统架构 和创新,设计开发了基于
Android 的自动化测试架构,并对目标 ⑴ 测试管理服务器 客户端进行自动化模拟及用户行为的回归。
系统的用户体验 该部分主要负责管理所有测试资源。
包括测试设计执行 非常好,提高了开发团队的工作效率。
后续将对框架进行二次客户端、测试设备、脚本及日志的管理;管理测试任务,监控测 开发,并进一步增加对系统性能部分的评估功能,提高对错误试状态,发送测试报告,保存测试信息等。
定位的准确性。
主要的执行流程包含以下几个部分: 参考文献: ①用户通过测试设计客户端远程登录到测试管理服务器。
1 戴建国郭理曹传东. JUnit 框架剖析J. 计算机与数字工程,2008. ②配置测试管理服务器中的测试任务。
8:4345135 ③执行测试任务。
测试管理服务器远程打开测试执行客 2 白凯崔冬华.基于 JUnit 自动化单元测试的研究J. 计算机与数字工 程2010.2:5254103户端,将其在模拟器或者真机上执行测试任务。
3 刘巧玲范冰冰黄兴平. 基于 Hudson 的持续集成研究和应用J.计 ④完成测试任务后将报告收集到服务器保存。
算机系统应用2010.12:151154 ⑤发送测试报告到指定用户。
4 戴建国等.持续集成在项目开发中的应用研究J.计算机工程与设 ⑥服务器主要是用 hudson 来实现以上任务,通过 hudson 来 计2009.10:25732576控制整个资源。
5 陈哲 张国平丁玉斌. 软件自动化测试方案研究J.软件导刊2007. ⑵ 测试设计执行客户端 13:3536 客户端就是搭建了
Android 开发环境的电脑。
设计客户端 6 Rogers R..
Android application development. 1st ed. ed. 2009就是编写测试用例的机器。
而执行客户端是绑定了真机或者 Sebastopol Calif.: OReilly. 318.模拟器的机器(通过有线或无线网络)。
它们的核心是使用 7 林 敬 文.
Android Visual User Interface 测 试 技 术 J. 电 子 与 电 脑 ▲
Android 自动化框架完成测试编写工作。
2011.4:6871 C E