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

cmlanche · September 17, 2019 · Last by wakelay-github replied at October 10, 2019 · 4709 hits

我已经体验过三四个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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 51 条回复 时间 点赞

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


为啥没有跑呢

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

hengxing.qiu 回复

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

yiwang 回复

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

cmlanche 回复

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

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

hengxing.qiu 回复

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

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

zailushang 回复

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

cmlanche 回复

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

hengxing.qiu 回复

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

韩将 回复

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

哈哈,下个月开始

能不能遍历webview?

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

韩将 回复

可能需要签名吧

cmlanche 回复

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

第一次使用vivo的手机每次启动都需要安装那两个apk(需要点击继续安装)还挺麻烦的,然后也没跑起来,后面换了个pixel的手机跑了一会就停了,感觉也没遍历完。不知道你们执行语句都是怎么写的呢?

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

TD 回复

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

Spaceyhyh 回复

adb devices 有设备吗

hengxing.qiu 回复

我也发现的,不是随机的

cmlanche 回复

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

Spaceyhyh 回复

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

cmlanche 回复


所以,我就感觉很奇怪,为什么运行后的日志打印里面,有段打印跟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 回复

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

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

34Floor has been deleted
hengxing.qiu 回复

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


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

hengxing.qiu 回复

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

SugarJ2019 回复

sdk路径不对啊

跑起来了。再找找原因。

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

cmlanche 回复

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

TD 回复

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

cmlanche 回复

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

cmlanche 回复

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

wangyuc 回复

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

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

cmlanche 回复

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

cmlanche 回复

timeout都是60s噢, 怎么改

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

cmlanche 回复

非常非常感谢

SugarJ2019 回复

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up