我们需要继承AthrunTestCase,指定package和想要开始的Activity 。每一个方法作为一个测试用例,后以Android JUnit Test的方式运行测试用例。这里需要注意的一点,要先在设备上安装被测试的应用。如果这个应用是签名过的,那么我们的测试应用也需要用一样的签名。

  从代码可以看出,寻找组件的接口很简单,可以通过组件的id、value等属性来寻找。如果组件没有相对独立的属性,也可以通过该组件的父节点一层层来寻找。Android SDK提供的hierarchyviewer工具将模拟器当前Activity的 UI组件以树状形式展现,可以清晰的看到每个组件的详细属性。

  验证一条测试用例是否通过的方式也有很多种,可以验证Activity的跳转、组件的展示,当然还有一些可能需要通过截屏。图1是通过验证执行用例后Activity的跳转来判断测试用例是否通过。

  以上我们完成了一条测试用例的自动化。显然基于Athrun的框架,使得我们的自动化用例编写方便了很多,成本也大大降低了。

  为了完成各种自动化测试用例,我们有必要对Athrun有更详细的了解,以便二次开发所需接口。感兴趣的朋友可以通过http://code.taobao.org/svn/athrun/trunk/android/来下载工具源代码。

  iOS

  工具

  在介绍iOS自动化之前,首先要介绍下Xcode 所提供的 instruments工具。该工具是一款用来动态跟踪和分析OS X和iOS代码的实用工具。这是一个灵活而强大的工具,它让你可以跟踪一个或多个进程,并检查收集的数据。这样,Instruments可以帮你更好的理解应用程序和操作系统的行为。

  instruments除了提供自动化工具automation外,还有诸如leaks、allocations等用来检测和分析程序性能的工具。对于iOS测试和开发而言,追踪和定位缺陷,instruments是非常实用的。图2是instruments的主界面:

图2 instruments 主界面

  关于instruments所提供的各种工具的使用,感兴趣的朋友可以在iOS Developer Library中了解。

  接下来要介绍一下UI Automation,它可以用在真实设备或模拟器来执行自动化测试。

  使用JavaScript编写测试用例,调用UI Automation的接口模拟用户交互操作。该工具会将自动化运行的日志信息返回到instruments 信息栏。

  实例

  在Xcode通过 profile的方式来启动instruments。或者直接双击启动instruments,在instruments主界面中选择设备上被测试的应用程序。然后在Automation Script栏编写自动化脚本。使用iOS设备需要注意的一点是确保Developer profile设置是Release模式。图3是有道云笔记iPhone版登录模块的自动化用例:

 

图3 iOS 自动化用例