目标:提高软件质量,减少测试成本
黑盒
测试app的稳定性,成本低不需要开发写用例
Maxim基于安卓原生的MonkeyTest优化,解决了monekey因为随机事件不可控,点到状态栏(点开了飞行导致没网、或者脱离了当前app)的问题,使用深度优先的算法,遍历app节点树
安卓版本支持 5、6、7、8、9
维护:不需要 执行:开发/测试均可
操作过程
1、克隆库到本地
已经clone过的,可以换成拉取命令 git pull
如果pull有更新,记得执行第二步把framework.jar、monkey.jar推到手机上
2、初始化操作,把配置信息传到手机上
一台机子初始化过后,可跳过此步骤
2.1 切到库目录,把测试框架传到手机上
以下framework.jar、monkey.jar是第一步根目录里的
创建一个文件 max.config,内容:max.randomPickFromStringList = true
创建一个文件 max.strings,内容:11223344
adb push framework.jar /sdcard
adb push monkey.jar /sdcard
adb push max.config /sdcard
adb push max.strings /sdcard
2.2 屏蔽掉系统输入法
系统输入法会吞噬大部分monkey操作,导致在一个输入框内循环,跳不出去,因此我们要安装特定的输入法
ADBKeyboard.apk在仓库的test目录内有,安装到手机上
adb install ADBKeyboard.apk
在系统的输入法中选择ADBKeyboard.apk
3、安装线上包,开启所有权限,登陆测试账号
开启 “开发者选项” -> "USB调试(安全设置) 允许通过usb调试修改权限或模拟点击"
4、插上设备,执行
替换包名即可;--running-minutes执行时间单位分钟,–throttle指令间隔,单位毫秒
打开cmd窗口,输入以下命令:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p 你要替换的包名 --uiautomatordfs --running-minutes 60 --throttle 500
可选模式
--uiautomatormix 混合模式(70%控件解析随机点击,其余30%按原Monkey事件概率分布)
--uiautomatordfs DFS深度遍历算法(优化版)(注 Android5不支持dfs)
5、终止条件
时间执行完毕后,结束,中途崩溃会重新启动app测试(但会记录崩溃信息)
拔掉数据线、关闭cmd窗口
白盒
基于完整测试用例,测试业务功能是否正常
espresso是安卓提供的测试框架,而Barista二次优化后,简化了开发编写用例成本
维护:开发 执行:开发/测试均可
典型的用例流程:1、创造测试环境 2、执行操作 3、断言结果
操作过程
1、编写测试用例,最好和主干代码隔离,单独一个分支维护
2、找到俩角色类,执行红框里按钮
安卓8.0以上在安装后,需要快速手动点击app图标唤醒,系统不支持自动唤醒。
barista.png3、终止条件
遇到崩溃提前退出,输出错误堆栈;或者跑完测试时间,顺利结束
网友评论