テスト自動化とは何か?
テスト自動化とは、人がテストを手で実行するのではなく、ソフトウェアを通じてテストを実行するプラクティスです。
手動テスト、つまり人がアプリをクリックして回り結果をチェックすることはスケールしません。遅く、一貫性がなく、繰り返すのが退屈です。テスト自動化はその作業を機械に渡し、テストが即座に、同一に、そして望むだけ頻繁に実行されるようにします。
何であるか
テスト自動化とは、テストを手動で実行するのではなく、コードとして書き、フレームワークやツールで実行することを意味します。同じスイートを、ノート PC で、CI サーバーで、各コミットで、実行ごとの人的時間なしに実行できます。投資は最初にかかり、見返りは無制限の反復です。
どう機能するか
期待される振る舞いを自動テスト、unit、integration、end-to-end としてエンコードし、test runner がそれらを実行して結果を報告します。CI では、その runner は各変更で自動的にトリガーされ、失敗するテストは変更が進むのをブロックします。テストは面倒な作業ではなくゲートになります。
例
かつて各リリースを手動で検証するのに午後いっぱいかけていたチームが、今では各 pull request で同じチェックを数分で実行する自動スイートを持っています。疲れた手動テスターならすり抜けていたバグが、導入された瞬間に捉えられます。
なぜ CI/CD に不可欠か
継続的インテグレーションとデリバリは、「この変更は安全か?」への速く信頼できる答えに依存します。各変更に対してその答えを、数分で、人的ボトルネックなしに届けられるのは自動テストだけです。テスト自動化なしには、本当の CI はなく、空の pipeline を回す build サーバーがあるだけです。
何をまず自動化するか
- 重要なユーザー経路のような、高価値で頻繁に実行されるチェック。
- 手動でやると退屈でエラーの起きやすいもの。
- 修正した各バグに対する regression チェック。
- 秒あたり最良の見返りを与える、速い unit test。
重要なポイント
- テスト自動化は手動ではなくソフトウェアを通じてテストを実行する。
- 各変更で即座かつ反復可能な検証を可能にする。
- これなしには真の継続的インテグレーションは不可能である。
関連ガイド
What Is Automated Testing?What is automated testing? A beginner explainer on tests that run themselves, the main types, an example, why…
What Is a Unit Test?What is a unit test? A beginner explainer on testing one small piece of code in isolation, how it works, an e…
What Is End-to-End Testing?What is end-to-end testing? Learn how E2E tests verify whole user journeys through a real system, an example,…
What Is Continuous Integration?What is continuous integration? A plain-English explainer covering what CI is, how it works, a worked example…