テストは、モバイルアプリ開発プロセスの重要な部分です。このようなテストを自動化するかどうかに関係なく、アプリをテストしていない限り、正気の開発者は自分の作業が完了したとは見なしません。
十分にテストされたアプリは通常、単体テスト、統合テスト、受け入れテストなど、複数のテストステップを経ます。アプリが成長するにつれて、テストの重要性が増し、テストの自動化が必要になります。
Webなどの他のプラットフォームは、テストメカニズムとフレームワークの点で大幅に進歩していますが、モバイル領域は遅れをとっていません。この記事では、Calabashを使用して、わかりやすい英語の手順を使用してAndroidアプリとiOSアプリのUIを自動化し、それらの検収テストを可能な限り簡単にする方法を学習します。
アプリを手動でテストしている場合は、同じタスクを何度も繰り返し実行することに多くの時間を浪費している可能性があります。コードにいくつかの変更を加え、アプリをビルドし、デバイスまたはエミュレーターで実行し、アプリをいじって、期待どおりに機能するかどうかを確認します。
これらのどれがサーバー側のWebアプリケーションの保護が難しい理由ではありません
UIテストを自動化することで、同じ手動の手順を自動的に実行できます。アプリのサイズが適切な場合、これにより多くの時間を節約でき、アプリが恥ずかしいバグ、特にリグレッションバグに悩まされるのを防ぐことができます。
「それは素晴らしいですね」とあなたは言いますが、AndroidまたはiOSアプリでどのようにそれを行いますか?
AndroidとiOSの公式ドキュメントを読むと、公式IDEでUIテストを作成して実行することをお勧めします。 Androidの場合はAndroidStudio、iOSの場合はXcodeです。
公式ドキュメントは、テスト用の特定のフレームワークを推奨するところまで行きます。 Androidの公式ドキュメントには、 表現 、AndroidUIテストフレームワーク。同様に、Appleは XCTest フレームワーク。
また、UIテストに真剣に取り組む場合は、これらの提案に従うことができます。これは、EspressoがGoogleによって管理されており、Androidサポートリポジトリの一部であるため、理にかなっています。 Espressoは、Googleが将来Android向けに導入するすべての新機能をサポートする可能性が非常に高いです。 iOS用のXCTestフレームワークについても同じことが言えます。
ただし、自動テストには多くの利点があるにもかかわらず、多くの開発者はそれらをまったく記述していないことを覚えておく価値があります。
テストの自動化を深く知っているすべての開発者は、それが素晴らしいアイデアであることを知っています。しかし、座ってこれらのテストを作成する場合、多くの開発者は、「ボタンに触れる」コードを作成するよりも「ボタンに触れる」方がはるかに高速な操作であることが判明したため、時間をかける価値があるかどうか疑問に思い始めます。自動的に。時々、クライアントとマネージャーは、アプリを試すのを熱心に待っていても、助けにならないことがあります。
多くの開発者は、その時点で、既存のUIテストの自動化されたUIテストを作成するよりも、アプリケーションの新機能に取り組み続ける方がよいと判断しています。
アプリケーションが大きくなると、アプリケーションを更新するたびに手動で「これらのボタンに触れる」のに時間がかかるようになります。
バイヤーパワーポーターの5つの力
しかし、UIテストを簡単にし、アプリのUIテストを作成しない言い訳ができないフレームワークがあったとしたらどうでしょうか。
会う ひょうたん 。
約1年前、ソフトウェア開発者ではない人でも使いやすいテストフレームワークを探し始めました。そして、それは私がひょうたんを見つけたときです。
このオープンソーステストフレームワークは、 Xamarin チームは、AndroidとiOSの両方で動作します。これにより、モバイルアプリケーションの自動受け入れテストを作成して実行できます。
受け入れテストは通常、アプリがビジネス要件を満たしているかどうかを判断するシステムテストの後に行われます。 UIレベルで動作することを考えると、これはUIテスト自動化フレームワークの選択と同様に機能します。
Calabashは、EspressoやXCTestのようにアプリとやり取りできます。ただし、ここでCalabashを優れた選択肢にしているのは、キュウリのサポートです。
Cucumberは、平易な英語で書かれた自動テストを実行できるツールです(必要に応じて、他の平易な言語を使用するように調整できます)。したがって、Cucumberで自動テストを作成するために、テスターはJava、Objective-C、またはその他のプログラミング言語を知っている必要はありません。
Calabashフレームワークは、AndroidおよびiOSアプリと対話できるライブラリで構成されています。実際のデバイスで実行できます。したがって、テスターが手動で実行していることを実行できます。
Calabashを可能にするGitHubには2つの異なるプロジェクトがあります。
ひょうたん-アンドロイド - アンドロイド用
ひょうたん-ios -iOSの場合
Calabashは、Rubyベースのテストフレームワークで動作します。この記事では、カラバッシュのテストを書くための最も一般的で便利な方法であるキュウリについて説明します。
続行する前に、記事の残りの部分に従ってCalabashを試してみたい場合は、マシンにRubyがインストールされていることを確認してください。インストールの詳細な手順を見つけることができます ここに 。
次に、上記のGitHubリンクをたどって、お気に入りのプラットフォームにCalabashをインストールします。
勘定科目表の作成
Calabashでテストを書くのはとても簡単です。 iOSアプリの簡単なテストがどのように見えるか見てみましょう。
Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the 'Login' button to appear When I enter 'tstuser' into the 'Username' field And I enter 'qwerty' into the 'Password' field And I touch 'Login' Then I should see 'Username you entered is incorrect' Scenario: Successful user login Given the app has launched Then I wait for the 'Login' button to appear When I enter 'testeruser' into the 'Username' field And I enter 'qwerty' into the 'Password' field And I touch 'Login' Then I should see 'Hey testeruser!'
ここでは、アプリが誤ったユーザー名とパスワードでテストされてから、正しいユーザー名とパスワードでテストされています。テストでは、アプリが最初のシナリオではログインに失敗することを想定していますが、2番目のシナリオでは成功します。
必要な数のシナリオを作成できます。必要なのは、手順/指示を簡単な英語の文章に分解することだけです。あなたが物語を書くのと同じように!
知っている人は誰でも ビヘイビア駆動開発 (BDD)はすでにこれに精通しているでしょう。
テスターが使用しているステップの背後で何が起こっているかを確認するには、GitHubでプロジェクトを開き、以下を確認します。 ファイル :
calabash-cucumber/features/step_definitions/calabash_steps.rb
次のステップの定義を見てみましょう。
When I enter 'testeruser' into the 'Username' field
Then /^I enter '([^']*)' into the '([^']*)' field$/ do |text_to_type, field_name| touch('textField marked: '#{field_name}'') wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end
このRubyコードの小さなスニペットは、特定のフィールドを探し、それに触れ、キーボードが表示されるのを待ち、text_to_type
からのテキストを入力します。変数であり、次のステップに切り替える前に少し待機します。
ステップの最初の単語は、「Given」、「When」、「Then」、「And」、または「But」です。使用するキーワードは関係ありません。それらのいずれかを使用して、ストーリーをより明確にすることができます。
Calabashにまだ実装されていないステップが必要な場合は、自分で作成できます。構文は、すでに事前定義されている手順とまったく同じです。
たとえば、テスターがフィールド名ではなくプレースホルダーで入力フィールドにアクセスする必要がある場合:
Then /^I enter '([^']*)' into the field with placeholder '([^']*)'$/ do |text_to_type, placeholder| touch('textField placeholder:'#{placeholder}'') wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end
このステップ定義は前の定義とほとんど同じですが、フィールド名ではなくプレースホルダーでフィールドにアクセスしています。アプリの外観を考えると、これによりテスターにとってはさらに簡単になる可能性があります。
また、開発者にとっても簡単です。開発者はこのステップを一度実装すると、テスターは必要なときにいつでもそれを使用します。さらに、独自のカスタムステップを実装するために多くのRubyを知る必要はありません。
使用できるRuby関数は次の場所にあります。
http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber
モバイルアプリケーションをテストする場合、もう1つの課題があります。非常に多くのデバイスと非常に多くのOSバージョンがあるため、できるだけ多くのデバイスでそれらをテストする必要があります。
需要曲線は、
ここが Xamarin Test Cloud 大いに役立ちます。クラウドには約2,000の実際のデバイスがあり、Calabashテストをサポートしているのは朗報です。
繰り返しの作業を省くことで時間を節約するのに役立ったのと同じCalabashテストを使用して、多くの実際のデバイスでアプリケーションをテストできるようになりました。
Calabashがアプリに必要なテストソリューションであるかどうかにかかわらず、Calabashがもたらす利点により、モバイルアプリの自動UIテストを作成する際の言い訳の余地はありません。アプリが特定のデバイス機能(カメラなど)に大きく依存している場合、Calabashは不十分になる可能性がありますが、それでも大部分のアプリのテストの作成ははるかに簡単になります。
受け入れテストは、通常、ユーザーの観点から、アプリケーションがビジネス要件を満たしているかどうかを判断します。
Cucumberは、平易な英語で書かれた自動テストを実行できるツールです。これにより、プログラミングのバックグラウンドを必要とせずに自動テストを作成できます。