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

32
我正在寻找一种方法来“提供登录”到我的应用程序,以便自动化测试可以“登录”并测试整个应用程序。目前当然被登录屏幕阻止。
由于我正在使用密码智能锁,这可能是为测试提供凭据的机会 - 但我不知道如何做到这一点。
有没有一些最佳实践可以在测试期间提供凭据或跳过登录?我可以考虑使用特殊的buildType / -flavor模拟登录,但这样就不能用于测试发布版本。
如果我能够测试一个最终发布版本,当测试成功时可以上传到商店,那将是很好的。这样,我也可以在PlayStore中使用内置的预先启动报告(这将非常好)。

3
你是在谈论机器人测试还是常规的仪器测试? - Doug Stevenson
是的。我认为这就是作为预启动报告运行的东西。但这是一个普遍的问题 - 在测试时如何“跳过”登录,而不使用不同的风味等。 - hardysim
2个回答

35

进入Firebase控制台->测试实验室->选择维度,然后点击

显示高级选项

并查找

测试帐户凭据(可选)

然后按以下方式填写:

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

输入密码资源:与上述相同,但是用于密码。再次跳过R.id,例如edit_text_password

输入用户名:用于测试的用户名或电子邮件,例如test@mywebsite.com

输入密码:用于测试的密码,例如testTEST123


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

撰写本文时,还没有办法编写登录行为脚本,因此建议使用上述方法并在控制台中为Robo提供足够的测试时间(测试超时),以防它长时间停留而不点击正确的按钮。

如果您为Robo提供了使用Google登录 按钮,让其使用自己的Google凭据进行登录,请记住,如果您提供了测试帐户凭证,则此功能将无法使用。即要能够使用使用Google登录,请确保您没有提供任何其他登录凭据,否则它将失败。


注意: 您可以使用类似的方法使Robo填写其他EditText字段 - 有关更多信息,请查看测试实验室文档

太好了 :-) 我以前不知道 Firebase Test Lab 现在已经免费了。 - hardysim

11

对于Robo测试(该测试是Play Store开发者控制台上预发布报告的动力源),绕过登录是已知的限制之一,您可以在文档底部了解更多信息。然而,最近Robo有了自动使用Google账号登录的功能。Test Lab中的所有设备现在都与一个Google账号相关联,当需要使用Google账号登录时将使用该账号。

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


你知道自从2016年你回答以来有没有任何变化吗? - Norfeldt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接