Xamarin Test Cloud 入門

 

本ガイドでは、Xamarin Test Cloud と自動 UI Acceptance Testing の入門編を紹介します。Xamarin Test Cloud の基本的なコンセプトとコンポーネント、開発者が UI テストを自動化できるコードを記述するフレームワークを紹介します。

概要

アプリケーションを起動したり、使ったりしてアプリケーションの動作検証するのが最も効果的な方法です。アプリケーションのクラッシュや不正な結果を返すことなく期待通りに動作したら、アプリケーションは良い状態で、ユーザーはフラストレーションなく使える状態で、心配なくアプリケーションをリリースできます。このプロセス (実際にアプリケーションを使用したり、インタラクティブに動かすことによる UI テスト) は、UI Acceptance Testing と呼ばれています。ただし、昔ながらの UI Acceptance Testing は、手動での作業のため、非常に多くのコストが発生します。アプリケーションの配布し、使用し、正しく動作するのを確認するのに多くの工数を必要とします。アプリケーションのテストが必要な各ビルド、プラットフォームやデバイスが複数あると、膨大なコストになり、効果的な UI Acceptance Testing がすべてではないですが、チームの多くのリソースを使用し、実現不可能な方法となります。

Xamarin Test Cloud は、クラウド ベースのサービスで、クラウド上で数百台のさまざまなデバイスとモバイル アプリケーションの UI Acceptance Testing を自動化する方法を提供します。これによって、僅かな工数で、誰でもアプリケーションがさまざまなデバイスで正しく効果的に動作するのを確認できます。さらに、クラウドベースなので、QA 担当者にとっては、メンテナンスと調達の工数を削減でき、他の作業に注力できるようになります。

O以下の二つのフレームワークのうち一つを使用して自動 UI テストを記述できます:

  • Xamarin.UITest – これは、一般的な NUnit testing ライブラリを使用して C# でテスト コードを記述できるフレームワークです。このフレームワークは、既に自分で自動テストのコードを記述したことがある開発者に最適です。
  • Calabash – これは、Cucumber を使用した Ruby でテスト コードを記述できるフレームワークです。 Calabash のテストは、Behavior Driven Development (executable specifications の作成にフォーカスした方法) に最適です。これらは、Cucumber で規定した文法規則に従って、誰でもビジネス言語でコードを記述できるテストです。

どちらのフレームワークを使用してテスト コードを記述しても、これらの自動テストを実行して、アプリケーションのユーザー インターフェースを確認したり、アプリケーションが正しく動作するのを確認します。

機能やテストの一部をローカルに作成して、モバイル アプリケーションとテストを Test Cloud へアップロードします (Test Cloud にアプリをインストールし、数百の物理デバイスでテストを実行します)。すべてのテストが完了すると、Test Cloud はテスト結果を報告します。

Calabash または Xamarin.UITest のどちらかを使っても、アプリケーションとテストをコマンド プロンプト (test run として参照されるプロセス) で Xamarin Test Cloud へ送信します。ユーザーが手動で送信することもできるし、Continuous Integration (CI) ワークフローの一部として、コードの変更をチェックインした際に、自動的に新しいアプリケーションのビルドを Xamarin Test Cloud へ送信することもできます:

これらのテスト コードの記述方法は後ほど紹介しますが、まず最初に、テストを実行する基本的なアーキテクチャを理解することが重要です。それでは、Xamarin Test Cloud Agent と自動 UI テストでの役割に関して紹介していきます。

Test Cloud Framework の構成

Calabash と Xamarin.UITest はテストのフレームワークです – 単体ではモバイル アプリケーションとインタラクティブに動作しません。 デバイスでテストを実行するには automation library が必要です。Xamarin Test Cloud Agent では、Android と iOS デバイスでテストを実行できるようにブリッジを提供しています:

Xamarin Test Cloud Agent は独立した個別のアプリケーションで、アプリケーションと一緒に Test Cloud によってインストールされます。Xamarin Test Cloud Agent はさらに二つに分けることができます。デバイスでテストを実行する場合、実際には外部で開始し、クエリーします - 一方、ローカルで実行する際にはコマンド ラインから、または Xamarin Test Cloud で実行する際には Xamarin Test Cloud から起動し、クエリーします。

これを容易にするには、Calabash と UITest は client-server モデルを使用し、client-server モデルは、サーバー部分がデバイス上で起動する軽量の Web サーバーで、接続するクライアントを Listen し、テストを開始します。そして、HTTP 経由で JSON を使って通信します。

つまり、実際のテストはホストで実行し、デバイスで実行するテストで指定したアクションを実行します。

Xamarin Test Cloud Agent on iOS

iOS では、サーバーを NuGet Package を使用してテストするアプリにビルドします:

Introduction to Calabash のガイドで紹介していますが、Xamarin Test Cloud Agent はアプリケーションの Debug ビルドにのみ含むべきで、アプリを Release 構成でビルドする際には、Xamarin.iOS Linker で外します。

Xamarin Test Cloud Agent on Android

Android では、Test Cloud は同じ client-server モデルを使用しますが、対象のアプリケーション内を起動するサーバー部分ではなく、実際には別のアプリケーションとして起動し、対象のアプリケーションへの実行権限を持ちます。これによって、Test Cloud は同じキーで両方のアプリケーション パッケージに署名し、よくあるセキュリティ サンドボックスを通過することができます:

Xamarin Test Cloud Agent は iOS プロジェクトのみで利用可能です。Android では、Test Cloud Agent を個別のアプリケーションとしてインストールするので、Android のプロジェクトには必要ありません。

Xamarin Test Cloud でテストを実行

Xamarin Test Cloud でのテストの実行は、コンセプトとしてはローカルでのテストと同様ですが、Xamarin Test Cloud がテストをホストし、選択したデバイスでテストを実行します:

これを容易にするには、アプリを Xamarin Test Cloud へプッシュしてテストする際に、アプリと一緒にテストをアップロードします。そして、ローカルで実行するのと同様に、Xamarin Test Cloud が HTTP 経由でテストを実行します。

まとめ

本ガイドでは、Test Cloud の入門として、自動 UI Acceptance Testing のコンセプトを紹介しました。そして、Xamarin.UITest を使用して C# で記述したテスト コード、または Calabash を使用して Ruby で記述したテスト コードを実行する方法を紹介しました。

 

 


Infragistics Infragistics
エンタープライズ向け統合 UI 開発コンポーネント。WinForms、モバイル、Web 用の UI コントロール。
CData ドライバー CData ドライバー
50 以上のデータ ソースへのアクセスをプログラミングなしで可能にするデータベース ドライバー。
SmartBear Software SmartBear
GUI テスト / プロファイラー / 負荷テスト / API テスト: ソフトウェア テストの自動化/工数削減/品質向上。
/n software IP*Works! /n software IP*Works!
クロスプラットフォーム対応のインターネット アプリケーション開発向けコンポーネント スイート。
UXDivers Grial UI Kit
Xamarin Forms 対応の XAML ベースの UI、UX テンプレートを提供
XFINIUM.PDF XFINIUM.PDF
Xamarin 対応のクロスプラットフォーム PDF 開発ツール
Aspose Aspose
.NET/Java で Word、Excel、PowerPoint、PDF などの Office ファイルを操作できる API ライブラリ。
Visual Studio Microsoft Visual Studio
最新の統合開発環境!アプリケーションの迅速かつ高品質な構築を支援する開発環境を提供。