自动化工具 谷歌官方发布应用遍历工具 App Crawler

cmlanche · 2019年09月17日 · 最后由 super_shuo 回复于 2024年04月22日 · 11262 次阅读

我已经体验过三四个 app 的遍历,很棒,遍历完成后,会给出奔溃、性能等问题结果,并且有每一次操作的截图以及相关日志。目前发现的缺点有两个,第一是需要重签名(讲道理不需要的),第二是不开源,仅仅提供了相关包,并且关键得 apk 包已混淆。

因为需要 fq,不太方便访问,所以我自己把原文翻译下来,把原包下载下来,方便大家阅读下载。

App Crawler 下载链接

链接: https://pan.baidu.com/s/1-1ceIEH5r3nulIQz3_4sPQ 提取码: c2r7 复制这段内容后打开百度网盘手机 App,操作更方便哦

原文链接

https://developer.android.com/training/testing/crawler

原文翻译

App Crawler

使用 App Crawler 工具,可以不需要人为编写任何代码就可以自动测试你的应用。

App Crawler 跟随着被测应用一起运行,自动探索使用什么操作(比如点击、滑动等)来遍历被测应用。当无法使用更多的操作、应用奔溃或者达到遍历时长了,App Crawler 会自动停止。

使用 App Crawler 进行测试很容易,因为不需要编写或维护代码。此外,您可以在各种设备上运行它,以查找崩溃、视觉问题或性能问题。通常,使用基于云的服务 (如 Firebase Test Lab) 来更容易、更快地测试屏幕大小和硬件配置的多种组合是一个好主意。

目标受众

App Crawler 的目标用户是那些希望以最少配置确保应用基本功能的开发人员。除了纯黑盒测试之外,还可以配置爬虫程序来提供特定的输入,比如登录凭证或深度链接。

Getting Started

在开始之前,请确保您拥有最新版本的 Android SDK。这是 Android Studio 自带的。如果您安装了一个独立的 Android SDK,请确保它包含最新的构建工具和平台工具。

然后,下载 App Crawler.(文章开头下载)

接下来,要么启动模拟器,要么使用 USB 电缆连接物理设备。运行以下命令确认设备已连接:

adb devices

要调用 Crawler 程序,首先将存档解压缩到您选择的目录。从该目录中,使用以下命令调用 Crawler 程序:

java -jar crawl_launcher.jar --apk-file path/to/my/app.apk --android-sdk path/to/my/android/sdk

配置选项

Option Description
--android-sdk path Specifies the path to your Android SDK.(必要参数)
--apk-file file Specifies the path to your app APK, which App Crawler then installs and crawls.(如果--app-package-name 未指定,则是必要参数)
--app-package-name name Specifies the package name of your app. Use this option when your app is already installed on the device and no re-installation is required.(如果apk-file未指定,则是必要参数)
--key-store path Specifies the path to the keystore that signs your app and crawler APKs. Use this option when your app requires a specific signature to function properly.
--key-store-password password Specifies the password for the keystore you provided for --key-store option.(如果--key-store指定了,则是必要参数)
--timeout-sec timeout 遍历的超时时间,如果未指定,默认值是 60s
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 60 条回复 时间 点赞

先收藏了,回头研究一下跟思寒那个有什么区别?


为啥没有跑呢

我这边跑起来了 但是好像和 monkey 区别不是很大 能解答一下吗

原理不一样,这个是基于 uiautomator 的,monkey 不基于控件,就是随机点,随心看起来都是点来点去,本质不一样

yiwang #1 回复

思寒是基于 appium 的,有依赖性,这个不需要,压缩包里面的东西就可以跑了

cmlanche #4 回复

我尝试了一下 感觉遍历的深度也不是很深 ,好像也没有逻辑性

比 monkey 好的就是没有无效的点击操作 其他的应该差不多

谷歌官方的测试实验室都是用的它,逻辑性可能你还没测出来,另外深度貌似可以设置,文档中并没直接说

挺好,可以增加遍历方案的对比,哪个好用用哪个

在路上 #9 回复

帮对比下效果😅 不开源不太符合 Google 风格

cmlanche #8 回复

可以调 执行速度吗? 试了下速度有点慢

你是怎么跑起来的?我跑的没有反应,一直卡着

韩将 #12 回复

--apk-file 似乎有 bug 没搞明白,跑的话用--app-package-name name
另外带上 --ui-automator-mode

哈哈,下个月开始

匿名 #15 · 2019年09月18日

能不能遍历 webview?

应该可以,反编译看了里面集成了 espresso,也重签名了,条件都够了

韩将 #12 回复

可能需要签名吧

cmlanche #16 回复

我昨天后来又跑了几遍 好像每一次路径都是一样的 主要是不能遍历完全 我遍历的是谷歌自己的 setting

第一次使用 vivo 的手机每次启动都需要安装那两个 apk(需要点击继续安装)还挺麻烦的,然后也没跑起来,后面换了个 pixel 的手机跑了一会就停了,感觉也没遍历完。

