业务常见问题:
股票信息中字段内容丢失或者数据异常
微信分享不可用
永无网络慢时发出请求后退出当前页面发生崩溃
某些界面在4.4和5.0的系统上操作体验不同
app某界面崩溃
app某接口有报错
测试难点:
快速迭代中自动化用例吃力
变化是常态,需要拥抱变化
现有的自动糊框架稳定性和易用性不足,需要封装
要验证的内容太多
界面字段正确性,比如股票相关数据变化
接口返回内容,有规律又不规范
内存泄露、健壮性测试、弱网等需要多种不同类型的回归测试
研发测试都无法对所有功能点进行快速回归
对自动化测试的期盼
较少的自动糊代码编写和维护
稳定的执行
对众多的待验证数据进行自动验证
能够代替人自动对app的每个角落进行检查分析
结果:自动遍历+业务建模+数据自动对比
工具命名:AppCrawler
自动遍历的目标
自动遍历的改进
可控。可以定义遍历的路径
可定制。可实现自动输入,自动输入
结果分析
点击前后的截图对比
结果的数据建模
新老版本UI diff
app结构思维导图展示
monkey的缺点
monkey可以发起随机事件,主要用途是健壮性测试和移动端压力测试,一定程度可以带有遍历效果,并不适合业务测试。
常见问题:
点击不到所需功能
点到外部app
点到注销和退出
不支持复杂业务的交互
常见遍历工具与技术
❖ 自动遍历常见工具
❖ google android原生monkey
❖ 百度smartmonkey
❖ 腾讯newmonkey
❖ vigossjjj smart_monkey
❖ macaca的NoSmoke
❖ seveniruby appcrawler
❖ 这方面的理论和工具正在快速的完善
自动遍历工具
https://github.com/seveniruby/appcrawler
百度网盘下载:appcrawler-2.4.0-jar-with-dependencies.jar
-a, --app <value> app 文件地址,可以是网络地址,赋值给appium的app选项
-c, --conf <value> config 配置文件地址
--capability k1=v,k2=2... appium capability选项,这个桉树会赋值 -c 指定的配置模板参数,用于在模板配置智商的参数微调
-o,--output <value> 遍历结果的保存目录,里面存放遍历生成的截图,思维导图和日志
使用流程
app新版本提测
打包开发版本LeakCanary+Apm+Bugliy+Appetizer
打包测试版本
执行测试
自动遍历探测内存泄漏和健壮性问题
自动遍历测试版本回归大部分的流程
自动遍历老版本做diff对比分析
线上巡检
每天定时跑探测线上可能的问题
执行方式
1.运行appium
2.cmd中执行
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=com.android.thememanager,appActivity=.ThemeResourceTabActivity"
常见的capability
❖ androidCapability:
❖ deviceName: "demo"
❖ appPackage: "com.xueqiu.android"
❖ appActivity: ".view.WelcomeActivityAlias"
❖ app: ""
❖ appium: "http://127.0.0.1:4723/wd/hub"
❖ fullReset: false
❖ noReset: true
❖ automationName: uiautomator2
❖ dontStopAppOnReset: true
查看配置文件
java -jar appcrawler-2.1.3.jar --demo
在本地路径生成example.yml文件
vi 路径/example.yml
解决登录问题
触发器:
triggerActions:
需要特定次数的触发动作
通常用于处理弹窗
xpath:指定具体按钮
action:动作
times:规则的试用次数
java -jar appcrawler-2.1.3.jar --capability "appPackage=com.xiaomi.ad.demo,appActivity=.MainActivity" -c example.yml
java -jar appcrawler-2.1.3.jar --capability "appPackage=com.android.thememanager,appActivity=.ThemeResourceTabActivity"
java -jar appcrawler-2.1.3.jar --capability "appPackage=com.xiaomi.ad.demo,appActivity=.MainActivity" -c example.yml