Android 自动化测试框架
一、Monkey
是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。
二、MonkeyRunner
是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本(jython(java语言))用Python(Python(C语言))来写,对测试人员来说要求较高,有比较大的学习成本;使用By id/name/text方法操控(hierarchyviewer),执行速度太慢。典型应用:安装,卸载,启动Activity,点击X,Y坐标,发送按键事件,drag,截屏等。
三、UIAutomator
是Android提供的自动化测试框架,基本上支持所有的Android事件操作。是用来做UI测试的,也就是普通的手工测试,点击每个控件元素看看
Android 自动化测试框架是开发过程中确保应用稳定性和功能完整性的关键工具。本文将详细介绍几个常用的Android自动化测试框架,包括Monkey、MonkeyRunner、UIAutomator、Robotium和Appium。
1. **Monkey**
Monkey是Android SDK自带的一个命令行工具,主要用于压力测试。它通过向系统发送随机的用户事件流(如按键、触摸、手势等)来测试应用程序的稳定性。Monkey的测试数据和事件是随机生成的,因此无法自定义,这限制了它的灵活性和针对性。
2. **MonkeyRunner**
MonkeyRunner相对于Monkey更加强大,它提供了一个API工具包,允许编写测试脚本来自定义事件和数据。MonkeyRunner的脚本使用Jython(Python的Java版本)编写,这可能对测试人员的学习成本较高。此外,使用ById、ByName或ByText等方式操控界面元素可能会导致执行速度较慢。MonkeyRunner可用于安装、卸载、启动Activity、点击坐标、发送按键事件等操作。
3. **UIAutomator**
UIAutomator是Android提供的专门用于UI测试的框架,支持大部分Android事件操作。它可以测试UI元素的功能,无需测试人员深入理解代码实现。UIAutomatorViewer工具可以帮助获取应用的控件属性。UIAutomator适用于SDK 16(Android 4.1)及更高版本,不支持Hybrid App和WebApp,且无法跨App测试。
4. **Robotium**
Robotium是一个基于Instrumentation的黑盒自动化测试框架,特别适合于Android应用的测试。它提供了丰富的API来模拟用户手势、查找和断言控件。Robotium支持对Activity、Dialog、Toast、Menu等进行操作,并且可以处理WebView。尽管它不能跨App测试,但对Native app和Hybrid app有很好的支持。Robotium的脚本语言为Java,通常与Eclipse集成。
5. **Appium**
Appium是一个开源的移动自动化测试框架,支持Android、iOS和Firefox OS,可在多种操作系统上运行。Appium的优势在于它不需要重新编译应用,且支持多种编程语言。对于Android,Appium在4.2及以上版本使用UiAutomator,2.3到4.1版本使用Instrumentation,集成了两大框架的优点。然而,Windows用户无法直接测试iOS应用,必须在Mac上进行。
总结:
Monkey和MonkeyRunner主要用于基础的压力和功能测试,而UIAutomator和Robotium则提供更高级的UI测试能力。Appium因其跨平台和多语言支持成为全面的自动化测试解决方案。在选择测试框架时,应根据具体需求,如测试目标、平台兼容性和团队技能等因素进行考虑。对于仅关注Android应用的测试,Robotium可能是更好的选择,而涉及多平台的测试场景,Appium则更加合适。