テスト工程

  1. 単体テスト
    • モジュールごとに行うテスト
  2. 結合テスト
    • 複数のモジュールを組み合わせて行うテスト
  3. 機能テスト
    • 機能ごとに行うテスト
  4. システムテスト
    • システム・サービス全体で行うテスト
    • 似たものにE2E (End to End) テストがある
      • システムテストは機能や仕様の単位で行うのに対し、E2Eテストはユーザ視点のユースケース単位で行う

注目する箇所による分類

  • ブラックボックステスト
    • 入出力のみによるテスト
  • ホワイトボックステスト
    • 論理構造が正しいか確認するテスト

動作の有無による分類

  • 静的テスト
    • ソフトウェアを動作させずに行うテスト
    • ドキュメントのレビューを含む
  • 動的テスト
    • ソフトウェアを動作させて行うテスト

実施する方法による分類

  • 自動テスト
    • テスト対象のソフトウェアをあらかじめ用意したスクリプトから実行して行うテスト
  • 手動テスト
    • テスト対象のソフトウェアを人の手によって実行して行うテスト
    • モンキーテスト
      • テスト仕様を作成せずに、テスト対象の仕様を知らないテスターが、目的と達成基準を定めずに思いつくまま実施されるテスト
    • アドホックテスト
      • テスト仕様を作成せずに、テスト対象の仕様を知っているテスターが、目的と達成基準を定めずに自分の経験から価値があると思われることを実施するテスト
    • 探索的テスト
      • テスト仕様を作成せずに、テスト対象の仕様を知っているテスターが、目的と達成基準を定めて自分の経験から価値があると思われることを実施するテスト
    • スクリプトテスト
      • あらかじめ作成したテスト仕様にしたがって実施するテスト
    • ユーザテスト
      • 一般ユーザが実際に試すテスト
      • 初期段階で実施するものを特にアルファテストという
        • 主に開発関係者や社内のメンバーで行うことが多い
      • リリース前の調整版で実施するものを特にベータテストという
        • さらに特定のメンバーでのみ行う場合をクローズドベータテスト、メンバーの制限なく行う場合をオープンベータテストと細分化される

テストサイズによる分類

  • Smallテスト
    • 単一プロセス内で実行されるテスト
    • 実行時間が短いため、CI での実施に適する
  • Mediumテスト
    • 単一マシン内で実行されるテスト
  • Largeテスト
    • ネットワークアクセスを伴うテスト
    • 依存しているサーバやネットワークがダウンしたり遅延したりすることで、テストがタイムアウトする可能性を考慮する必要がある

理想的な割合はSmallテストが80%、Mediumテストが15%、Largeテストが5%ほどであり、テストピラミッドと呼ばれる。
逆にLargeテストや手動テストが多いとアイスクリームコーンと呼ばれるアンチパターンになる。

その他

  • 状態遷移テスト
    • 状態遷移図・状態遷移表に基づくテスト
  • リグレッションテスト
    • ソフトウェアの修正後にエンバグしていないか確認するテスト
  • スモークテスト
    • テストを実施するに値する品質であるかを確認するテスト
    • テストケース全体から、主要機能のテストのみを実施する
    • そもそもアクセスできない、ログインできない、などによって他の多くのテストを実施できない状況を防ぐ
  • 非機能テスト
    • 機能以外の品質に関するテスト
    • セキュリティテスト
      • 脆弱性が存在しないか確認するテスト
    • ユーザビリティテスト
      • ユーザの使いやすさに関するテスト
    • 負荷テスト(ストレステスト)
      • ソフトウェアに負荷をかけて行うテスト
      • さらに以下に分類される
        • 性能テスト
          • 処理能力が仕様を満たしているか確認するテスト
        • ロングランテスト
          • 長時間の連続稼働によって問題が生じないか確認するテスト
        • ボリュームテスト(大容量テスト)
          • 大量のデータや容量の大きいデータを処理できるか確認するテスト
        • ストレージテスト(記憶域テスト)
          • ストレージの残量が少ない状態での動作を確認するテスト
        • 回復テスト
          • 障害時に回復できることを確認するテスト
  • 環境テスト
    • 特定の環境で行うテスト
    • さらに以下に分類される
      • 構成テスト
        • ハードウェア・ソフトウェアをさまざまな組み合わせで動作させるテスト
      • 互換性テスト
        • 外部のシステムと正しく連携できることを確認するテスト
  • ミューテーションテスト
    • 誤りを含むプログラムに対して行うテスト
    • テスト自体の品質を確認する
  • 正常系・準正常系・異常系テスト
    • 正常系: 仕様として定義されている有効な事前条件に対する事後条件のテスト
    • 準正常系: 仕様として定義されている無効な事前条件に対する事後条件のテスト
    • 異常系: 仕様として定義されていない事前条件に対する事後条件のテスト