11でのテスト周りの新機能を紹介します!iOSSWETグループ、iOS自動テスト領域チームの細沼(tobi462)です。11におけるテストまわりの新機能について紹介します!新しく追加された機能は大きく以下の3つです。letに相当する関数なお、メトリクスまわりも大きく進化していますが、本記事では割愛します。関連するWWDC19のセッションを紹介したいと思います。デバッグやメトリクスが解説されているセッションもあわせて紹介します。現在では日本語字幕にも対応しています。見られていない方は是非ご覧ください。Xcode(#413)今回のWWDC19において、自動テストをテーマとした最も大きなセッションです。Bundles」の解説がされます。盛り沢山なセッションとなっています。テストをまだ書いたことがない人にも是非見ていただきたい内容です。11で追加されたデバッグまわりの機能について、解説されたセッションです。上書きしてエミュレートする機能なども紹介されています。iOSアプリ開発者であれば是非とも抑えておきたい機能です。11の新機能について、解説されたセッションです。Plan」や「デバイス状態の上書き」といったデバッグ機能について紹介されています。いったセッションとあわせて見るとより理解が深められる内容かと思います。テスト以外についても多くの機能が追加されています。iOSアプリ開発者であれば必見のセッションといえます。Performance(#417)アプリのメトリクス取得について解説されたセッションです。新しく追加されたMetricKitなどについて解説されています。興味のある方は是非このセッションをご覧ください。11で追加されたテスト周りの新機能について、次の順で解説していきたいと思います。テスト実行における計画(テスト対象、コンフィギュレーション)を管理できる機能となっています。多言語(日本語、英語、など)のテストなどが紹介されていました。したテスト実行の管理をするための仕組みとしては煩雑でした。テスト実行の設定を直感的に分かりやすく管理できるようになりました。Plans(テスト計画)」という名に恥じない機能となっています。既存のスキーム設定から変換する方法が簡単です。Plans...」ボタンから行います。ダイアログが表示されるので、スキーム設定から変換する場合は一番上を選択します。Planに切り替わります。「Tests」と「Configurations」タブから構成される設定画面が表示されます。同様に「実行するテスト対象」を選択する画面となっています。前述した言語設定(日本語、英語など)にくわえカバレッジ取得の有無なども設定可能です。左側のサイドバーにその一覧が表示されるようになっています。Settings」の設定値を継承する仕組みとなっています。複数の設定を用意して実行する例として「日本語」と「英語」の2つのコンフィギュレーションを用意してテスト実行する例を紹介します。左下の「+」ボタンから「Japanese」と「English」というコンフィギュレーションを作成します。Language」の項目を「Japanese」と「English」に設定します。テストナビゲータのコンテキストメニューから実行するコンフィギュレーションを選べるようになります。すべてのコンフィギュレーションでテストを実行してみます。「Japanese」と「English」の2つのコンフィギュレーションで実行されていることが分かります。以下のアイコンからコンフィギュレーションで絞り込むことも出来ます。Plans用のオプションが追加されたので、ここで紹介したいと思います。Plansの一覧を表示するには-showTestPlansオプションが利用できます。Plansを指定する場合は-testPlanを利用します。テストプラン「AllLanguage」を実行なお、-testPlanを指定しないで実行した場合はスキーム設定でデフォルトになっているものが利用されます。次のオプションを利用することで限定することもできます。今まで独立していた以下のようなテスト結果を1つにパッケージするものです。JSONスキーマで仕様が明確化されたJSONでの取得も可能になっています。した変更により、テスト結果リソースの扱いがシンプルに行えるようになりました。それぞれの結果リソースが独立したファイルとして出力されていました。1つの.xcresultファイルとして集約されるようになりました。これまでに比べて「最大で4倍小さいサイズ」のフォーマットとなっているようです。中身の情報を取得できるようになっています。指定したパスに.xcresultファイルを出力することが出来ます。プロジェクトで設定されたDerivedDataフォルダ以下に出力されます。「Xcodeメニュー>File>Open」から.xcresultファイルを選択して開くことが出来ます。すると以下のキャプチャのように、テスト結果をXcode上から閲覧できます。前述したようにxcresulttoolを利用すると、中身のデータを取得することが出来ます。以下は、JSONフォーマットとして情報を取得する例です。json出力されるJSONを抜粋すると以下のようになっています。詳細にデータを取得できるのが分かります。JSONスキーマの取得は以下のコマンドで行えます。get同様に出力結果を抜粋すると以下のようになります。xcresulttoolから確認できます。以前からxccovコマンドによってカバレッジレポートの中身を参照できました。今回から.xcresultファイル形式もサポートされました。.xcresultファイルからカバレッジ確認する際は、以下のコマンドで行えます。ResultBundle.xcresult参考まで出力結果の画面キャプチャを貼っておきます。XCTestに追加されたXCTUnwrap()というAPIについて解説します。アンラップ処理を同時に行うAPIです。これまでは以下のようなコードを書く必要がありました。"Hello")}それがXCTUnwrap()を利用すると以下のように書けるようになります。感じた方もいるかもしれません。「どの箇所で失敗したのか」という情報が失われ原因調査にコストがかかるという欠点があります。今回追加されたXCTUnwrap()を利用していくとよいでしょう。中身を取り出す必要がない場合には以下のように記述できます。Bundle」「XCTUnwrap()」について紹介しました。開発における基盤を支える機能もしっかり進化していたことが分かります。ここ数年でかなり成熟してきたようにも感じます。十分にナレッジを得られていない部分もあると感じています。様々な知見を公開してくださると嬉しい限りです。SWETチームでは自動テストやCI/CDを活用する仕事に興味を持った方を募集しています。私や他のSWETメンバーに声をかけて頂くかたちでも大丈夫です。2019の20日目...2019-07-19SWETの2名が執筆した「iOSアプリ開発自動テストの教科書」が発売されましたこんにちは、SWETの細沼(@tobi462)です。JUnit5でUIテストを書こうこんにちは。SWETチームの@zhailujiaです。2019にSWETから3名が登壇してきましたこんにちは。(1)リンクプライバシーポリシースターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。