iOS 自動テスト Xcode UIフレームワーク
⚡ スマートサマリー
iOS 自動化テスト Xcode テスト対象アプリケーションに対するユーザーインターフェースの操作を記録し、再生します。設計、テスト、実装、そしてすべてのケースが合格するまで、テスト駆動型のサイクルに従って操作を繰り返します。
を使用した iOS 自動テスト Xcode
iOSアプリケーションの品質を保証するためには、下図に示すテスト駆動開発プロセスに従う必要があります。
テスト駆動開発 (TDD) は、 テスト iOSアプリケーションテストに適用されるモデルであり、より広範な実践の中に位置づけられる。 モバイルテストこのモデルでは、テスターは以下の4つの段階に従う必要があります。
- デザイン: テストしたい内容を明確にし、テストケースを設計してください。
- テスト: すべてのテストを実行し、テストケースが失敗するかどうかを確認してください。
- 実装: Revコードを修正し、テスト失敗の原因となったバグを修正してください。
- もう一度テストしてください: テストが失敗した場合は、設計段階までロールバックします。すべてのテストケースが合格した場合は、コードはテスト対象の要件をすべて満たしています。
セットアップ Xcode UIテストのプロジェクト
iOSテストプログラムを作成するにはMacが必要です。Macには以下のソフトウェアが既にインストールされている必要があります。
- OS X ―Mac用のオペレーティングシステム。
- Xcode IDE ― iOS向け開発ツール。
- 自動テストフレームワーク — UIオートメーション、OCUnitなど。
- iOS SDK 4 以上です。
⚠️ バージョンに関する注記: 上記の前提条件は、以下の 2 つのチュートリアルが書かれた時代のツールチェーンについて説明しています。現在の Mac では、 Xcode XCTestとXCUITestフレームワークは同梱されており、別売りのUIオートメーションツールはインストールに含まれなくなりました。元の手順はフレームワークの動作方法を説明するために以下に記載されていますが、最新の同等の手順については後述します。
UI オートメーション フレームワークを使用して iOS オートメーションを作成する方法
以下の8つの手順では、オートメーションツールを使用してスクリプトを記録し、テスト対象のアプリケーションに対してそれを再生します。
ステップ 1) インストゥルメントを起動する
Xを開くCode -> 開発者ツールを開く -> インストゥルメント
ステップ 2) 自動化インストゥルメントを追加する
「計測器」ウィンドウで、「オートメーション」計測器を選択します。
テストスクリプトを作成するには、 テストシナリオ または、手動でプログラムすることもできます。
ステップ3) 赤いボタンを押します
楽器が起動しました。録音をすぐに停止してください。録音を開始するには、赤いボタンを押してください。
ステップ 4) 新しいスクリプトを作成する
スクリプトウィンドウで、[追加] > [作成] をクリックして新しいスクリプトを作成します。
ステップ5) ターゲットを選択します
あなたは今、 Trace ウィンドウを使用します。[選択] を使用します。 Target プルダウンして、アプリのデバッグバージョンに移動してください。
この場合、Appleのサンプルは シンプルドリルダウン このアプリはテスト対象アプリケーションとして使用されます。そのGUIは以下のとおりです。
ステップ 6) スクリプトの記録を開始します
ツールの上部または下部にある記録ボタンを押して、スクリプトを記録します。
これで、テスト対象のアプリケーションでUI操作を実行でき、そのスクリプトが記録されます。
ステップ 7) スクリプトを確認する
スクリプトを表示するには、 Traceログ/エディターログのドロップダウンメニューを開き、スクリプトログビューに切り替えます。
記録されたスクリプトが表示されます。
ステップ 8) スクリプトを再生する
再生ボタンを押してください。スクリプトが実行され、ログが表示されたら停止できます。
⚠️ 歴史的注記: これら8つのステップで使用された自動化機器は、 Xcode 8以降削除されたため、現在のバージョンには存在しません。 Xcode インストール手順。これらの手順は、フレームワークの動作記録としてここに残されています。新規作業の場合は、このページの下部にある XCUITest のチュートリアルを参照してください。
OCUnitフレームワークを使用してiOSオートメーションを作成する方法
2番目のルートではテストを内部に配置します Xcode Instrumentsの内部ではなく、プロジェクト自体が対象となります。
ステップ1)開始 Xcode IDE、単体テストバンドルターゲットの追加
ステップ2)新しい単体テストバンドルの名前を記入します 上の図に示すように、次に「完了」をクリックします。
ステップ3)単体テストをアクティブターゲットにする
ステップ4)テストクラス用のグループを追加する
ステップ 5) 単体テスト クラスを追加する
ステップ6)さあ、実装を開始しましょう
OCUnitはObjective-C言語を使用してテストプログラムを作成するため、開発者はその言語を知っている必要があります。 Xcode バージョンが出荷されます 単体テスト 代わりに XCTest を介して、Objective-C と Swiftしかし、これら6つのステップで示されているターゲットとクラスの構造は変更されていません。
UIAutomationとXCUITest:何が変わったのか
上記で使用した2つのフレームワークはどちらもAppleのツールチェーンの旧世代に属するため、それらを置き換えたものとその理由について正確に説明しておく価値がある。
| 側面 | UIオートメーション(ツール) | XCUITest |
| ステータス | 非推奨 Xcode 8 以降のリリースでは削除されました | AppleがサポートするUIテストフレームワーク |
| テストが存在する場所 | 楽器内のスクリプト trac電子文書 | UI テストバンドルターゲット内 Xcode プロジェクト |
| 言語 | Javaスクリプト | Swift またはObjective-C |
| テストランナー | 自動化機器 | XCTestは、ユニットテストと同じランナーです。 |
| 継続的インテグレーション | ぎこちない - 楽器を通して駆動 | コマンドラインから単体テストと並行して実行します。 |
| レコーディング | 楽器ツールバーの録音ボタン | 録画ボタン Xcode エディタは、 Swift |
実際には、XCUITest スイートは通常のプロジェクト ソース コードです。コード ベースの他の部分と同様にレビュー、バージョン管理、実行されます。これが記録されたテストの主な理由です。traceモデルが消えた。
XCUITest を使用した iOS UI テストの書き方
8 つの Instruments ステップの現代版は短い。以下の構造は、同じ録音して再生するというアイデアを反映しているが、出力はソース ファイルであり、 trace.
- 対象を追加します。 In Xcode ファイル > 新規 > を選択 Target UIテストバンドルテンプレートを選択するか、新しいプロジェクトを作成する際にテストを含めるオプションにチェックを入れてください。
- 生成されたテストクラスを開きます。 Xcode 空のセットアップメソッドとテストメソッドを持つXCTestCaseサブクラスを作成します。
- テスト対象のアプリを起動します。 XCUIApplicationインスタンスを作成し、そのインスタンスに対してlaunchメソッドを呼び出すと、アプリが別のプロセスで起動します。
- 問い合わせて、行動を起こす。 要素クエリを使用して、ボタン、テーブル、静的テキストなどの要素にアクセスし、それらの要素に対してtap、typeText、またはswipeを呼び出します。
- アサート。 XCTAssertを使用して、アクション実行後に期待される要素が存在することを確認します。
- 実行します。 テストを実行する Xcode テストナビゲーター、またはコマンドラインから実行することで、同じテストスイートを継続的インテグレーション環境で実行できます。
最小限のテストは以下の形式に従います。
import XCTest final class AppUITests: XCTestCase { func testTappingFirstRowShowsDetail() { let app = XCUIApplication() app.launch() // act on the first row of the list app.tables.cells.element(boundBy: 0).tap() // verify that the next screen appeared XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5)) } }
レコーダーは依然として存在します。テスト メソッド内にカーソルを置き、エディタの記録ボタンを押すと、これらのクエリが自動的に生成されます。これは上記のステップ 6 の直接の子孫です。より広範な原則は、 自動化テスト 変更せずに適用する。
UI自動化サンプル Code
この記事にはいくつかのソースコード例が含まれています。これらはチュートリアルをより明確かつ迅速に理解するのに役立ちます。
UI自動化サンプル — UIオートメーションデモ用のテストスクリプト。















