appium学习总结21 - 自动遍历测试方法及常见技术介绍

1、测试过程中碰到的问题

  1. 功能问题
  • app某界面崩溃
  • app某接口报错
  • 股票详情页中特性信息字段内容丢失或者数据异常
  • 微信分享不可用
  1. 兼容性问题
  • 用户网络慢时发出请求后退出当前页面发生崩溃
  • 某些界面在 4.4 和 5.0 系统上操作体验不同
  1. 测试痛点:快速迭代中传统的基于用例维护的自动化用例使用不当
  • 没有采用合理的分层体系,尝试用UI自动化覆盖所有测试场景
  • 没有采用PageObject模式导致自动化用例维护成本太大
  • 对自动化框架掌握不够
  1. 测试痛点:测试内容太多导致手工测试无法充分覆盖
  • 界面字段正确性:比如股票相关的数据变化,十多个字段
  • 接口正确性:后续接口传输数据的变化和内容
  • 专项测试回归难度大:内存泄漏、健壮性测试、弱网等测试过程太多
  • 回归工作量大,不回归会导致漏测

2、对测试手段的改进

  1. 分层测试
  • 合理划分接口测试和UI测试的比例和业务边界
  • 自动化测试覆盖主要业务流程
  1. 手工测试手段
  • 覆盖新功能测试,探索式测试
  1. 遍历测试手段
  • code less :用例维护成本低
  • automate:尽可能的自动化覆盖回归业务

3、自动化遍历测试

3.1 monkey工具缺点

  1. 不支持业务行为定制
  2. 经常点到外部的app
  3. 经常点到注销和退出
  4. 无法灵活控制

3.2 常见遍历工具与技术

  1. google android 原生 monkey
  2. 百度 SmartMonkey
  3. 腾讯 NewMonkey
  4. Testerhome vigossjjj smart_monkey
  5. 阿里 Macaca 的 NoSmoke
  6. 头条的 zhangzhao Maxim
  7. 霍格沃兹测试学院 seveniruby AppCrawler
  8. Google 的 App Crawler

3.3 遍历测试工具Monkey、Maxim

monkey:

开源,android标准测试工具
https://developer.android.com/studio/test/monkey.html

adb shell monkey -p com.xueqiu.android 200
adb shell monkey -p com.xueqiu.android --throttle 1000 -v 200 1个事件1秒
adb shell monkey -p com.xueqiu.android --throttle 100 -v 200 1个事件100毫秒

Maxim:

未开源,改进版的monkey,提供预编译包
基于遍历规则的高性能Android Monkey,适用于真机/模拟器的APP UI压力测试
https://github.com/zhangzhao4444/Maxim
使用步骤:
1、克隆到本地:https://github.com/zhangzhao4444/Maxim.git
2、在D:\mycode\Maxim目录下执行:

Maxim - 命令行模式:

# 将2个包传到手机上
adb push framework.jar /sdcard
adb push monkey.jar /sdcard
# 在本地运行APP UI 压力测试
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 60 -v -v
# 命令含义:
1、启动jar包:CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin
2、monkey入口类,不要修改:tv.panda.test.monkey.Monkey
3、被测app包名,需要修改:com.xueqiu.android
4、运行时间:--running-minutes 60
5、遍历策略:
	--uiautomatormix:模式 Mix (基于事件概率的压力测试),直接使用底层accessibiltyserver获取界面接口 解析各控件,随机选取一个控件执行touch操作。同时与原monkey 其他操作按比例混合使用默认accessibilityserver action占比50%,其余各action分剩余的50%,accessibilityserver action占比可配置 --pct-uiautomatormix n
	--uiautomatordfs:深度遍历算法
	--uiautomatortroy:模式Troy,控件选择策略按max.xpath.selector配置的高低优先级来进行深度遍历
6、定制白名单:
	--act-whitelist-file /sdcard/awl.strings 定义白名单 
	--act-blacklist-file
7、其他参数与原始monkey一致

Maxim - UI界面:

https://www.appetizer.io/cn/

3.4Appcrawler 命令行工具:

是一个基于自动遍历的App爬虫工具,支持Android和IOS,支持真机和模拟器。最大的特点是灵活性高,可通过配置来设定遍历的规则。
安装包下载地址:https://ceshiren.com/t/topic/15801
github:https://github.com/seveniruby/AppCrawler

appium -g /tmp/appium.log --session-override
java -jar appcrawler-2.7.4-hogwarts.jar --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias,dontStopAppOnReset=true"

后续补充:

1、Maxim的使用

1、下载master代码:https://github.com/zhangzhao4444/Maxim
2、cmd到解压后的目录:E:\Maxim-master
3、记录你的app的devices名字、包名,例如:09081JEC207669和com.autel.cloud.maxifix
adb devices
adb -s 09081JEC207669 logcat | findstr Displayed
4、将包传到手机上
adb -s 09081JEC207669 push framework.jar /sdcard
adb -s 09081JEC207669 push monkey.jar /sdcard
5、配置后,在本地运行APP UI 压力测试
(1)模式 Mix (基于事件概率的压力测试):
adb -s 09081JEC207669 shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.autel.cloud.maxifix --uiautomatormix --running-minutes 60 -v -v
命令介绍:
–running-minutes 60 运行总时长
–act-whitelist-file /sdcard/awl.strings 定义白名单
–act-blacklist-file 其他参数与原始monkey一致
(2)模式 DFS - 深度遍历算法
adb -s 09081JEC207669 shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.autel.cloud.maxifix --uiautomatordfs --running-minutes 60 -v -v
(3)模式Troy - 控件选择策略按max.xpath.selector配置的高低优先级来进行深度遍历
adb -s 09081JEC207669 shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.autel.cloud.maxifix --uiautomatordfs --running-minutes 60 -v -v

2、appCrawler命令工具的使用:

1、下载jar包:https://github.com/seveniruby/AppCrawler
2、cmd窗口获取包名、活动窗口名例如:com.autel.cloud.maxifix和io.dcloud.PandoraEntryActivity
adb -s 09081JEC207669 logcat | findstr Displayed
3、java -jar appcrawler-2.7.4-hogwarts.jar --capability “appPackage=com.autel.cloud.maxifix,appActivity=io.dcloud.PandoraEntryActivity,dontStopAppOnReset=true”

3、adb自带的monkey工具:

adb -s 09081JEC207669 shell monkey -p com.autel.cloud.maxifix --throttle 1000 -v 2000

4、谷歌的App Crawler:
java -jar crawl_launcher.jar --apk-file C:\Users\X21201\Desktop\history_apk\expert\v2.3.0.12_1971_test_%E9%81%93%E9%80%9A%E6%99%BA%E6%85%A7%E6%B1%BD%E4%BF%AE.apk --android-sdk E:\android-sdk_r24.4.1-windows

如果手机上有安装包了:
java -jar crawl_launcher.jar --app-package-name com.autel.cloud.maxifix --android-sdk E:\android-sdk_r24.4.1-windows --timeout-sec 6000000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值