android自动化测试实践

目标:提高软件质量,减少测试成本

黑盒

测试app的稳定性,成本低不需要开发写用例

Maxim基于安卓原生的MonkeyTest优化,解决了monekey因为随机事件不可控,点到状态栏(点开了飞行导致没网、或者脱离了当前app)的问题,使用深度优先的算法,遍历app节点树

安卓版本支持 5、6、7、8、9

维护:不需要 执行:开发/测试均可

操作过程

1、克隆库到本地

已经clone过的,可以换成拉取命令 git pull

git clone https://github.com/zhangzhao4444/Maxim.git

如果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)

maxim.png

5、终止条件

时间执行完毕后,结束,中途崩溃会重新启动app测试(但会记录崩溃信息)

拔掉数据线、关闭cmd窗口

白盒

基于完整测试用例,测试业务功能是否正常

espresso是安卓提供的测试框架,而Barista二次优化后,简化了开发编写用例成本

维护:开发 执行:开发/测试均可

典型的用例流程:1、创造测试环境 2、执行操作 3、断言结果

操作过程

1、编写测试用例,最好和主干代码隔离,单独一个分支维护

2、找到俩角色类,执行红框里按钮

安卓8.0以上在安装后,需要快速手动点击app图标唤醒,系统不支持自动唤醒。

barista.png

3、终止条件

遇到崩溃提前退出,输出错误堆栈;或者跑完测试时间,顺利结束

黑盒、白盒测试流程

app有迭代,代码稳定后(提测、上线前),打出了release包,如果依赖测试环境,则修改代理地址
黑盒
1、安装release包,登陆测试的学生、老师账号。切换输入法为ADBKeyboard
2、在mac上输入黑盒命令,放着跑,抽空看下是否在一个模块停留过长,手动切到其他模块
白盒
1、切到QA/autoTest分支,合并开发分支,比如release_功能
2、按照白盒测试流程,放着跑(如果遇到异常,则修改测试用例以匹配新的代码)
3、测试通过后推送代码到QA/autoTest分支

你可能感兴趣的:(android自动化测试实践)