本篇文章已授权为微信公众号 code小生 发布
最近,手头上的项目基本开发完成,优化也做的差不多了,本以为可以安心准备上线。然而老板却反映说测试人员发现 App 总会出现一些莫名的 bug.
bug 来了,那就解决呗。但是这 bug 又贼迷,偶尔出来一个调戏一下你,就问你服不服。所以为了让 App 中的 bug 尽可能的减少,只能暂时苦逼地转行测试。这几天花了不少时间和精力,好好研究了下 Android 平台的自动化测试,在此总结一下。
Android 平台的自动化测试可以从两个方向入手
- 腾讯优测云测试平台
- 华为开发者联盟
- 贯众云测试
- Testin 云测
测试的内容包括:
上面介绍了 Android 自动化测试的两个方向以及测试的具体内容,接下来谈下他们之间的区别和优缺点。
Espresso 是 Google 针对 Android 平台开源的一款 Android 自动化测试框架,主要是用于 Android App UI 自动化测试。
在这里简单说下 UI 自动化测试:我们作为 App 的使用者,要让机器模拟我们的测试过程,那么就需要针对我们肉眼看到的那些界面,那些按钮,也就是 UI 组件进行相应的操作以及对结果正确性的验证。
比如说,作为用户我们并不关心某个网络请求返回值的具体数据是否正确,我们关心的是在界面上看到我们想要看到的结果。因此,做 UI 自动化测试用例的时候,一个通用的思路就是:找到某个元素,做一些操作,检查结果,把自己当成用户,只关注我能看到的东西。
Espresso 毕竟是 Google 自己出的,优点还是很多的
更多 Espresso 的例子请戳:https://github.com/vgrec/EspressoExamples
UI Automator 所运行的 JUnit 测试用例是有特殊权限的,这意味着测试用例可以 跨越不同的进程,它提供了五种不同的类给开发人员使用:
com.android.uiautomator.core.UiCollection;
com.android.uiautomator.core.UiDevice;
com.android.uiautomator.core.UiObject;
com.android.uiautomator.core.UiScrollable;
com.android.uiautomator.core.UiSelector
不过,比较遗憾的是,UI Automator 只能工作在 API 16 或更高级别的 Android 设备上,而且也没有办法直接访问 Android 对象。
Appium 是一款「移动」的自动化测试框架,牛逼的地方在于支持 iOS 和 Android 原生和混生的移动 Web 应用程序。它内部使用的 JSONWireProtocol 通过 Selenium 的 WebDriver,来与 iOS 和 Android 应用进行交互。通过 UI Automator 和 Seledroid 支持 Android,通过 UI Automation 支持 iOS。上面这些话,看看就好了,反正我也看不懂。
Appium 最大的优点在于你几乎可以用任意一种编程语言(例如,Java、Objective-C、JavaScript、PHP、Ruby)来编写 Appium 脚本而不必选择工具,兼容最重要的pigtail(Android 和 iOS)而不必安装和配置设备适应测试等等。
拥有超过1000款测试终端,机型数量庞大,机子比较全。但仅支持 Android 系统,暂时不支持 iOS 系统。
不过,该平台的收费还是蛮高的,一分钟一块钱,而且最低充值 100 元。
优点:免费
缺点:只能测试华为的机子
测试主要包括:
- 安装、启动、注册登录、遍历、卸载
- Crash、ANR、UI、功能异常
- 提供问题上下截图及异常截图
Testin 是国内较早涉足云测试领域的公司之一。Testin 在云端部署了 300 多款 1000 多部测试终端,终端种类及数量都比较全面。
该平台也是收费的,具体的收费标准,并没有在官网上显示出来,只说了有需要服务的请联系客服。