《Android 应用测试指南》——第1章,第1.5节Android测试框架

1.5 Android测试框架
Android提供了一个高级的测试框架,这个框架是JUnit的一个扩展,在标准JUnit的基础上插入了方便执行上述测试的插件。有的情况下,我们需要再装一些工具,而且集成这些工具大多情况下都很简单和直接。

Android测试环境的关键特性包括以下这些:
Android在JUnit框架基础上扩展了访问系统对象的方法;
通过模拟器框架可以测试应用和控制器;
提供了常用的、不同版本的系统对象的模拟器;
提供了执行单个用例、用例集的工具,无须模拟器;
提供测试用例、工程的管理工具,在ADT的Eclipse插件中,用命令行来控制。

1.5.1 模拟器
模拟器框架是测试框架的基础。模拟器控制被测的应用,并且允许插入桩来模拟应用的某些部件的执行。比如,你可以在应用启动之前创建模拟的Context,应用程序将会用模拟的Context来执行。

所有的应用程序跟周边环境的交互都可以通过上述方式来控制。你可以将应用程序封闭到一个十分严谨单一的条件下来得到预期的结果,强行设置某些方法的输出或者模拟ContentProvider中的常量、数据库、甚至文件系统的内容。

一个标准的Android工程都会有相应的测试工程,这个测试通常以Test开头。在Test工程中,AndriodManifest.xml中定义了使用的机器。

举个例子描述,假设你的工程配置文件如框1.5所示。

框1.5 主工程的AndriodManifest.xml配置文件

< ?xml version="1.0" encoding="utf-8"?>
< manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.aatg.sample"
android:versionCode="1"
android:versionName="1.0">
< application android:icon="@drawable/icon"
android:label="@string/app_name">
< activity android:name=".SampleActivity"
android:label="@string/app_name">
< intent-filter>
< action android:name="android.intent.action.MAIN" />
< category android:name=
"android.intent.category.LAUNCHER" />
< /intent-filter>
< /activity>
< /application>
< uses-sdk android:minSdkVersion="7" />
< /manifest>

在这个项目里,相关的测试工程配置文件AndriodManifest.xml如框1.6所示。

框1.6 测试工程的AndriodManifest.xml配置文件

< ?xml version="1.0" encoding="utf-8"?>
< manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.aatg.sample.test"
android:versionCode="1" android:versionName="1.0">
< application android:icon="@drawable/icon"
android:label="@string/app_name">
< uses-library android:name="android.test.runner" />
< /application>
< uses-sdk android:minSdkVersion="7" />
< instrumentation
android:targetPackage="com.example.aatg.sample"
android:name="android.test.InstrumentationTestRunner"
android:label="Sample Tests" />
< uses-permission android:name="
android.permission.INJECT_EVENTS" />
< /manifest>

这里的模拟器包作为主项目包,带着.test后缀。

定义模拟器的时候,会指定目标包和测试执行器,在这个情况下,默认的客户端执行器是android.test.InstrumentationTestRunner。

另外,被测应用和测试工程一样,都是apk安装的Android程序。它们都在同一个进程中,因此,能访问相同的功能特性。

