Android自动化测试(AndroidUnitTest)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/johnWcheung/article/details/53326997

广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunnerjmeter,或自己所写的一段程序,用于生成1100个测试数据。狭义上来讲,通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。


一般来说,自动化测试分为三个层级:单元测试、接口测试和UI测试,这三层成一个金字塔形状分布。最底层是单元测试,接口测试在中间,UI测试在最上层。下面通过一个表格来对比着三层测试。




测试手段1:CTS


CTS测试基于Android Instrumentation测试,其又基于JUnit测试。说白了,CTS就是一堆单元测试用例。

具体测试方法与流程参见Android CTS 测试认证汇总(机顶盒)


测试手段2:Monkey


猴子测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等。看手机多长时间会出异常。

可以设置让Monkey只测试某个应用,从而辅助应用程序的开发。

对我们的帮助:

1)应用程序的开发者可以测试自己应用的鲁棒性。

2)设备制造商可以使用猴子对自己的测试施行压力测试。看设备能坚持多久。



测试手段3:ASE(脚本)或者命令行脚本

ASE意思为Android脚本环境,即我们可以通过脚本(比如Python)调用Android的功能,从而定制一些测试。比如打电话,发短信,浏览网页等。



测试手段4:编写测试demo

写一个测试应用,对一些测试用例进行功能测试。



关于单元测试

在计算机编程中,单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。

单元测试的三个步骤:

  • setup:即新建出待测试的类、设置一些前提条件等
  • 执行动作:即调用被测类的被测方法,并获取返回结果
  • 验证结果:验证获取的结果跟预期的结果是一样的
Android中的单元测试分为两种,Local Unit Tests 和 Instrumented Tests,前者运行在JVM,后者需要运行在Android设备。

基本单元测试框架

Java单元测试框架:Junit、Mockito、Powermockito等;

Android:Robolectric、AndroidJUnitRunner、Espresso等。


Local Unit Tests

Local Unit Tests运行在本地JVM,不需要安装APP,所以运行时间很快。也因此不能依赖Android的API,所以大多数时候需要用Mock的形式来做替换

配置

  • 测试代码目录:module-name/src/test/java
  • 一般使用到的测试框架

    • JUnit4
    • Mockito
  1. Android Studio提供了一个快速创建测试类的方法。只需在编辑器内右键点击类的声明,选择Go to > Test,然后"Create a new test…"
  2. 在打开的对话窗口中,选择JUnit4和"setUp/@Before",同时为所有的函数生成测试方法。
  3. 这样,就会在test文件夹内生成测试类框架,在框架内填入测试方法即可。

Instrumented Tests

Instrumented Unit tests是需要运行再Android设备上的(物理/虚拟),通常我们使用Mock的方式不能很好解决对Android的API的依赖的这个问题,而使用这种测试方式可以依赖Android的API,使用Android提供的Instrumentation系统,将单元测试代码运行在模拟器或者是真机上,但很多情况来说,我们还是会需要和Mockito一起使用的。

配置

  • 测试代码目录:module-name/src/androidTests/java/
  • 一般使用到的测试框架

    • AndroidJUnitRunner : JUnit 4-compatible test runner for Android
    • Espresso :UI testing framework; suitable for functional UI testing within an app
    • UI Automator :UI testing framework; suitable for cross-app functional UI testing across system and installed apps








展开阅读全文

没有更多推荐了,返回首页