【ISTQB /JSTQB FL 4.0解説】静的テストと動的テストの違いとは?わかりやすく解説!

JSTQB Fundation Level 4.0

ISTQB Foundation Level 4.0 チュートリアル第24回では、

静的テスト(Static Testing)」と「動的テスト(Dynamic Testing)」の違いについて学びます。

この2つはどちらも欠陥(Defects)を発見するためのテスト手法ですが、

アプローチの方法と検出できる欠陥の種類が大きく異なります。

この記事では、両者の特徴・違い・見つけやすい欠陥の例を、初心者向けに整理して解説します。


🔍 静的テストと動的テストの基本的な違い

比較項目

静的テスト(Static Testing)

動的テスト(Dynamic Testing)

目的

ドキュメントやソースコードを「読む」ことで欠陥を発見する

実際に「実行」して挙動を確認する

対象

要件定義書、設計書、ソースコード、ユーザーマニュアルなど

実行可能なソフトウェア(プログラム、アプリ)

実施タイミング

コーディング前・実装初期

ソフトウェア完成後、実行可能になってから

主な手法

レビュー、ウォークスルー、静的解析

単体テスト、結合テスト、システムテストなど

メリット

早期に欠陥を発見でき、修正コストが低い

実際の動作を確認できる

欠点

実行時のエラーは検出できない

実行しないと欠陥が見つからないためコストが高い

💡 静的テストの特徴とメリット

静的テストは、ソフトウェアを実行せずに行うテストです。

レビューや静的解析ツールを活用して、ドキュメントやソースコードの品質をチェックします。

主なメリットは以下の通りです。

  • 早期に欠陥を検出できる:開発初期の段階で問題を見つけることで、修正コストを大幅に削減できる。

  • ドキュメント上の不整合や矛盾を発見できる:実装前に設計や要件の問題を防ぐ。

  • 実行不要なのでリスクが少ない:コードを動かさずにレビューできる。

例:

「要件書に曖昧な表現がある」「変数が未定義」「コードの複雑度が高すぎる」などは、静的テストで発見可能です。


⚙️ 動的テストの特徴とメリット

一方、動的テストは実際にソフトウェアを動かしてテストする方法です。

主に機能やUIの動作確認、パフォーマンス、セキュリティなどを評価します。

特徴としては:

  • ユーザー視点の不具合発見に有効(操作時のエラーや挙動不良など)

  • 非機能要件(性能・セキュリティ)の検証が可能

  • 実行結果から欠陥を特定する(失敗=欠陥の存在を示す)

ただし、欠陥の原因を突き止めるにはRoot Cause Analysis(根本原因分析)が必要となるため、

静的テストよりも発見~修正までに時間がかかるというデメリットもあります。


🧭 静的テストと動的テストの関係性

両者は「どちらか一方だけを使う」ものではありません。

静的テストと動的テストは補完関係にあり、

プロジェクト全体の品質を向上させるためには、両方を適切に組み合わせることが重要です。

  • 静的テスト → 設計段階での欠陥を早期に発見

  • 動的テスト → 実行段階での不具合を検出

この2つをバランスよく実施することで、テストコストの最適化品質の向上が実現します。


🧩 静的テストで見つかりやすい欠陥の例

静的テストでは、主に次のような欠陥を効率的に見つけることができます。

1️⃣ 要件関連の欠陥

  • 曖昧な表現、不整合、重複、矛盾、抜け漏れ

2️⃣ 設計関連の欠陥

  • 非効率なデータベース設計

  • 不適切なモジュール構造や高い結合度(coupling)

3️⃣ コーディング関連の欠陥

  • 未定義または未宣言の変数

  • 到達不能コード、重複コード

  • 複雑すぎるロジック構造

4️⃣ コーディング規約違反

  • 命名規則の不統一、コーディングスタイルの逸脱

5️⃣ インターフェース関連

  • APIパラメータの型・順序の不一致

  • 呼び出し先の仕様とのミスマッチ

6️⃣ セキュリティ関連

  • バッファオーバーフローなどの脆弱性

7️⃣ テストベースやトレーサビリティの欠陥

  • 要件とテストケースのリンクが欠落している

  • 受け入れ基準を満たしていないテストケースの存在


🧠 まとめ:静的と動的、どちらも欠かせない!

静的テストと動的テストは、まったく異なるアプローチを取りますが、

どちらもソフトウェア品質向上に不可欠なテスト手法です。

  • 静的テスト → 「読む」ことで欠陥を早期発見

  • 動的テスト → 「実行」して動作を確認

プロジェクトの初期段階から両方を組み合わせることで、

欠陥の早期発見・修正コストの削減・品質向上という好循環を生み出すことができます。

コメント

タイトルとURLをコピーしました