Calabash Android テストツールチュートリアル
⚡ スマートサマリー
Calabash は、実際のユーザーインターフェイスアクションを実行するオープンソースの受け入れテストフレームワークです。 Android 平易な英語を使用したiOSアプリケーション Cucumber Rubyのステップ定義とデバイス側のテストサーバーによって支えられたシナリオ。

何ですか Calabash?
Calabash オープンソースの承認 テスト iOS 用のテストを作成して実行できるフレームワーク Android アプリ。
これは、Ruby でテストを記述できる自動化されたユーザー インターフェイス フレームワークです。 Cucumber.
Calabash モバイルアプリケーション内でのボタン操作、テキスト入力、応答検証などの自動UI操作を可能にすることで機能します。さまざまな環境で動作するように構成できます。 Android iOS デバイスでは、リアルタイムのフィードバックと検証が提供されます。
⚠️ バージョンノート: Microsoft 拠出を終了した Calabash 最終的な iOS 11 と Android 8つのリリース、そして calabash-androidリポジトリ 現在、このプロジェクトはメンテナーを募集していると説明している。以下の手順は原文のまま保存されており、最新の代替手段については最後のセクションで説明する。
Why Calabash オートメーション?
何かをインストールする前に、そのフレームワークがもたらすメリットと維持管理にかかるコストを比較検討することが役立ちます。
| 優位性 | デメリット |
| スループット/生産性の向上に役立ちます。 | 自動テスト スクリプトを作成するには熟練度が必要です。 |
| 品質の向上または品質の予測可能性の向上 | テスト スクリプトのデバッグは大きな問題です。 |
| プロセスまたは製品の堅牢性 (一貫性) が向上します。 | 再生方式の場合、テストのメンテナンスにはコストがかかります。 |
| 生産物の一貫性が向上し、人件費と経費が削減されます。 | テスト スクリプトがより多くの画面をテストする場合、テスト データ ファイルのメンテナンスが困難になります |
Calabash およびBDD
- Calabash is 動作駆動開発 (BDD). それは同じです テスト駆動開発 (TDD)しかし、APIの構造を記述するためのテストを作成する代わりに、アプリケーションの動作が規定される。
- BDD は、複数の関係者が参加して、何を構築する必要があるかについて共通の理解を作成するプロセスです。
- BDD は、適切なソフトウェアを構築し、ビジネス オーナーの観点から設計するのに役立ちます。
下の図は、 Calabash このスイートは階層構造になっており、最上位のビジネス向け機能ファイルから最下位のデバイスとのインタラクションまで、段階的に構成されています。
インストールする方法 Calabash
Calabash on Windows 4 つの前提条件を順番にインストールする必要があります。次の部分を開始する前に、各部分を完全に完了してください。calabash-android gem は Ruby と Android インストール時にSDKを使用します。
パートI)インストール Java JDK – このガイドを参照 – /install-java.html
パート II) Ruby をダウンロードしてインストールします。
ステップ 1) Ruby をダウンロードします URL https://rubyinstaller.org/downloads
ステップ2)exeファイルを開き、画面の指示に従ってください。インストールが完了すると、次の画面が表示されます。「完了」をクリックしてください。
Rubyをオンにしてコマンドプロンプトを起動する Windows 10 & 以下のコマンドを入力します。
ruby -v
コンソールには、以下に示すように、インストールされているインタープリタのバージョンが表示されます。
パート III) ダウンロードとインストール Android
ステップ1) ダウンロード Android Studio at https://developer.android.com/studio
ステップ2)exeファイルを開き、画面の指示に従ってインストールを完了します。完了したら「完了」ボタンをクリックします。
パートIV)インストール Calabash Android
ステップ1)コンソールで「gem install calabash-android」と入力します。インストールが開始され、完了するまでしばらく時間がかかります。
ステップ2)インストールが完了したら、calabash-android versionと入力します。
での作業 Calabash
gemをインストールしたら、次の作業はフレームワークフォルダを見つけて、それに付属するスケルトンを理解することです。
「calabash-android-0.9.0」フォルダを開きます。このフォルダは、C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0 のパスにあります。フォルダ名は、マシンにインストールした ruby/calabash のバージョンに応じて変わります。
フィーチャー スケルトン フォルダーを開きます。 この基本的な枠組みに注目してください。
- *.feature ファイルには、自動化するシナリオが含まれています。
- フィーチャーファイルで使用されるメソッドは、「step_settings」フォルダー内の *.rb ファイルに記述されています。
- 一般的なメソッド、環境設定、アプリのインストール、フックは「support」フォルダー内に配置する必要があります。
辞職してアプリを構築する
- Calabash-android resign *.apk
- Calabash-android build *.apk
再署名を行うと、開発者の署名がデバッグキーに置き換えられ、テストサーバーがアプリケーションを計測できるようになります。ビルドステップでは、以下のコンソール出力に示すように、そのテストサーバーが生成されます。
デバイスをシステムに接続します / エミュレータを開きます
接続されているデバイスを確認してください。 コマンドを入力します
adb devices
接続されたデバイスのリストが表示されます。デバイスが見つからない場合は、USBデバッグとペアリングの手順を ADB接続ガイド ほとんどのケースを解決する。
要素ロケーターを見つける方法
- コンソールを開きます。 コマンドを入力します。
calabash-android console "APK Path" start_test_server_in_background
- 上記のコマンドは、デバイス上でアプリを起動します。要素ロケーターを見つけるには、次のコマンドを使用します。
query "*"
これにより、現在の画面上のすべての要素ロケーターが表示されます。ビジュアルインスペクターを好むテスターは、同じ階層を相互チェックできます。 ウイオートマビューア.
Calabash プロジェクトの構造と定義済みの手順
gemフォルダを手動でコピーする代わりに、フレームワークが動作するプロジェクトを生成してくれます。プロジェクトディレクトリ内でジェネレーターを実行すると、標準の Cucumber すべてのレイアウト Calabash スイートが期待する。
calabash-android gen
生成されたツリーは、BDDスイートの3つの関心事を分離します。
- 特徴/ — ガーキンのシナリオ、1つ 。特徴 ユーザーの行動ごとにファイルを作成します。
- 機能/ステップ定義/ — バンドルされている calabash_steps.rb を含む、各 Gherkin 行に一致する Ruby メソッド。
- 機能/サポート/ ―環境設定と、あらゆるシナリオに対応してアプリケーションをインストール、起動、シャットダウンするためのフック。
同梱されている calabash_steps.rb は、見た目以上に重要なファイルです。このファイルには、すぐに使える英語の手順が多数含まれているため、カスタムメソッドを一つも記述することなく、最初のシナリオでボタンを押したり、テキストを入力したり、表示されている文字列を検証したりできます。カスタム手順が必要になるのは、これらの定型文では対応しきれないほど複雑な処理が必要になった場合のみです。
プロジェクトレベルの設定のうち、2つを事前に知っておくと便利です。スクリーンショットはデフォルトでは現在の作業ディレクトリに保存されますが、環境変数SCREENSHOT_PATHを指定すると別の場所に保存されるため、共有マシン上でビルド成果物を整理できます。システムダイアログや他のアプリケーションとやり取りするには、UIAutomator2バックエンドが必要です。UIAutomator2バックエンドは、start_test_server_in_background(with_uiautomator: true)で起動します。
新しいスクリプトの作成
フィーチャファイルを開き、次の行を実行します
Feature: Login feature Scenario: As a valid user I can log into my app When I press "Login" And I enter my username And I enter my password Then I see "Welcome to coolest app ever"
ステップ定義ファイルを開き、*.rb ファイルにメソッドを定義します。
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
テストプロジェクトを実行する
テストプロジェクトを実行するには、以下のコマンドを使用します
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber 実行される各ステップが出力され、正常に完了すると、ここに示されているシナリオとステップの合計が表示されます。
コマンドと Calabash エラーとその修正方法
初回実行時の失敗のほとんどは、テストサーバーが依存するパッケージングと権限ルールに起因するものであり、シナリオ自体に起因するものではありません。以下の表は、最も頻繁に報告される症状と、それに関する既知の原因を対応付けたものです。
| 症状 | 考えられる原因と解決策 |
| テスト開始と同時にアプリケーションがクラッシュする | APK には android.permission.INTERNET がありません。これはテストサーバーがコマンドを受け入れるために必要なものです。権限を宣言してください。 AndroidManifest.xml を再構築します。 |
| ボタンやテキストがタップに反応しない | targetSdkVersionが宣言されていません。アプリケーションがビルドされたSDKレベルを指定するuses-sdkエントリを追加してください。 |
| テストサーバーがアプリケーションに接続できません | APKにデバッグキーが再署名されていません。再署名コマンドを実行してから、再度ビルドしてから実行してください。 |
| 実行時にデバイスはリストされていません | USBデバッグが無効になっているか、ドライバが不足しています。まず、adb devicesコマンドの出力にシリアル番号が表示されていることを確認してください。 |
| ステップが未定義のステップエラーで失敗しました | Gherkin の記述は step_definitions 内の正規表現と一致しません。提案されたコードスニペットをコピーしてください。 Cucumber 印刷して実装します。 |
2つのマニフェストエントリで最初の2行を修正します。APKに再署名する前にこれらを追加してください。
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
タイムアウトエラーは、機能的な問題というよりは環境的な問題が原因であることが多い。エミュレータの動作が遅い、アプリケーションの起動が遅い、バックグラウンド同期が行われているといった状況では、画面がwait_forウィンドウを超えてしまうことがあるため、実際には正しい手順を書き換える前にタイムアウト時間を延長する必要がある。
Is Calabash 今もメンテナンスされていますか?最新のモバイルテストの代替案
Calabash 現在は積極的に開発されていません。 Microsoft iOS 11の最終版のサポートを終えた後、貢献を停止しました。 Android 8回のリリースを経て、このプロジェクトは現在、メンテナーのいないアーカイブされたオープンソースコードベースとなっています。既存のスイートは古いデバイスでも動作しますが、新規開発はサポートされているフレームワークで開始する必要があります。
| フレームワーク | Platform | に最適 |
| Appium | Android とiOS | クロスプラットフォームスイート Java, Pythonルビーまたは Javaスクリプト、そしてそれに最も近い代替品は Calabash フォーム。 |
| Espresso | Android の | Kotlin で書かれた高速なプロセス内テストまたは Java アプリケーション開発者自身によって。 |
| XCUITest | iOSのみ | ネイティブ Xcode スイート、引退した UIオートメーションフレームワーク. |
| マエストロとデトックス | Android とiOS | フレーク耐性とReact Nativeアプリケーションを目的とした、比較的新しいオープンソースプロジェクト。 |
BDDの習慣自体はきれいに移行します。Gherkinフィーチャーファイルはそのまま維持され、ステップ定義本体のみが変更されます。 Cucumber ドライバーの内部ではなく、ドライバーの上に配置されます。移行するチームは通常、フィーチャー ファイルを保持し、Ruby の手順を書き換えます。 Appium同じものを再利用する モバイルテスト デバイスマトリックスと 自動化テスト 既に稼働しているパイプライン。
















