自動テストとは?
自動テストとは、ソフトウェアを使ってコードに対するテストを自動的に実行し、手作業なしに期待どおりに振る舞うかを検証することです。
自動テストは、アプリケーションを手動でクリックして回る遅くエラーの起きやすい作業を、数秒で振る舞いを検証するコードに置き換えます。頻繁で自信のある変更を可能にするセーフティネットであり、CIを価値あるものにするエンジンです。
それは何か
自動テストとは、ソフトウェアの一部を動かし、結果が期待どおりであることをアサートする小さなプログラムです。テストフレームワークはそのようなテストを多数実行し、passまたはfailを報告し、いずれかが失敗すれば非ゼロで終了します。これはまさにCIが変更をゲートするために必要とするシグナルです。
主な種類
- ユニットテスト: 単一の関数やコンポーネントを分離して検証します。
- 統合テスト: 各部品が連携して動くことを検証します。
- エンドツーエンドテスト: アプリを通したユーザーフロー全体を検証します。
- smoke test: 基本がまだ機能するかの素早いチェック。
実例
価格に税を加える関数には、10パーセントの税率で入力100が110を返すことをアサートするユニットテストがあります。誰かが価格計算のコードを変更するたびに、テストはミリ秒単位で実行され、計算が壊れれば即座に失敗します。顧客が誤った合計を目にするずっと前にです。
なぜCI/CDを支えるのか
継続的インテグレーションは、"この変更は何かを壊したか?"という問いへの信頼できる答えに依存します。自動テストはその答えを数分で提供します。テストがカバーする範囲が広いほど、自信を持ってマージしdeployでき、それが継続的デリバリーとデプロイメントを安全にします。
良い実践
- 少数の遅いエンドツーエンドテストより、多数の速いユニットテストを優先します。
- テストを独立させ、並列で実行できるようにします。
- 失敗を明確にし、原因が一目でわかるようにします。
- releaseの前だけでなく、変更のたびにスイートを実行します。
重要なポイント
- 自動テストは手作業なしに数秒で振る舞いを検証します。
- ユニット、統合、エンドツーエンド、smoke testはそれぞれ異なる目的に役立ちます。
- 信頼できるテストこそがCI/CDを安全にします。
関連ガイド
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 Integration Testing?What is integration testing? Learn how it verifies that components work together, how it differs from unit te…
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 Test Automation?What is test automation? Learn how automating test execution replaces manual checking, how it works, an examp…