不知道你们执行语句都是怎么写的呢?

调试时遇到了这个问题,有没有知道这是什么原因导致的呢?一执行命令,adb 就断开了

TD #19 回复

默认遍历时间 60s,你设置长一点

Spaceyhyh #20 回复

adb devices 有设备吗

我也发现的,不是随机的

cmlanche #23 回复

有设备呀,一执行 crawler 就断开了,我用 atx u2 都没有问题的。还有,百度网盘提供的这个是不是被修改过的,不是谷歌原装的?

Spaceyhyh #25 回复

原装,没修改,不信可以自己下

cmlanche #26 回复


所以,我就感觉很奇怪,为什么运行后的日志打印里面,有段打印跟 atx server2 的 qq 群号刚好一样

反编译看了看 迷迷糊糊 等大佬解析


跑不起来啊

我也跑不起来,是签名还是咋的,不知道下面这段 log 有没有啥影响
Line 5740: 09-18 16:42:59.693 D/ApplicationLifecycleMonitorImpl(15410): running callback: androidx.test.tools.crawler.SignaturePatchingCallback@78fd00e
Line 5742: 09-18 16:42:59.693 E/ApplicationLifecycleMonitorImpl(15410): Callback threw exception! (callback: androidx.test.tools.crawler.SignaturePatchingCallback@78fd00e stage: PRE_ON_CREATE)
Line 5746: 09-18 16:42:59.693 E/ApplicationLifecycleMonitorImpl(15410): at androidx.test.tools.crawler.SignaturePatchingCallback.readSignatures(SignaturePatchingCallback.java:22)
Line 5747: 09-18 16:42:59.693 E/ApplicationLifecycleMonitorImpl(15410): at androidx.test.tools.crawler.SignaturePatchingCallback.enableSignaturePatching(SignaturePatchingCallback.java:5)
Line 5748: 09-18 16:42:59.693 E/ApplicationLifecycleMonitorImpl(15410): at androidx.test.tools.crawler.SignaturePatchingCallback.onApplicationLifecycleChanged(SignaturePatchingCallback.java:3)
Line 5760: 09-18 16:42:59.693 D/ApplicationLifecycleMonitorImpl(15410): running callback: androidx.test.tools.crawler.SignaturePatchingCallback@78fd00e
Line 5761: 09-18 16:42:59.693 D/ApplicationLifecycleMonitorImpl(15410): callback completes: androidx.test.tools.crawler.SignaturePatchingCallback@78fd00e

wangyuc #31 回复

应用被加固了吧,加固了无法重签的

确实是如此 遍历的深度不太行

34楼 已删除

请问下最终您是怎么跑起来的,我这边命令没有报错,但是设备就是没有运行起来。请问方便分享下您的命令吗


这是什么原因呢?大神帮忙看下

大神,帮忙看下我的怎么跑不起来?

SugarJ2019 #37 回复

sdk 路径不对啊

跑起来了。再找找原因。

@zhangzhao_lenovo --apk-file 是将 apk 的包名写到文件里面,后面跟文件的路径,和 monkey 测试一个道理

cmlanche #22 回复

怎么修改执行时间?不是超时时间

TD #41 回复

超时时间就是遍历执行时间

cmlanche #42 回复

这样的呀,我执行的时候发现总是点击一个 tab 页的文字一直点不过去,然后我以为是找不到元素(层级太深)超时了,感觉跑不起来。

cmlanche #32 回复

我用的 --ui-automator-mode 按道理不会重签名吧。

wangyuc #44 回复

我也觉得不需要,你测一下看看

跑不起来。。😂
Unable to find instrumentation info for: ComponentInfo{androidx.test.tools.crawler/androidx.test.tools.crawler.CrawlMonitor}

cmlanche #42 回复

--timeout-sec 超时时间控制不了执行时间设置--timeout-sec 1000 以后还是执行 60s

cmlanche #42 回复

timeout 都是 60s 噢, 怎么改

官方的网站没法进去,需要科学上网吗?

cmlanche #51 回复

非常非常感谢

SugarJ2019 #39 回复

请问这个问题怎么解决的啊?

原生的不考虑业务场景很难受啊,难道国外的 APP 不需要登录的~~

好东西,先收藏再试验

仅楼主可见

百度网盘访问不了,还可以其他链接下载么

我也出现了这个情况 这是怎么回事

仅楼主可见
仅楼主可见
笑哼 专栏文章:App 自动遍历测试_UICrawler 中提及了此贴 12月29日 10:25

今天试了下字节的 fastbot,覆盖率不高,因为开源版是阉割的。谷歌的 App Crawler 在多个设备无法启动,要不就像华为,启动无反应或者启动显示点击,然后屏幕所有操作都失效了。各种坑。有大佬成功了吗?脚本 java -jar crawl_launcher.jar --android-sdk /Users/x/Library/Android/sdk --app-package-name com.sohu.sohuvideo --ui-automator-mode

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册