テスト概要

テストの種類

単体テスト(Unit Test)

単体テストとは、クラスや関数単位で行うプログラムのテストである。主に設計どおりに動作するか、論理構造が適切かを確認する。

  • 機能確認テスト
    • 1つのモジュールが設計または仕様どおりに動作するかを確認するテスト
  • 制御フローテスト
    • プログラムの論理構造に従って、「命令」や「分岐」などが動作するかを確認するテスト
  • データフローテスト
    • データや変数が「定義」「使用」「消滅」の順に実行されるかを確認するテスト

結合テスト(Integration Testing)

結合テストとは、単体テストで検証したプログラムを組み合わせて実行するテストである。

  • 状態遷移テスト
    • 状態遷移図に基づいて動作を確認するテスト

機能テスト

機能テストとは、結合したプログラムを1つの機能としてテストすることである。

  • 機能確認テスト

システムテスト

システムテストは、個々のプログラムや機能を結合したプログラムが仕様書どおりに動作するかを検証するためのテストである。

  • 確認テスト

    • 回帰テスト
      • プログラム機能を修正または変更した後、変更された部分が正しく動作するかを確認するテスト
    • デグレードテスト(Degrade test)
      • プログラム機能を追加または変更したことで、既存の機能が引き続き動作するかを確認するテスト
  • 評価テスト

    • セキュリティテスト(Security Test)
      • 悪意ある外部からの攻撃に対応できるか、脆弱性があるかを確認するテスト
    • ユーザビリティテスト(Usability Test)
      • 視覚的に見やすく、ユーザーが操作、学習、理解しやすいかを確認するテスト
    • 障害許容性テスト
      • 障害が発生した場合に指定された機能が維持されるかを確認するテスト
  • 負荷テスト

    • 性能テスト(Performance Test)
      • 処理能力が仕様書を満たしているかを確認するテスト
      • システムの要素が特定の状況でどの程度の性能を示すかを測定するテスト
    • ロングランテスト
      • 長期間の連続稼働でも処理能力や稼働率に問題が発生しないかを確認するテスト
    • 負荷テスト(Load Test)
      • 極端に高い負荷がかかる状況でも稼働できるかを確認するテスト
      • 特定の負荷を限られた時間だけ与え、Webアプリケーションに異常がないかを把握するテスト
    • 持久テスト(Endurance Test)
      • Load Testと似ており、長期間負荷をかけて行うテスト。Agingテストともいう
    • ストレステスト(Stress Test)
      • 負荷の限界点を見つけるために、段階的に負荷を上げながら進めるテスト
    • ピーク負荷テスト(Peak Test)
      • 一瞬だけ耐えきれないほどの負荷を与え、Webアプリケーションが停止せず、正常に動作して回復するかを見るテスト

ユーザーテスト

  • 受け入れテスト
    • 対象システムがユーザーの要求を満たすかを確認するテスト
  • 運用テスト
    • 実際の運用環境でシステムが正常に動作するかを確認するテスト
  • アルファテスト
    • 開発者以外の人が操作し、欠陥があるかを確認するテスト
  • ベータテスト
    • 開発およびリリース前の製品を、開発者以外の一般ユーザーが操作し、欠陥がないかを確認するテスト

テスト技法

ホワイトボックステスト

ホワイトボックステストは、システムの内容を理解し、意識しながら行うテストを意味する。主に単体テストで使用され、次のテストに分類される。

  • 制御フローテスト
  • データフローテスト

ホワイトボックステストを実行するときは、論理構造、つまり処理フローや実行順序を可視化する必要がある。その方法の1つがフローチャートである。

テストカバレッジ

テストカバレッジとは、システムまたはソフトウェアのテストについて論じるとき、テストがどれだけ十分であるかを表すものである。つまり、実行したテストがテスト対象をどれだけカバーしたかを比率で表す。

代表的なコードカバレッジは次のとおりである。

  • ステートメントカバレッジ(Statement Coverage)
    • ライン(Line)カバレッジとも呼ばれる。コードの1行が1回以上実行されれば満たされる。
  • デシジョンカバレッジ(Decision Coverage)
    • ブランチ(Branch)カバレッジとも呼ばれる。すべての条件式がtrue/falseを持てば満たされる。
  • コンディションカバレッジ(Condition Coverage)
    • ここでの条件はすべての条件式を指す。内部条件がtrue/falseのケースを満たすかを見る。

その他にもコードカバレッジは存在する。

  • 条件/判定カバレッジ(Condition/Decision Coverage)
  • 改良条件/判定カバレッジ(Modified Condition/Decision Coverage)
  • 複合条件カバレッジ(Multiple Condition Coverage)
  • 経路カバレッジ(All Path Coverage)

ブラックボックステスト

ブラックボックステストは、ソフトウェアの内部構造や動作原理を知らない状態で動作を検査する方式である。

ホワイトボックステストを用いた単体テストが終わると、システムの内部構造を意識しないテストを進める。
主に機能テストとシステムテストに分類される。

ブラックボックステストでは、次の順序でテストを実行する。

  1. 試験の目的を定義する。
  2. 機能を洗い出す。
  3. テスト観点を抽出する。例: フォームで投稿された値を確認する。
  4. テスト観点を機能に割り当てる。
  • 正常系ケース
  • 異常系ケース
  • 組み合わせたケース
  • etc.
  1. テスト技法を決定する。

参考