web-dev-qa-db-ja.com

ログイン資格情報を自動化されたAndroidテストに提供する方法?

自動テストが「ログイン」してアプリ全体をテストできるように、アプリに「ログインを提供」する方法を探しています。現在はもちろん、ログイン画面によってブロックされています。

SmartLock for Passwordsを使用しているため、これはテスト用の資格情報を提供する機会になるかもしれませんが、方法はわかりません。


テスト中に資格情報を提供したり、ログインをスキップしたりするためのベストプラクティスはありますか?ログインを模倣している特別なbuildType/-flavorを考えることができますが、この方法では、リリースビルドのテストには使用できません。

テストが成功したときにストアにアップロードできる最終リリースビルドをテストできたら素晴らしいと思います。このようにして、PlayStoreに埋め込まれた起動前レポートを使用することもできます(これは本当にすばらしいでしょう)。

20
hardysim

Firebase Console-> Test Lab-> Select Dimensionsに移動して、

詳細オプションを表示

そして探す

テストアカウントの資格情報(オプション)

次に、次のように入力します。

Enter username resource:ユーザー名(電子メール)EditTextリソースの名前、R.idの部分をスキップして、R.id.edit_text_emailの場合入力edit_text_email

Enter password resource:上記と同じですが、パスワードが必要です。繰り返しますが、R.idはスキップしてください。 edit_text_password

Enter username:テストに使用するユーザー名またはメールアドレス。 [email protected]

Enter password:テストに使用するパスワード。例:testTEST123


Robo(テストボット)は、IDリソースで指定されたEditTextを見つけるとすぐに資格情報を入力しますが、「Sign」などの他の認証オプションがある場合、どのボタンをクリックしてログインするかを理解するのに少し時間がかかる場合があります「Google」と「Continue with Facebook」で。他のサービスで数分の試行の後、幸運にも右ボタンを押して、提供された資格情報を使用して認証を続行するようです。

これを書いている時点では、ログイン動作をスクリプト化する方法はなく、認証に使用するボタンを提案しているので、上記の方法を使用してRoboに十分なテスト時間(コンソールのTest timeout)を与えてください。しばらく右ボタンを押さずに動かない場合。

Roboが独自のGoogle認証情報を使用してサインインするためのSign in With Googleボタンを提供する場合、Test account credentialsを提供するとこれは機能しないことに注意してください。つまり。 Sign in with Googleを使用できるようにするには、他のログイン認証情報を提供していないことを確認してください。そうしないと、失敗します。


注:同様の方法を使用して、Roboに他のEditTextフィールドを入力させることができます。詳細については Test Labのドキュメント を確認してください。

20
Voy

Roboテスト(Playストアデベロッパーコンソールのリリース前レポートを強化します)の場合、サインインのバイパスは既知の制限の1つです。これは、 ドキュメント 。ただし、Roboには最近、Googleアカウントを使用して自動的にログインできる機能があります。 Test LabのすべてのデバイスにGoogleアカウントが関連付けられ、ログインにGoogleアカウントが必要な場合に使用されます。

通常は他の種類のログインが必要なアプリをテストする場合、ログインを必要としないように構成された代替APKを提供する必要があると推測するのは正しいことです。特にアルファ/ベータでテストされているアプリの場合、これを行うのはあまり便利ではありません。ログインを要求するかどうかをプログラムで決定するために試すことができる1つのことは、Test Labデバイスに設定される特別なシステムプロパティ( "firebase.test.lab")を調べることです。あなたはそれについて ここ を読むことができます。これは通常、インストゥルメンテーションテストで使用されますが、Roboテストでも機能する可能性があります(私は試していません。後でチームに確認する必要があります)。

7
Doug Stevenson