新刊ピックアップ

開発にスピードと品質をもたらす自動テストとは?

この記事を読むのに必要な時間:およそ 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冊です。