![見出し画像](https://assets.st-note.com/production/uploads/images/151103967/rectangle_large_type_2_e5de0870e0b12401ab454bba569b4eaa.png?width=1200)
Appleの公式ドキュメント「Test coverage」の紹介
Appleは以前に比べてドキュメント周りが(多少)整備されつつあります。
かつて「Testing Your Apps in Xcode」というドキュメントを公開しており、そこにはテストレベルに言及して、どのように実装していくかについて(軽く)書かれていました。
その時に紹介した記事は次のとおりです。
今、その時のアドレス(beforeのアドレス)にアクセスするとafterのページに遷移するようになっています。
before
after
以前のページと同等と思われるのは次のページになっています。
以前と同様に、ユニットテスト、結合テスト、UIテストについてと、パフォーマンステストについて言及しています。
「Test coverage」についての紹介
せっかくなので、本稿では、新しいこの「Test coverage」のページについて紹介しつつ、私からの補足情報を追加していきます。
概要
内容を要約すると、次のようなことが書かれています。
そこまで文量はなく、テストについての起点となるページとなっています。
ソフトウェア開発をおこなう上で、コードをテストすることは重要です。
そのために、Xcodeのフレームワークや機能を使用してテストを実装し、コードカバレッジを理解し、テスト結果を評価していきます。
iOSアプリ開発においては、Xcode16からSwift Testingが利用できるようになっていて、UIテストでは今まで通りXCTestが利用できます。
効果的なテスト戦略は、ユニットテスト、結合テスト、UIテストを組み合わせることです。
UIテストは、アプリが期待通りに動作することを確認できますが、実行時間がかかります。UIテストだけに頼るのではなく、テストをバランスよく組み合わせるのが望ましいです。そして、性能面においてのテストも重要であり「パフォーマンステスト」も実装することが大事になってきます。
上述した文にあるように、iOSアプリ開発では、UIテストには現行のXCTestを利用することができます。
UIテストのAPIについても適宜追加されており、Xcode16でも追加されています。
また、Xcode16からSwift Testingという今までのXCTestとは違って昨今のTesting Framework相当の機能を利用できるTesting Frameworkが使えるようになりました。
Swift Testingについては次もチェックしてみてください。
テストピラミッドについて
このページにはテストピラミッドの図が記載されていますが、かつてAppleが載せていたカラフルなテストピラミッドではなく、普通の色合いのテストピラミッドなのが、ある意味特徴的です。
テストピラミッドの一般的なことが記載されていますが、モバイルにおいて特徴的なのは「パフォーマンステスト」についても言及していることです。
実行される端末の豊富さもあり、パフォーマンステストが重要になってきますし、そのための機能はiOSに限らずAndroidでも提供されています。
そのAndroidですが、かつてテストピラミッドについて記載されていたAndroidのドキュメントページには今は記載されなくなっています。
Apple(iOS)のドキュメントに限らず、Google(Android)のドキュメントも時代とともにアップデートされていっています。
本ページにおけるリンク先
本ページでリンクされているドキュメントは次になります。
他にもありますが、ここに載せているのは「Test Development」の項目のみになります。
このページについても別途紹介できればと思いますが、今回はかんたんな説明のみを記載しておきます。
本稿の最初のほうに書いているページです。
ユニットテスト、結合テスト、UIテストについてと、パフォーマンステストについて言及しています。
既存のコードに対してどのようにユニットテストを実装していくかについてコードを元に説明をしてくれています。
Xcodeによるコードカバレッジの結果を元に、どこがテストされていてされていないかについての見方について説明をしてくれています。
Appleはここ数年でコードカバレッジの見せ方について改良をおこなっています。
ここ数年でTest Planをベースにいろいろとテストの実行の仕方が設定できるようになりました。
それらについて、Xcode16で追加されたタグによるテストの対象、非対象にすることについても説明してくれています。
なお、サンプルコードが「Swift Testing」と「XCTest」の両方で書かれているのが良いですね。
最後に
Apple(iOS)にしろGoogle(Android)にしろドキュメントが色々と用意されています。
その中には、テストに関するドキュメントも(以前と比べると)多くあります。
ソフトウェアテストにまつわることは日に日に変わっていっています。
それらの時代の流れにあわせて、(ちょっと遅れてはいますが)これらのドキュメントは更新されていったりしています。
※ 特にTestingにまつわる新機能の提供があれば、更新されます。
なので、一度読んで終わりとせずに、定期的にチェックすると面白いかもしれません。