静的テストの基本
「テスト」というとプログラムを動かしてバグを探すイメージが強いですが、JSTQBでは コードを実行せずに検証する「静的テスト」 も非常に重要なテスト活動と定義されています。
静的テストとは?
Section titled “静的テストとは?”静的テストは、ソフトウェアの作業成果物(要件定義書、設計書、コード、テスト計画書など)を、実行することなく人間やツールで検査する手法です。
主な手法は以下の2つです。
- レビュー: 人間がドキュメントやコードを読んでチェックする活動(マニュアル作業)。
- 静的解析: ツールを使ってコード構造や規約違反を自動的にチェックする活動(LintツールやSonarQubeなど)。
静的テストの価値
Section titled “静的テストの価値”静的テストの最大のメリットは、 「欠陥を早期に発見できること(シフトレフト)」 です。 動的テスト(テスト実行)まで待たずに修正できるため、手戻りが少なく、修正コストが圧倒的に安く済みます。
また、動的テストでは見つけにくい欠陥(保守性の低さ、コーディング規約違反、セキュリティの脆弱性など)を発見するのにも適しています。
静的テストと動的テストの違い
Section titled “静的テストと動的テストの違い”この2つは補完関係にあり、どちらか一方だけでは不十分です。
| 項目 | 静的テスト (Static Testing) | 動的テスト (Dynamic Testing) |
|---|---|---|
| 対象 | 作業成果物(ドキュメント、コード) | 実行可能なソフトウェア |
| 発見するもの | 欠陥 (Defect) そのもの | 欠陥によって引き起こされる 故障 (Failure) |
| 主な目的 | 欠陥の検出、品質の評価、保守性の向上 | 動作の確認、性能の計測、ユーザー視点での検証 |
| タイミング | 開発の初期段階から実施可能 | コードが完成し、ビルドされた後に実施 |
静的テストは「バグの原因」を直接見つけ、動的テストは「バグの結果(症状)」を見つける、というイメージです。