jenkins与Monkey:Android应用的压力测试工具解析
在软件开发中,Monkey是SDK中附带的一个重要工具,主要用于进行压力测试。借助Monkey,开发人员可以结合系统日志对测试中出现的问题进行分析和解决。特别的是,Monkey产生的所有事件都是随机发生的,不包含人的主观干预。下面我们将详细介绍如何使用Monkey进行测试以及手机APP测试的相关工具。
一、标准的Monkey命令使用方式:
通过adb shell执行monkey命令,并附带相关选项和事件数量。例如,“adb shell monkey-v 500”会产生500次随机事件,作用于系统中的所有activity(主要是包含特定类别的activity,如Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY)。实际情况中会有更多的选项供选择。
二、手机APP测试工具介绍:
1. Android黑盒测试工具:包括自带的Monkey,以及Robotium和Appium等工具。这些工具主要用于黑盒的自动化测试,可以在有源码或只有APK的情况下对目标应用进行测试。
2. 白盒测试:Android SDK集成了JUnit框架,因此可以基于JUNIT框架进行安卓的白盒测试代码开发。
3. 测试方法:安卓测试方法与web测试方法有很多相似之处,只是多了一些特殊的测试场景。
4. 兼容性测试:除了利用虚拟机保证系统间的兼容性,真实的手机设备测试也是必不可少的。
三、APP测试的要点:
1. 功能测试:测试软件APP的功能点、业务逻辑以及与其他平台的交互。
2. 性能测试:包括CPU占用、响应时间等,用户对于响应时间的接受程度有一定的原则。
3. 兼容性测试:针对不同的操作系统、手机品牌和屏幕分辨率等进行测试。
4. 安装卸载更新测试:包括安装路径、覆盖安装、内存不足等情况下的安装和卸载测试。
5. 中断或崩溃测试:测试APP在特定情况下的稳定性和crash情况。
6. 安全测试与UI测试:确保APP的安全性和用户界面友好性。
四、自动化测试工具介绍:
1. WinRunner:一种企业级功能测试工具,用于检测应用程序的功能和正常运行情况。
2. Rational Robot:功能强大的自动化测试工具,可以帮助测试人员在无需高级脚本技术的情况下进行测试。
3. AdventNet QEngine:广泛应用于Web功能测试、Java应用功能测试等,支持多平台。
4. SilkTest:用于对企业级应用进行功能测试的产品,适用于Web、Java和传统C/S结构。
5. QA Run和DroidPilot:针对Android应用的自动化测试工具,可以进行脚本编辑、自动回放、结果检查等操作,提高回归测试效率。
MonkeyRunner:Android SDK的测试利器
Android SDK自带了一个强大的测试工具——MonkeyRunner。通过其提供的API和执行环境,可以运行使用Python语言编写的测试代码。MonkeyRunner能够连接设备,进行应用的安装、卸载、运行以及截屏等操作。它还能比对图片,判断特定命令执行后的屏幕是否包含预期信息,从而进行应用的测试。使用ActivityInstrumentationTestCase2、ProviderTestCase、ServiceTestCasek等类来定义测试用例,并通过InstrumentationTestRunner类执行测试。
Robotium:又一个针对Android应用的Selenium
Robotium是另一种通过InstrumentationTestRunner完成Android交互式测试的架构。它能够跨越多个activities,支持功能测试、系统测试和验收测试。Robotium兼容Activities、Dialogs、Toasts、Menus、ContextMenus以及Honeycomb,并且能与Maven和Ant集成,实现持续集成测试。
Robolectric:快速测试的新选择
Robolectric有其独特之处,它不依赖于Android提供的测试功能。通过使用shadowobjects,并在普通的工作站、服务器JVM上运行测试,避免了模拟器或设备所需的dexing、打包、部署和运行的繁琐过程。Pivotal实验室声称,使用Robolectric可以在短短的28秒内运行1047个测试。
LessPainful:多设备平台的自动化测试服务
LessPainful将Android测试推向了新的高度,提供了一种多设备平台的自动化测试服务。用户只需上传应用(.apk)和用Cucumber(一种业务相关的DSL)编写的测试文件,选择所需的设备配置,测试便会自动执行并生成报告。LessPainful支持的设备包括GarminAsus、多款HTC、LG、SamsungGalaxy、SonyXperia以及MotorolaMotodefy等。这一服务无疑为开发者带来了极大的便利,让多设备平台的自动化测试变得更加简单高效。