[拉勾公开课] BAT大厂是如何做稳定性测试的

参考地址

maxim:https://github.com/zhangzhao4444/Maxim
adbkeyboard: https://github.com/senzhk/ADBKeyBoard
monkey :UI/Application Exerciser Monkey  |  Android 开发者  |  Android Developers
appcrawler:https://github.com/seveniruby/AppCrawler

monkey

  • 产生事件
  • 监控设备
    • 1、是否运行在指定的app
    • 2、app是否崩溃
    • 3、app开启的子应用发生错误

maxim

介绍

  • 对 Android Monkey 进行改进
  • 基于遍历规则
  • 高性能

用法

* adb push framework.jar /sdcard
* adb push monkey.jar /sdcard

执行命令:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v

遍历策略

  • 模式 DFS (深度遍历算法 --uiautomatordfs )
  • Mix模式 (—uiautomatormix )
  • Troy 模式(选择策略,优先级遍历)

增加配置,实现特殊场景

  • 增加白名单
  • 增加黑名单
  • 配置控件优先级,Troy模式
  • 特殊配置(比如登录操作)
  • 截图,dump.xml文件保存

增加白名单

  • 修改文件 awl.strings
    • 通过命令获取页面名称,首先打开模拟器要获取的页面,然后在命令行输入这条命令 adb shell dumpsys window |grep mCurrentFocus

课上的demo如下:
修改文件 awl.strings 内容

com.xueqiu.android.common.MainActivity
com.xueqiu.android.stockmodule.stockdetail.StockDetailActivity
  • 将文件push到手机中(/sdcard/)
  • 运行增加参数: --act-whitelist-file /sdcard/awl.strings

黑名单 ,黑区域场景

  • 场景:
    • 1、控制某个坐标范围不被点击
    • 2、屏蔽某个控件
    • 3、当控件存在某个区域内,屏蔽该区域
  • 应用:
    • 1、配置文件
    • 2、将文件推送到手机上

demo:

[
{
    "activity":"com.xueqiu.android.stockmodule.stockdetail.StockDetailActivity",
    "bounds": "[18,724][1419,1935]"
}
]

特殊配置(比如完成输入特定内容)

  • 场景:
    • 1、配置输入信息
    • 2、登录操作
  • 配置 max.xpath.actions
  • 运行

demo:
注意格式 ,只支持json格式。

[
{
        "prob":1,
        "activity":"com.xueqiu.android.common.account.LoginActivity",
        "actions":[
            {
                "xpath":"//*[@resource-id='com.xueqiu.android:id/login_account']",
                "action":"INPUTTEXT",
                "text":"18612466299",
                "throttle":500
            },
            {
                "xpath":"//*[@resource-id='com.xueqiu.android:id/login_password']",
                "action":"INPUTTEXT",
                "text":"123456",
                "throttle":500
            },
            {
                "xpath":"//*[@text='登录' and @class='android.widget.TextView']",
                "index":0,
                "action":"CLICK",
                "throttle":2000
            }
        ]
    }
]

AppCrawler

官方:https://github.com/seveniruby/AppCrawler

其它

maxim算是基于monkey的升级,那两款测试工具的除了功能上有些不同,在使用规范中,这两个有哪些不同之处呢?

maxim 是在monkey基础上进行的改造 ,增加了很多遍历 策略,可以灵活的使用这些策略,来增加我们遍历覆盖的路径 。
包括,页面白名单 ,黑名单控制,控件优先级控制,特殊页面控件控制。
还可以利用它的截图功能分析定位问题。
如果想生成测试报告更清晰一些,可以尝试使用AppCrawler。maxim 有的功能它都有, 同时还支持了版本对比,错误日志和截图,也可以配置黑名单和白名单等功能。