Skip to content

静的テストの基本

「テスト」というとプログラムを動かしてバグを探すイメージが強いですが、JSTQBでは コードを実行せずに検証する「静的テスト」 も非常に重要なテスト活動と定義されています。

静的テストは、ソフトウェアの作業成果物(要件定義書、設計書、コード、テスト計画書など)を、実行することなく人間やツールで検査する手法です。

主な手法は以下の2つです。

  1. レビュー: 人間がドキュメントやコードを読んでチェックする活動(マニュアル作業)。
  2. 静的解析: ツールを使ってコード構造や規約違反を自動的にチェックする活動(LintツールやSonarQubeなど)。

静的テストの最大のメリットは、 「欠陥を早期に発見できること(シフトレフト)」 です。 動的テスト(テスト実行)まで待たずに修正できるため、手戻りが少なく、修正コストが圧倒的に安く済みます。

また、動的テストでは見つけにくい欠陥(保守性の低さ、コーディング規約違反、セキュリティの脆弱性など)を発見するのにも適しています。

静的テストと動的テストの違い

Section titled “静的テストと動的テストの違い”

この2つは補完関係にあり、どちらか一方だけでは不十分です。

項目静的テスト (Static Testing)動的テスト (Dynamic Testing)
対象作業成果物(ドキュメント、コード)実行可能なソフトウェア
発見するもの欠陥 (Defect) そのもの欠陥によって引き起こされる 故障 (Failure)
主な目的欠陥の検出、品質の評価、保守性の向上動作の確認、性能の計測、ユーザー視点での検証
タイミング開発の初期段階から実施可能コードが完成し、ビルドされた後に実施

静的テストは「バグの原因」を直接見つけ、動的テストは「バグの結果(症状)」を見つける、というイメージです。