如何为自动化 android 测试提供登录凭据?

How to provide login credentials to an automated android test?

我正在寻找一种方法 "provide a login" 我的应用程序,以便进行自动化测试 "is logged in" 并且可以测试整个应用程序。目前它当然被登录屏幕阻止了。

因为我使用 SmartLock 密码,这可能是一个为测试提供一些凭据的机会 - 但我不知道如何。


是否有一些最佳实践可以在测试期间提供凭据/跳过登录?我可以想到一个特殊的 buildType / -flavor 来模拟登录,但这样它就不能用于测试发布版本。

如果我可以测试最终版本,测试成功后可以上传到商店,那就太好了。这样,我也可以在 PlayStore 中使用嵌入式预发布报告(这真的很棒)。

对于 Robo 测试(它确实为 Play 商店开发者控制台上的发布前报告提供支持),绕过登录是已知限制之一,您可以在 bottom of the documentation 上阅读相关内容。但是,Robo 最近有一个功能,可以自动使用 Google 帐户登录。测试实验室中的所有设备现在都有一个与之关联的 Google 帐户,只要需要 Google 帐户登录,就会使用该帐户。

如果您想测试通常需要某种其他登录类型的应用,您猜想您需要提供一个配置为不需要登录的替代 APK 是正确的。这样做不是很方便,特别是对于 alpha/beta 中正在测试的应用程序。为了以编程方式决定是否需要登录,您可以尝试的一件事是咨询将在测试实验室设备上设置的特殊系统 属性 ("firebase.test.lab")。您可以阅读有关 here 的内容。这通常用于仪器测试,但它也可能适用于 Robo 测试(我还没有尝试过,稍后我必须与团队确认这一点)。

转到 Firebase 控制台->测试实验室->Select 维度,然后单击

显示高级选项

然后寻找

测试帐户凭据(可选)

然后填写如下:

Enter username resource : 您的用户名(电子邮件)名称 EditText 资源,跳过 R.id 部分,因此对于 R.id.edit_text_email 输入 edit_text_email

Enter password resource :与上面相同,但用于密码。同样,跳过 R.id,例如。 edit_text_password

Enter username :您用于测试的用户名或电子邮件,例如。 test@mywebsite.com

Enter password :您用于测试的密码,例如 testTEST123


Robo(测试机器人)似乎在找到使用 ID 资源指定的 EditText 后立即输入凭据,但如果您有其他身份验证,则可能需要一些时间来确定单击哪个按钮登录'Sign in with Google' 和 'Continue with Facebook' 等选项。在其他服务中尝试几分钟后,似乎幸运地按下了正确的按钮,使用您提供的凭据继续进行身份验证。

在撰写本文时,无法编写登录行为脚本,因此无法建议使用哪些按钮进行身份验证,因此只需使用上述方法并给 Robo 足够的测试时间(Test timeout在控制台中),以防它在一段时间内没有单击右键。

如果您为 Robo 提供 Sign in With Google 按钮以使用其自己的 Google 凭据登录,请记住,如果您提供 Test account credentials,这将不起作用。 IE。能够使用 Sign in with Google 确保您没有提供任何其他登录凭据,否则它将失败。


注意:您可以使用类似的方法让 Robo 填写其他 EditText 字段 - 查看 Test Lab documentation 了解更多信息。