目标:提高软件质量,减少测试成本
黑盒
测试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
创建一个文件awl.strings,内容:黑名单的activity完整包名,换行隔开
adb push framework.jar /sdcard
adb push monkey.jar /sdcard
adb push max.config /sdcard
adb push max.strings /sdcard
adb push awl.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
--act-blacklist-file /sdcard/awl.strings
--uiautomatormix 混合模式(70%控件解析随机点击,其余30%按原Monkey事件概率分布)
--uiautomatordfs DFS深度遍历算法(优化版)(注 Android5不支持dfs)
5、终止条件
时间执行完毕后,结束,中途崩溃会重新启动app测试(但会记录崩溃信息)
拔掉数据线、关闭cmd窗口
白盒
基于完整测试用例,测试业务功能是否正常
espresso是安卓提供的测试框架,而Barista二次优化后,简化了开发编写用例成本
维护:开发 执行:开发/测试均可
典型的用例流程:1、创造测试环境 2、执行操作 3、断言结果
操作过程
1、编写测试用例,最好和主干代码隔离,单独一个分支维护
2、找到俩角色类,执行红框里按钮
安卓8.0以上在安装后,需要快速手动点击app图标唤醒,系统不支持自动唤醒。
3、终止条件
遇到崩溃提前退出,输出错误堆栈;或者跑完测试时间,顺利结束
黑盒、白盒测试流程
app有迭代,代码稳定后(提测、上线前),打出了release包,如果依赖测试环境,则修改代理地址
黑盒
1、安装release包,登陆测试的学生、老师账号。切换输入法为ADBKeyboard
2、在mac上输入黑盒命令,放着跑,抽空看下是否在一个模块停留过长,手动切到其他模块
白盒
1、切到QA/autoTest分支,合并开发分支,比如release_功能
2、按照白盒测试流程,放着跑(如果遇到异常,则修改测试用例以匹配新的代码)
3、测试通过后推送代码到QA/autoTest分支