写点什么

Appcrawler 自动遍历工具 - 智能遍历测试与测试用例生成

  • 2025-10-10
    黑龙江
  • 本文字数:1690 字

    阅读完需:约 6 分钟

效率与成本的抉择

在软件开发过程中,测试环节直接影响产品质量和用户体验。随着系统迭代频繁、功能复杂化,企业在测试方法的选择上面临困境:手工测试灵活却效率低,自动化测试高效却前期投入大。那么,我们到底应该如何选择合适的测试方法,以兼顾质量、效率与成本呢?

手工测试与自动化测试的对比

手工测试与自动化测试的困境


图例:


🔴 高:影响大,必须关注


🟠 中:影响中等,需要注意

我们到底需要什么样的测试方法

智能遍历测试

  • 将被测系统理解为一个有限状态机,通过遍历的方式达到充分的路径覆盖

  • 通过对模型的分析实现自动断言与测试用例自动生成

  • 自动遍历测试是基于模型的测试方法的一种应用场景

基于模型的测试方法

  • 将 app 的业务行为理解为一个有向图

  • 有向图中的节点代表业务状态

  • 有向图中的路径代表达到特定状态的行为

  • 以充分遍历所有状态为目标



智能遍历测试的特点

智能遍历测试相关工具

Google Android App Crawler


Android App Crawler 中文介绍


Robo 测试


Firebase 在线的 AppCrawler 云服务




霍格沃兹测试开发学社 AppCrawler

AppCrawler 介绍
  • Appcrawler 是一个基于自动遍历的 App 爬虫工具,支持 Android 和 I0S,支持真机和模拟器。最大的特点是灵活性高,可通过配置来设定遍历的规则


appcrawler 全平台自动遍历测试工具 0&A:https://ceshiren.com/c/opensource/appcrawlerauthor:seveniruby

基于模型分享探索路径与测试用例生成


保留每一步截图


AppCrawler 报告


AppCrawler quick start
#Android时钟appcrawler --capability "appPackage=com.google.android,deskclock,appActivity=com.android.deskclock,Deskclock”
#生成默认配置文件java -jar appcrawler.jar --demo
#使用配置文件java -jar appcrawler.jar-c demo yml--capability "appPackage=com,xuegiu,android,appActivity=,view,WelcomeActivityAlias"
复制代码
核心配置
  • capability 设置:与 selenium appium 完全一致

  • testcase:用于启动 app 后的基础测试用例

  • selectedList:遍历范围设定

  • triggerActions:特定条件触发执行动作的设置

配置语法
  • testcase 的简写形态

  • xpath:对应 when 里的 xpath

  • action:对应 when 的 action

  • testcase 的完整形态

  • given:所有的先决条件

  • when:先决条件成立后的行为

  • then:断言集合



递归遍历过程
  • crawl():

  • 把当前 app 的界面 dump 为 xml 结构

  • 获取待遍历元素

  • 遍历范围 selectedList

  • 过滤黑名单 小控件 不可见控件 blackList

  • 重排控件顺序 firstList lastList

  • 跳过已点击+跳过限制点击的控件 tagLimit

  • 根据匹配的规则执行 action 中

  • crawl()

UI 界面结构获取


遍历策略

列表优先策略


深度优先策略


列表项代码逻辑基本相同

默认只遍历其中的部分数据,可大大减少遍历工作量



少部分列表项每个逻辑都不同全部遍历

对特殊的菜单与相似项提供额外的遍历额度



遍历算法的综合
  • 基于界面流程

  • 深度优先

  • 广度优先

  • 基于 U 控件属性的遍历策略

  • 深度:控件在布局中的层级

  • 列表优先:ListView RecyclerView 通常是核心数据

  • 非菜单优先:selected 属性为 true 的一般用于菜单展示

  • 实现方式:sortByAttribute:[depth, list, selected ]

智能遍历的三要素
  • 界面与控件结构识别

  • 自动化 RPA

  • 遍历算法

纯 adb 也可以完成遍历测试
  • adb shell uiautomator dump

  • adb shell screencap

  • adb input

  • 设计通用遍历算法

Web 遍历技术

Web 遍历的流程
  • 需要首先解决 page source 为 html 的问题

  • 利用 ExecuteScript 植入 js 获取页面结构

  • 转成兼容 android 的格式



测试用例生成

大前端 (Web/App)测试框架


测试用例生成价值
  • 行业目前问题

  • 行业目前哈没有统一的测试框架

  • 编写测试用例费时费力

  • 用例无法自动生成与探索

  • 解决方案

  • 打造统一测试框架

  • 提供多种测试框架的测试用例生成

  • 利用模型驱动测试方法自动扩展测试用例

App Diff 测试方法

diff 方法 diffy 思路的借鉴


Diff 测试结果


Diff 测试案例



通过 DOM 对比差异





Diff 测试报告


写在最后

  • 智能遍历测试通过模型驱动,实现对应用的高覆盖、快速执行和低维护成本,为手工测试和传统自动化测试提供了有力补充。无论是 App 还是 Web 系统,都可以通过智能遍历实现更全面的测试覆盖,降低人力成本并提升效率。

  • 如果你希望在企业内部实现私有部署,保障数据安全与可控性,同时享受智能遍历测试带来的高效回归能力,欢迎联系我们获取更多方案和技术支持。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
Appcrawler自动遍历工具-智能遍历测试与测试用例生成_测吧(北京)科技有限公司_InfoQ写作社区