我已经体验过三四个 app 的遍历,很棒,遍历完成后,会给出奔溃、性能等问题结果,并且有每一次操作的截图以及相关日志。目前发现的缺点有两个,第一是需要重签名(讲道理不需要的),第二是不开源,仅仅提供了相关包,并且关键得 apk 包已混淆。
因为需要 fq,不太方便访问,所以我自己把原文翻译下来,把原包下载下来,方便大家阅读下载。
链接: 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 进行测试很容易,因为不需要编写或维护代码。此外,您可以在各种设备上运行它,以查找崩溃、视觉问题或性能问题。通常,使用基于云的服务 (如 Firebase Test Lab) 来更容易、更快地测试屏幕大小和硬件配置的多种组合是一个好主意。
App Crawler 的目标用户是那些希望以最少配置确保应用基本功能的开发人员。除了纯黑盒测试之外,还可以配置爬虫程序来提供特定的输入,比如登录凭证或深度链接。
在开始之前,请确保您拥有最新版本的 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 |
先收藏了,回头研究一下跟思寒那个有什么区别?
为啥没有跑呢
我这边跑起来了 但是好像和 monkey 区别不是很大 能解答一下吗
原理不一样,这个是基于 uiautomator 的,monkey 不基于控件,就是随机点,随心看起来都是点来点去,本质不一样
比 monkey 好的就是没有无效的点击操作 其他的应该差不多
挺好,可以增加遍历方案的对比,哪个好用用哪个
--apk-file 似乎有 bug 没搞明白,跑的话用--app-package-name name
另外带上 --ui-automator-mode
能不能遍历 webview?
应该可以,反编译看了里面集成了 espresso,也重签名了,条件都够了
第一次使用 vivo 的手机每次启动都需要安装那两个 apk(需要点击继续安装)还挺麻烦的,然后也没跑起来,后面换了个 pixel 的手机跑了一会就停了,感觉也没遍历完。不知道你们执行语句都是怎么写的呢?
调试时遇到了这个问题,有没有知道这是什么原因导致的呢?一执行命令,adb 就断开了
先插眼
有设备呀,一执行 crawler 就断开了,我用 atx u2 都没有问题的。还有,百度网盘提供的这个是不是被修改过的,不是谷歌原装的?
反编译看了看 迷迷糊糊 等大佬解析
跑不起来啊
我也跑不起来,是签名还是咋的,不知道下面这段 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
确实是如此 遍历的深度不太行
这是什么原因呢?大神帮忙看下
跑起来了。再找找原因。
@zhangzhao_lenovo --apk-file 是将 apk 的包名写到文件里面,后面跟文件的路径,和 monkey 测试一个道理
跑不起来。。
Unable to find instrumentation info for: ComponentInfo{androidx.test.tools.crawler/androidx.test.tools.crawler.CrawlMonitor}
官方的网站没法进去,需要科学上网吗?
原生的不考虑业务场景很难受啊,难道国外的 APP 不需要登录的~~
好东西,先收藏再试验
百度网盘访问不了,还可以其他链接下载么
今天试了下字节的 fastbot,覆盖率不高,因为开源版是阉割的。谷歌的 App Crawler 在多个设备无法启动,要不就像华为,启动无反应或者启动显示点击,然后屏幕所有操作都失效了。各种坑。有大佬成功了吗?脚本 java -jar crawl_launcher.jar --android-sdk /Users/x/Library/Android/sdk --app-package-name com.sohu.sohuvideo --ui-automator-mode