この記事を読むのに必要な時間:およそ 1 分
自動テストが注目され始めた
アプリの開発において,品質を担保するために欠かせない工程がテストです。アプリ開発におけるテストには,アプリの各機能が正しく動くかテストする「単体(ユニット)テスト」や,ユーザにとってよりよいものとして動くかテストする「UIテスト」などがあります。自動テストとは,このようなテストをその名のとおり自動で行うものです。
開発者たちの間では,この自動テストが注目され始めています。iOSアプリの開発始まってから10年が経ち,昔に比べてアプリの開発はどんどん複雑になり,対応するべきiOS端末の数もどんどん増えてきました。そんな中で,開発者やテスターによる手動のテストだけでは,開発スピードや品質を保つことが難しくなってきてしまいました。
なぜ,テストを自動化するか
自動テストを取り入れると,開発のスピードアップと品質向上につながります。それは,自動テストが以下の4つを得意としているからです。
- 素早いテストの実行
- テストのくり返し
- 人為的ミスの軽減
- 属人性の排除
自動的にテストを行えることで,開発に必要なテストをスピーディにくり返し行えるので,開発スピードが上がりまます。また,自動化されたテストは,手動テストで起こり得る人為的なミスを減らしてくれます。さらに,自動テストを書くことで,テストや開発仕様を外部に書き出すので,プログラムの属人性を排除し,メンテナンス性や開発効率をアップできます。
テストピラミッドを知る
自動テストの実装するうえで大切なことを,ここでは1つだけ紹介しましょう。
まず大切なことは,テストピラミッドを意識することです。テストピラミッドとは,Mike Cohn氏が著書『Succeeding with Agile』の中で紹介したもので,各種テストの時間やコストの理想的なバランスを表しています。
図 テストピラミッド
テストピラミッドでは,下層のユニットテストほど多く,上層のテストほど少ないテストケースで担保するのがよいとされています。
一般的に,UIテストなど上層のテストほど担保できる範囲は広くなります。しかし,すべてのテストをUIテストで行うのは,開発のコストや安全性の面からよくありません。開発コストが高い上位のテスト量が増えてしまうと,逆ピラミッドの形になってしまい,不安定な状態が続いてしまいます。
テストピラミッドのように,できるだけ下位のテストで担保できる部分を増やし,上位のテスト量を少なくすることが,安定したテストにつながります。テストを自動化する際にも,このテストピラミッドの安定性を意識することが大切です。
iOSアプリ開発の自動テストを学ぶ
自動テストをもっと学ぶには,iOSテスト標準のXCTestによるユニットテストやUIテスト,サードパーティのOSSの活用,fastlane・アプリ配信サービスデバイスファームを駆使したCI/CDなど,広範囲の技術を押さ得ることが重要です。本書「iOSアプリ開発自動テストの教科書 ~XCTestによるユニットテスト・UIテストから,CI/CD,デバッグ技術まで」は,「iOSアプリ開発における自動テストの地図」になるように,自動テストにかかわる広範囲の知識・ノウハウを押さえています。「これからは自動テストもしっかりと押さえないと」「開発をもっとスピードアップしたい」「アプリの品質をしっかりしたい」というエンジニアにお勧めの1冊です。