Robo 测试是一种与 Firebase 测试实验室集成的测试工具。Robo 测试会先分析应用界面的结构,然后通过自动模拟用户活动有条不紊地进行探索。与 UI/Application Exerciser Monkey 测试不同,当您使用 Robo 测试在特定设备配置上以相同的设置来测试应用时,Robo 测试会始终以同一顺序模拟相同的用户活动。这样一来,您可以使用 Robo 测试来验证错误修复情况并测试回归情况,而使用 UI/Application Exerciser Monkey 测试则无法进行这些测试。
Robo 测试可捕获日志文件并保存一系列带有注释的屏幕截图,然后使用这些屏幕截图创建视频,向您展示它模拟的用户操作。这些日志、屏幕截图和视频有助于您确定应用发生崩溃的根本原因,并发现应用界面存在的问题。
Robo 测试抓取统计信息
为了帮助您解读 Robo 测试结果,Robo 在每次测试抓取期间都会记录统计信息。测试实验室会在测试结果页中的 Robo 标签顶部显示以下统计信息:
- 操作数:抓取期间执行的操作总数,包括 Robo 脚本操作、Monkey 操作和 Robo 指令。
- 活动数:抓取到的不同活动的数量。
- 屏幕数:抓取期间访问的不同屏幕的数量。
测试实验室还会使用统计信息以抓取图表的形式直观展示 Robo 抓取。该图表将屏幕作为其节点,将操作作为边缘。通过跟踪屏幕之间的边缘,您可以了解 Robo 在整个抓取过程中如何遍历您的应用。
Robo 测试超时
Robo 测试可能需要 5 分钟或更长的时间,才能完成一整套的界面互动,具体视应用界面的复杂程度而定。我们建议对大多数应用至少设置 120 秒(2 分钟)的测试超时,对比较复杂的应用设置 300 秒(5 分钟)的测试超时。通过 Android Studio 和 Google Developer Console 运行的测试的默认超时值为 300 秒(5 分钟),通过 gcloud
命令行运行的测试的默认超时值为 1500 秒(25 分钟)。
应用启动超时错误
如果您的应用需要很长时间才能启动,Robo 可能会抛出错误,并且无法抓取您的应用。这仅在启动时间极长的情况下才会发生,并且只能通过修改应用以加快启动速度得到解决。
通过 Robo 脚本获得更多控制权
有时候,您需要更好地控制测试。例如,您可能需要测试常见的用户操作历程或提供特定的界面输入(例如用户名和密码)。Robo 脚本可以在这方面提供帮助。
通过 Robo 脚本,您可以记录自己在应用中完成某个工作流程的每一步,然后将记录内容上传到 Firebase 控制台以在 Robo 测试中运行。当您运行附加了脚本的 Robo 测试时,Robo 会先逐步执行您预先编写了脚本的操作,然后继续像平常那样探索该应用。
在 Android Studio 中通过 Firebase 工具开始使用 Robo 脚本:
- 打开 Android Studio。
- 在主菜单中,依次选择工具 (Tools) > Firebase。
- 选择测试实验室 (Test Lab),然后点击记录 Robo 脚本并将其用于指导 Robo 测试 (Record Robo Script and use it to Guide Robo Test)。
- 按照该工具中的其余步骤记录 Robo 脚本。
- 将该 Robo 脚本上传到测试实验室并开始测试。
Robo 脚本错误
如果 Robo 脚本在任何时刻失败,测试实验室将放弃该脚本中的所有后续步骤,并继续进行常规 Robo 抓取。很多情况下,Robo 脚本会因测试实验室无法在屏幕上找到所需元素而失败。为避免失败,请确保您的应用导航可以预测,并且屏幕会按既定顺序显示。
Robo 测试和非 Android 界面微件
Robo 测试使用 Android API 直接在 Android 界面微件上执行操作。这有助于测试自动探索您的界面,但也意味着它们需要能够提取屏幕的 Android 界面层次结构,以便对其进行测试。
如果应用中某个屏幕不使用 Android 界面微件,则 Robo 测试会依靠 Monkey 操作来测试该屏幕。与更有条理的 Robo 操作不同,Monkey 操作只是模拟设备屏幕上半随机位置的点按事件。
为了更好地测试不使用 Android 界面微件的屏幕,您可以通过 Firebase 测试实验室游戏循环测试将一项 Monkey 操作的任意点按替换为一组编写了脚本的点按和交互。
与 Google Play 进行集成
如果您使用 Alpha 或测试版渠道上传和发布应用的 APK 文件,则可以在 Google Play 管理中心中使用 Robo 测试。Robo 测试可以在一组位于不同地理位置的常用真机设备上运行,测试范围可覆盖各种设备类型和硬件配置。 如需了解详情,请参阅利用发布前测试报告发现问题。
测试帐号登录和预定义文本输入
Robo 测试支持测试帐号登录,还允许在应用的字段中输入预定义的文本。为了实现自定义登录和其他预定义的文本输入,Robo 测试可以在应用的 EditText
字段中输入文本。对于每个字符串,您需要使用 Android 资源名称来标识 EditText
字段。如需了解详情,请参阅访问资源。
登录
Robo 测试有两种互斥的方法支持登录:
- 自定义登录:如果您提供测试帐号凭据,您需要指示 Robo 测试在哪里输入凭据,还应提供这些凭据。
- 自动登录:如果您的应用具有使用 Google 帐号进行身份验证的登录屏幕,Robo 测试会使用 Google 测试帐号,除非您为自定义登录提供了测试帐号凭据。
要为自定义登录提供测试帐号凭据,请执行以下操作:
- 在选择维度页面上,选择显示高级选项。
- 在测试帐号凭据(可选)下,输入用户名和密码资源名称,以及测试帐号的用户名和密码。
预定义文本输入
您可以为应用使用的其他文本字段提供自定义输入文本。要为其他字段提供文本输入,请执行以下操作:
- 在选择维度页面上,选择显示高级选项。
- 在其他字段(可选)下,输入一个或多个资源名称,然后在相应文本字段中输入字符串。
预定义的文本输入错误
Robo 会使用与所提供的正则表达式匹配的 Android 资源名称搜索 EditText
字段。如果 Robo 找不到匹配的字段,则不会输入您的文本,而是像往常一样继续抓取。
深层链接
您最多可以提供三个您的应用支持的深层链接,以执行测试。
深层链接会作为 Android ACTION_VIEW
Intent 发布到您的应用。因此,每个链接必须与应用中的 Intent 过滤器相匹配。
如果您提供了一个或多个深层链接,则应用首先会正常启动(使用 ACTION_MAIN
Intent)并执行抓取,直至达到指定的超时。主要抓取操作完成后,系统会分别对每个深层链接再执行 30 秒的抓取。
深层链接错误
如果 Robo 找不到与您的深层链接匹配的活动,则测试实验室会忽略该链接。深层链接问题通常是由于所提供的深层链接与其在应用中的定义不符而导致的。请检查提供的网址和您的应用是否存在拼写错误或其他不一致问题。
应用许可支持
测试实验室支持使用 Google Play 应用许可服务的应用。在通过测试实验室测试您的应用时,为了成功地检查许可,您必须将该应用发布到 Play 商店中的正式版渠道。如需使用测试实验室在 Alpha 或测试版渠道中测试您的应用,请在将该应用上传到测试实验室之前取消许可检查。
已知问题
Robo 测试目前存在以下已知的限制:
- 界面框架支持。Robo 测试仅适用于使用 Android 界面框架中的界面元素(包括
View
和ViewGroup
对象,但不包括WebView
对象)的应用。如果您对使用其他界面框架的应用(包括使用 Unity 游戏引擎的应用)执行 Robo 测试,可能会导致立即退出测试;也就是说,除了首屏,测试不会探索其他任何部分。 - 登录人机识别系统验证:如果用户在登录屏幕上除了输入登录凭据之外还需要执行额外操作(例如完成人机识别系统验证),则 Robo 测试将无法绕过登录屏幕。