Appcrawler-稳定性、遍历工具

AppCrawler简介
  1. 自动化探索测试, 遍历基本的界面, 了解主要界面的可用性. 比如兼容性, 基本功能
    利用遍历获取app的加载时间和性能数据,(需要借助其他的性能数据抓取工具,比如OneApm, NewRelic、GT),提供前端性能基线
  2. 利用遍历验证app的crash问题(appcrawler已支持),验证app的内存泄漏以及稳定性等功能(需要借助LeakCanary和MLeaksFinder)
  3. 增加代码覆盖率
  4. 自动化回归测试,UI diff 验证新老版本的功能差异,并识别细节的问题
  5. 抓取接口请求,辅助验证一些模块基本接口, 并辅助分析接口调用流程,为接口测试做准备
下载

项目地址:https://github.com/seveniruby/AppCrawler/tree/2.3.1
最新版本jar包: https://pan.baidu.com/s/1dE0JDCH

快速遍历
#查看帮助文档
java -jar appcrawler-2.4.0-jar-with-dependencies.jar
#运行测试(快速遍历和普通的monkey类似)
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=edu.yjyx.student,appActivity=edu.yjyx.student.module.main.ui.SplashActivity"
增加参数遍历

首先可以生成一个自带的demo文件,格式为yml

java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo

复制一份demo.yml,重命名为demo_yjyx,打开后可以编辑capability属性,和appium的属性一致

capability:
  noReset: "true"
  fullReset: "false"
  appium: "http://127.0.0.1:4723/wd/hub"
  appPackage: "edu.yjyx.student"
  appActivity: "edu.yjyx.student.module.main.ui.SplashActivity"

之后可以用配置文件运行

java -jar appcrawler-2.4.0-jar-with-dependencies.jar -c yjyx_demo.yml -a yjyx.apk
自动化支持testcase

testcase的完整形态

  • given:所有的先决条件
  • when:先决条件成立后的行为
  • then:断言集合

testcase的简写形态

  • xpath:对应when里的xpath
  • action:对应when里的action
    最简单的例子:点击两个按钮,然后进行断言
testcase:
  name: "test1"
  steps:
  - xpath: 行情
  - xpath: 龙虎榜
    then:
    - //*[contains(@text, '泸深上榜次数')]

这里表示如果检测到“行情”,默认是点击它;如果检测到“龙虎榜”,点击后会进行断言,是否存在“泸深上榜次数”这个字段。

自动遍历支持
  • selectedList:需要被遍历的元素范围
  • firstList:优先被点击
  • lastList:最后被点击
  • tagLimitMax:同祖先(类型)的元素最多被点击多少次
  • backButton:当所有元素都被点击后默认后退控件定位
  • blackList:黑名单
  • maxDepth:遍历的最大深度
触发器

triggerActions:需要特定次数的触发动作,通常用于处理弹框

  • xpath:指定具体动作
  • action:动作
  • times:规则的使用次数
triggerActions:
- xpath: 请输入手机号
  action: 15600534760  # 输入内容
  times: 1
- xpath: //*[@password='true']
  action: hys12345678
  times: 1
- xpath: button_next
  action: click
  times: 1
所有参数参考

logLevel:日志级别
saveScreen:是否截图
reportTitle:报告名字
screenshotTimeout:屏幕超时时间
currentDriver:当前设备(Android/iOS)
resultDir:结果文件夹名,给定后,将不动态命名
tagLimitMax:ios的元素tag控制
tagLimit:给tag
maxTime:最大运行时间
showCancel:应该是控制是否展示注释
capability:用于配置appium
androidCapability:Android专属配置,最后会和capability合并
iosCapability:iOS专属配置
urlWhiteList/blackList:白名单/黑名单
xpathAttributes:用来设定可以用那些种类型去定位控件
defineUrl:用来确定url的元素定位xpath 他的text会被取出当作url因素(没理解)
baseUrl:设置一个起始url和maxDepth, 用来在遍历时候指定初始状态和遍历深度
maxDepth:默认的最大深度10, 结合baseUrl可很好的控制遍历的范围
appWhiteList:app白名单,如果跳转到其他app,需要设定规则,是否允许停留在次app中
headFirst:是否是前向遍历或者后向遍历
enterWebView:是否遍历WebView控件
urlBlackList:url黑名单.用于排除某些页面
urlWhiteList:url白名单, 第一次进入了白名单的范围, 就始终在白名单中. 不然就算不在白名单中也得遍历.
上层是白名单, 当前不是白名单才需要返回
defaultBackAction:默认的返回动作(没看到例子,貌似不特指的话,是click)
backButton:给一些返回控件,用于返回动作使用
firstList:优先遍历元素
selectedList:默认遍历列表,如果不是指定的类型,而是确定控件,会分别点击控件
lastList:最后遍历的元素
blackList:排除某些控件
triggerActions:制定规则(action、xpath、times)
autoCrawl:自动抓取,看源码指定true后运行crawl(conf.maxDepth)命令
(crawl——清空堆栈 开始重新计数)应该是appcrawler的主要方法
asserts:断言,用于是否失败的判断
testcase:测试用例,看appcrawler日志,每次都是首先运行用例才会往下执行
beforeElementAction:貌似没什么人用,字面意思在元素动作之前
afterElementAction:与beforeElementAction的待遇差不多
afterUrlFinished:也是很冷门的待遇
monkeyEvents:monkey的点击数
monkeyRunTimeSeconds:monkey运行时间
given是条件 或输入 when是触发条件和动作 then是断言

你可能感兴趣的:(Appcrawler-稳定性、遍历工具)