当你执行一个测试应用程序的时候,行为管理器(http://developer.andriod.com/intl/de/reference/andriod/app/ActivityManager.html)利用模拟器框架来启动和控制测试执行器,然后测试执行器反过来利用模拟器工具来关闭主程序运行的实例,启动测试进程,最后,在同一个进程中启动主程序。这种方式使得各种各样的测试应用可以直接在主应用中工作。

1.5.2 测试对象
在项目开发过程中,你的测试用例必须在不同的设备上执行。从操作简单、方便,到响应速度等方面考虑,都要求最后必须在具体设备上测试,并且是在所有类型的设备上测试。

当然,有的测试用例会在本地JVM虚拟机上执行,有的用例在开发机上执行,有的在Dalvik或者活动虚拟机上执行,具体情况取决于测试用例的特点。

上述执行用例的方式都有各自的优缺点,幸运的是,你可以自由决定如何来执行你的用例。

仿真器是一个非常棒的执行平台,可能是最强大的,因为它可以让你修改测试过程中所有的参数、配置以及各种执行环境。测试最根本的目的是让你的程序能够正确处理所有场景,因此,最好在程序发布之前发现所有的问题。

性能测试需要使用真机,因为模拟仿真设备多少跟真机会有不同的地方。只有用真机才能体会到用户的真实感受。渲染、滚屏、投掷以及其他场景都需要发布之前用真机测试一次。

时间: 2024-10-02 23:25:59

《Android 应用测试指南》——第1章,第1.5节Android测试框架的相关文章

《Android应用开发与系统改造实战》——1.5节Android NDK开发环境搭建

1.5 Android NDK开发环境搭建 Android应用开发与系统改造实战 1.5.1 Android NDK简介 Android NDK是编译嵌入在Android应用中的原生代码(C或C++)的工具. Android应用运行在Dalvik虚拟机上.NDK允许开发者用原生代码(C或C++)实现应用的一部分.这将给某些应用带来好处,这种方式可重用代码,而且在某些情况下可加快运行速度. NDK提供了将C和C++源代码生成原生代码库的工具和文件:提供了将原生库嵌入apk文件的方法:提供了兼容An

《移动App测试的22条军规》——第23章,第2节“移动”测试微信App

23.2 "移动"测试微信App由于现在3G和4G网络已经普及,所以可以优先测试微信App在这两种网络环境下的表现.尤其对于4G网络,由于现在4G信号的覆盖并不全面,所以我们需要在4G信号覆盖不好,会切换到3G网络甚至是无网络的情况下进行测试.对于这种测试场景,笔者选择在地铁等具有代表性的场所进行现场测试(如图23.4所示). 在网络环境不好的场所,微信App会尝试发送几次消息,如果一段时间内还是发送不出去,就会显示发送失败 当网络恢复之后,需要验证移动App是否会执行网络断开前用户的

《Android应用开发与系统改造实战》——1.4节Android SDK开发环境配置

1.4 Android SDK开发环境配置Android应用开发与系统改造实战 1.4.1 安装已下载的软件(1)建立一个开发环境的文件夹,例如D:/delvelop文件夹. (2)解压Eclipse到一个delvelop文件夹下. (3)解压ADT到develop文件夹下. (4)解压SDK到develop文件夹下. 1.4.2 本地安装ADT(1)打开Eclipse应用程序. (2)然后进入Help→Install New Software项,如图1.17所示. 点击"Install New

《Ceph源码分析》——第3章,第1节Ceph网络通信框架

第3章Ceph网络通信本章介绍Ceph网络通信模块,这是客户端和服务器通信的底层模块,用来在客户端和服务器之间接收和发送请求.其实现功能比较清晰,是一个相对较独立的模块,理解起来比较容易,所以首先介绍它. 3.1 Ceph网络通信框架一个分布式存储系统需要一个稳定的底层网络通信模块,用于各节点之间的互联互通.对于一个网络通信系统,要求如下:高性能.性能评价的两个指标:带宽和延迟.稳定可靠.数据不丢包,在网络中断时,实现重连等异常处理.网络通信模块的实现在源代码src/msg的目录下,其首先定义了

《Android应用开发与系统改造实战》——1.2节Android开发系统环境要求

1.2 Android开发系统环境要求Android应用开发与系统改造实战 1.2.1 操作系统配置在你的计算机上具备以下其中的一个条件方能正常地开发Android程序. Windows XP(32-bit).Windows Vista(32- or 64-bit)或Windows 7(32- or 64-bit).Mac OS X 10.5.8或later(x86 only).Linux(Ubuntu Linux,Lucid Lynx).GNU C 库(glibc)2.11或者最新的.Ubun

《Android应用开发与系统改造实战》——1.3节Android开发所需软件的下载

1.3 Android开发所需软件的下载Android应用开发与系统改造实战 1.3.1 Elcipse目前,Android官方已经给出的最新ADT集成开发环境的插件已经开始支持Eclipse的3.6(Helios)版本,也可以使用Eclipse3.4或者3.5版本.Eclipse的下载网址:http://www.eclipse.org/downloads/. 1.3.2 ADTADT是Eclipse的一个插件,全称为Android Development Tools.是Google开发用来给A

Android开发权威指南(第2版)新书发布(免费下载随书光盘内容,包括Android源代码)

光盘内容下载 光盘内容下载(新浪微盘) Android4.2.2(CM ROM)源代码下载 如果需要虚拟环境的,这里提供了ubuntu10.04 LTS版本,不需要CPU支持虚拟化(VirtualBox版[VirtualBox-4.2.10-84105]) Ubuntu10.04 VirtualBox版 分卷1 分卷2 分卷3 分卷4 分卷5 分卷6   用户名:root 秘密:12345678   <Android开发权威指南(第二版)>是畅销书<Android开发权威指南>的升

Android RoboGuice2使用指南(4) 综合示例Astroboy

前面介绍了RogoGuice2.0的基本用法,其它使用可以参见RoboGuice1.1开发 指南,2.0中提供了对Fragment,View(自定义View中使用注入)的支持,本博 客不再一一介绍. 本例使用的是RoboGuice 开发包中的简单示例 Astroboy(阿童木).涉及的使用RoboGuice2.0 的一些常用方法. 本例 下载(Eclipse项目). 下面对项目中RoboGuice2的使用进行解释.因为 本例没使用自定义绑定,所以无需使用res/values/roboguice.

《Android 应用测试指南》——第2章,第2.1节Junit

第2章 Android软件测试Android 应用测试指南既然我们已经了解了测试的基本概念及其重要性,那么现在是时候付诸于实践了. 在本章,我们将要讲述:在Android平台上测试:单元测试和Junit用法:创建一个Android测试工程:测试执行.我们会创建一个简单的Android主程序和与之对应的测试工程项目.主工程基本上是一个空项目,因为我们将重点看测试部分.以我个人经验,建议没有任何Android测试经验的同学好好学习下本章.如果你有过Android工程的经验,并且用过相关的测试技术,那

《Android 应用测试指南》——第2章,第2.6节测试执行

2.6 测试执行执行测试用例的方法有很多种,我们这里一个个地分析. 另外,我们在前面的章节中提到的注释,可以让测试用例按照组或者种类执行,这种方式要按实际需求来执行. 2.6.1 在Eclipse里执行所有的测试用例如果你采用了Elicpse作为开发环境,从Eclipse中执行测试用例可能是最简便的方式了.这种方式会执行包中所有的用例. 选择测试工程,然后单击 Run As -> Andriod Junit Test. 如果没有找到合适的设备或者模拟器,那么会自动启动一个.然后,测试用例开始执行