1.在浏览器中的console输入:帮助定位
> $x('xpath表达式')
> $('css表达式')
2.driver
> chrome driver: https://npm.taobao.org/mirrors/chromedriver
> firefox:https://github.com/mozilla/geckdriver/realeases/tag/v0.24.0
3.简易的页面性能
> raw_json = webdriver.execute_script("return JSON.stringify(window.performance.timing)"),返回的内容,比requests多,有些事它拿不到的
4.remote server
> 下载selenium server,启动
> 通过webdriver.remote()来连接到服务器
5.UI自动化测试策略
> 核心业务自动化
> 接口测试是否可以保证,可以,ui测试可以适当弱化
> 涉及用户交互的重要功能,仍然能需要使用UI自动化测试保证
6.测试痛点
> 快速迭代中自动化用例吃力
没有采用po模式,导致自动化用例维护成本大
对自动化框架掌握程度不够
> 测试内容太多导致手工测试无法充分覆盖
界面字段正确性
接口正确性:后端接口传输数据的变化和内容
专项测试回归难度大:内存泄漏,健壮性测试,弱网等 测试过程太多
回归工作量大,不回归又会漏测
改进:
> 自动化:覆盖主要业务的right path,缩小规模尽量降低维护成本
> 手工:覆盖新功能测试,探索性测试
> 遍历测试手段:code less:用例维护成本降到最低
automate:尽可能的自动化覆盖回归业务
自动遍历需求:可控,可定制
结果分析:点击前后截图对比,结果的数据建模,新老版本的diff,app结构思维导图展示
monkey:https://developer.android.com/studio/test/monkey
adb shell monkey -p com.ebo.home/com.ebo.home.Launcher --throttle 1000 --pct-touch 50 -v 500
> throttel,每个时间的间隔时间
> pct-touch,touch时间的占比
> -v 500,500次事件
> -s 指定种子值
monkeyrunner,功能较弱,使用python代码中调用java,不建议使用
Maxim:
高速uiautomator控件解析算法的Android Monkey, 每秒10-15个Action Event。实现快速DFS算法的Android Monkey , 每秒 5个Action Event。
git clone https://github.com/zhangzhao4444/Maxim.git
cd Maxim
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.p.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 5 -v -v
AppCrawler:
Usage: appcrawler [options]
-a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-e, --encoding <value> set encoding, such as UTF-8 GBK
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appium的url地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-r, --report <value> 输出html和xml报告
--template <value> 输出代码模板
--master <value> master的diff.yml文件地址
--candidate <value> candidate环境的diff.yml文件
--diff 执行diff对比
-vv, --verbose 是否展示更多debug信息
--demo 生成demo配置文件学习使用方法
--help
示例
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json -p android -o result/
appcrawler -c xueqiu.json --capability udid=[你的udid] -a Snowball.app
appcrawler -c xueqiu