2016-04-13 10 views
1

テストケース:Xamarin Test Cloudでは、ログインしたユーザーを使用するアプリケーションの複数のデバイスで同時テストを実行する方法を教えてください。

ユーザーブックホテルの部屋。ユーザーの状態がbooked_roomに変更されます。この部屋は、同時にログインした他のユーザーには利用できなくなります。部屋を予約した後、ユーザは予約された部屋に基づいて他のタスクを実行する。

問題がある:

私たちは、同じユーザーアカウントで同時に複数のデバイス上でこのテストを実行する場合、テストは唯一の最初のデバイスに渡します。 2番目のデバイスでテストを実行すると、アプリケーションはユーザーのステータスを要求し、ユーザーが以前のデバイスで既に1つを選択しているため、ルームリストは表示されず、REPLが要素ツリー上に空きがないためテストが失敗します。

私のスイートのすべてのテストは、ログインプロセスから始まります。

Xamarin Test Cloudを使用してこの問題に直面しましたか?テストスイートを実行するたびにデータベースインスタンスを作成するサーバー側のソリューションを実装する必要がありますか?

ありがとうございます。

答えて

2

これはtestcloudに関連する問題ではありません。テストの再現性は、データベース/共有リソースが関与しているときに常に問題になります。^^

これらのUIテストで何を達成したいかによって答えは異なります。

は、統合テストとUIテストを区別することです。

  • 統合:

    • テストのWeb APIと消費者のあなたのAPIを消費
    • サービスを単位として実行されているテスト
  • UI:

    • テスト外観(およびアプリケーション・ロジック)
    • モックUIテストのためのサービス(IBookingServiceのための代わりBookingServiceBookingServiceMockを使用)、私はあなたが依存性注入を使用している願っています:)このアプローチの利点は、あなたのことをBackdoorsを使用してモックを制御できます(例:エラーケースをシミュレートします)。

欠点は以下のとおりです。

  • アプリケーションは、実際のバックエンドと話したことがないので、あなたは、何のシステムテストを持っていません。あなたが実行された別のテストスイートでこれを解決することができ、テスト対象アプリケーションがアプリケーションストアでのアプリケーションとは異なり
  • (あなたがアプリにテストランナーライブラリをリンクするためのiOS上では、正常です)

統合とUIテストは1台のAndroidデバイスだけで実行され、1台のiOSデバイスで実行されます。

+0

AndroidプロジェクトやiOSプロジェクトからインスタンス化されて呼び出される共有プロジェクトコードで定義されているサービスクラス(実際にAPIコールを実行するサービスクラス)を使用しています。私があなたの答えから理解することは、テストスイートが実行されるたびに各デバイスにデータベースモックをローカルに作成する必要があるということです。 – albertoms

+1

いいえ私はサービスクラスの実装をモック(あなたが望むように単にデータを返す)で置き換えます。したがって、データベースに書き込む/ Webサービスを呼び出すことなく、すべてのシナリオをシミュレートできます。 –

+0

UITestとCalabash(iOSとAndroid)は、あなたのアプリケーションへの 'backdoor'呼び出しをサポートしています。これらの 'backdoor'呼び出しを使用して、アプリをテストのための良い状態にするのが一般的です。この場合、Sven-MichaelStübeの提案するバックドアを実装することができます。 – jmoody

2

比較的単純なアプローチ(アプリとテストコードによって異なる)では、それぞれの同時テスト(デバイス)が異なるユーザー資格情報のセットを使用し、異なる部屋を予約することができます。テストコードでは、ユーザー資格情報、部屋番号、および同時テストごとに異なる必要があるその他の変数のコレクションがあります。

Xamarinテストクラウドは、環境変数XTC_DEVICE_INDEXを有する:

これは、N-1、Nは試験を上で実行される デバイスの数であり、0の範囲内の文字列です。この変数は、同じテストが複数のデバイス上で並行して実行されている状況 に役立ちます。 XTC_DEVICE_INDEXの値 は、特定のデバイスである で実行されている各テストスクリプトで一意です。 Xamarin Test Cloud Environment Variables

あなたが唯一のテスト実行を一度に(複数のデバイス上で)実行している場合、これは動作します。最初のテストが終了する前に2番目のテストセットが開始された場合、最初のテストセットと同じ変数セットを使用しようとします。これをサポートする必要がある場合は、テストコードでテストコードに埋め込まれた値から適切な値を選択するために使用するユーザー資格(およびその他の関連する変数)またはキーまたはインデックスをチェックアウトできるWebサービスを提供できます。

関連する問題