51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1727|回复: 2
打印 上一主题 下一主题

AppCrawler 自动遍历工具 2.0 版本发布

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-11 16:23:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 悠悠小仙仙 于 2017-7-11 16:25 编辑

自动遍历的价值
  • 自动化探索测试, 遍历基本的界面, 了解主要界面的可用性. 比如兼容性, 基本功能
  • 利用遍历获取app的加载时间和性能数据, 需要借助其他的性能数据抓取工具,比如OneApm, NewRelic
  • 利用遍历验证app的内存泄漏以及稳定性等功能, 需要借助LeakCanary和MLeaksFinder
  • 自动化回归测试. UI diff 验证新老版本的功能差异. 并识别细节的问题
  • 抓取接口请求 辅助验证一些模块基本接口, 并辅助分析接口调用流程. 为接口测试做准备
截图

使用介绍

----------------AppCrawler 2.0.0app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器帮助文档: 移动测试技术交流。感谢: 晓光 泉龙 杨榕 恒温 mikezhou yaming116感谢提供商业支持的优秀公司: Keep--------------------------------Usage: appcrawler [options]  -a, --app <value>        Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项  -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信息  --help示例appcrawler -a xueqiu.apkappcrawler -a xueqiu.apk --capability noReset=trueappcrawler -c conf/xueqiu.json -p android -o result/appcrawler -c xueqiu.json --capability udid=[你的udid] -a Snowball.appappcrawler -c xueqiu.json -a Snowball.app -u 4730appcrawler -c xueqiu.json -a Snowball.app -u#启动已经安装过的appappcrawler --capability appPackage=com.xueqiu.android,appActivity=.welcomeActivity#从已经结束的结果中重新生成报告appcrawler --report result/#新老版本对比appcrawler --candidate result/ --master pre/ --report ./#自动生成Page Object代码模板文件appcrawler --template PageObjectDemo.ssp --output result/#根据wda的inspector生成测试用例代码appcrawler --template PageObjectDemo.ssp -u http://localhost:8100

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2017-7-11 16:29:35 | 只看该作者
重构和不兼容改动

重构了一半多的代码. 提升了性能, 改进测试用例生成的方式. 更快更稳定.
所有的action字段都支持简单的动作和完整的scala编程语句, 样例如下

  • click 点击
  • tap 长按
  • driver.swipe(0.8, 0.8, 0.2, 0.2) 滑动
  • back 后退
  • backApp 从其他的app回退到当前app
  • 非以上内容都认为是输入文本

以前的是MiniAppium.xxx, 新版本修改为driver.xxx, 这个driver就是selenium的driver

Appium失败重试

如果appium崩溃了(主要是uiautomator的崩溃), appcrawler会自动重启appium继续测试.
这样需要修改你的遍历配置, 设置为 dontStopAppOnReset: true

androidCapability:  deviceName: "192.168.0.102:5555"  appPackage: "com.gotokeep.keep"  appActivity: ".activity.SplashActivity"  dontStopAppOnReset: true  app: ""  appium: "http://127.0.0.1:4723/wd/hub"  automationName: uiautomator2diff报告改进

进行了更好的分类管理. 根据页面进行分类.

目前可以根据老版本的运行结果来断言新版本的老功能是否符合预期.
分为结果对比和数据对比, 降噪还没实现.

支持macaca

之前硬编码了使用老的uiautomator模式, 这次放开了automationName, 可以支持uiautomator2和macaca了
在automationName处可以指定macaca, 其他配置跟appium一样.

androidCapability:  deviceName: "192.168.0.102:5555"  appPackage: "com.gotokeep.keep"  appActivity: ".activity.SplashActivity"  app: ""  appium: "http://127.0.0.1:4723/wd/hub"#  automationName: uiautomator2  automationName: macaca  reuse: 3全局断言

用来判断app有没有崩溃, 或者点击后有没有特殊的需要注意的控件

asserts:- given:  - //*  when: []  then:  - //*[@package="com.gotokeep.keep"]- given:  - //*[@text="发送朋友圈"]  when: []  then:  - //*[@package="com.tencent.mm"]

比如设定了断言所有的预期结果里面, 包名都必须是keep, 那么遇到拍照或者发朋友圈, qq登录的地方, 就会提示错误.

可以通过断言预期结果的基本内容.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2017-7-11 16:31:30 | 只看该作者
yaml风格的自动化测试用例原型

完整的自动化用例支持在2.1.0版本再放出来. 目前的只是demo, 只是用来辅助自动遍历的.

testcase:  name: demo1  steps:  - when:      xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]      action: driver.swipe(0.5, 0.8, 0.5, 0.2)    then: []  - when:      xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]      action: driver.swipe(0.5, 0.2, 0.5, 0.8)    then: []  - when:      xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]      action: tap    then:    - //*[contains(@text, "置顶")]  - when:      xpath: //*[contains(@text, '置顶')]      action: click    then:    - //*[contains(@text, "添加训练")]    - //*[contains(@text, "故意错误")]ChangeLog和下版本的计划

目前为2.0.0版本
2.1.0会未发布的下个版本计划

# 2.1.0 [TODO]独立的yaml格式的自动化测试用例支持  支持从历史数据中寻找最优点击路径  支持web  支持游戏app遍历  # 2.0.0支持macaca[完成]  失败重试[完成]  支持简单的测试用例[完成]  架构重新设计[完成] 新老版本对比报告改进[完成]  # 1.9.0支持遍历断言[完成]  支持历史对比断言[完成]  修正不支持uiautomator2的问题[完成]  支持yaml自动化测试用例[完成]  action支持长按[完成]  重构用例生成方式[完成]  
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-28 07:24 , Processed in 0.075295 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表