テスト技法について

テスト技法の概要メモ。

ソフトウェアテストやテスト技法の概要

ソフトウェアテスト

  • ソフトウェアが想定通りに動作するか評価、検証すること
  • 仕様通りに機能が動作するのかのチェック

ソフトウェアテストの7つの原則(JSTQBシラバスに記載)

  • テストは欠陥があることは示せる、欠陥が無いことは示せない
    • 不具合は必ずあるもの
  • 全数テストは不可能
    • テスト対象の絞り込み、優先順位が重要
  • 早期テストで時間、コストを節約
    • 不具合の早期発見が大切
  • 欠陥の偏在
    • 不具合は特定の箇所に集中している
    • 過去のデータを参考に不具合箇所を予測する
  • 殺虫座のパラドックス
    • 効果のあるテストを行い続けることで不具合の発生を抑制する
  • テストは状況次第
    • 状況に応じてテストを変化させる必要がある
  • 不具合ゼロの落とし穴
    • 不具合修正の影響を考慮して不具合を修正する

ソフトウェアの品質

  • ユーザーの要求をどれだけ満足させられるか
  • 国際規格 ISO/IED 25010:2011 で定められている

テストの種類

  • 機能テスト
    • リクエスト通りに機能が動作するか
  • 性能テスト
    • ユーザーが快適に仕様できるか
    • レスポンスの速さ
  • 負荷テスト
    • 許容できる限界値が仕様を満たしているか
  • ユーザビリティテスト
    • ユーザーからのフィードバックから課題発見、改善を行う
  • セキュリティテスト

段階毎のテストの分類

  • 詳細設計: 単体テスト
    • 最小単位の機能の動作テスト
  • 基本設計: 結合テスト
    • 機能の組み合わせの動作テスト
  • 要件定義: システムテスト
    • 全ての機能が動作した状態で要件を満たしているのか
  • 要求分析: 受け入れテスト
    • 導入する環境での動作テスト

テスト技法の分類

テスト設計技法

テストケースの作成、選択の手順のこと

テスト設計の流れ

  1. テスト対象のモデル化(状態遷移図、決定表等の作成)
  2. テストモデルの網羅基準を決める
  3. モデル、網羅基準からテストケース導出

テストの適切な定義

  • プログラムのエラーを発見する破壊的な過程である
  • 発見されていないエラーを検出するテストが良いテストケース

テストの原則

  • テストケースは正誤両方を作成する
  • 意図通り、意図されなかった動作の両方のテストが必要

同値分割・境界値分析

同値分割法

  • 同じ意味を持つデータを分類後、分類の代表値を選ぶこと
  • 冗長なテストケースを省ける

境界値分析

  • 同値分割法で導出した代表値との境界値を導出する
  • 境界値付近の不具合を発見しやすくする

効率的なテスト実施の流れ

  1. ブラックボックステスト
  2. テストの網羅性の確認
  3. ホワイトボックステスト

同値分割の流れ

  1. 同値クラスの作成
  2. 同値クラスの分類
  3. 代表値の決定
  4. テスト条件の決定
  5. テスト条件の見直し

同値分割・境界値分析の解説 #テスト技法 - Qiita

デシジョンテーブル

デシジョンテーブルとは?

  • 決定表
  • 入力に対する出力を決定する表

デシジョンテーブルの書き方

  1. 入力(条件)に「Y」、「N」の組み合わせを書き出す
  2. 出力(結果)に「Y」、「- 」を書き出す
  3. 出力のありえない組み合わせは「N/A」を記入

N/Aの意味

デシジョンテーブルの構成

  • 条件記述部
    • condition stub
    • 入力
  • 動作記述部
    • action stub
    • 出力
  • 条件指定部
  • 動作指定部

デシジョンテーブル作成に必要なこと

  • 条件から同値分割の粒度を決める
  • 曖昧な要件を明確化する

デシジョンテーブルの簡単化に必要なこと

  • 不可能な条件の列の排除
  • 可能ではあるが現実的ではない条件を含む列の排除
  • 結果に影響しない条件の列の排除

ホワイトボックステスト

カバレッジ

カバレッジの種類

判定条件/条件網羅

  • condition/dicision coverage
  • DC/CC
  • CDC
  • 全ての条件式の真偽、全ての分岐を実行する

改良条件/判定網羅

復号条件網羅

  • moltiple condition coverage
  • MCC
  • 全ての条件式の真偽の全ての組み合わせのテスト

経路組み合わせ網羅

  • path coverage
  • 命令文、条件式の全ての組み合わせのテスト

システムテスト結合テスト・総合テスト)

テスト作業の構成

  • テスト計画
  • テスト設計
  • テスト実施
  • テスト管理

結合テストの設計の手順

  1. テストシナリオ作成
  2. 一連のテストの流れのパターン化
  3. テストケース定義
  4. どんなテストデータを入力して、どんなテスト結果を想定するか
  5. テストデータ定義
  6. テストケースに応じたテストデータを作成
  7. トランザクションデータも定義

総合テスト

総合テストの手順

  1. 環境構築
  2. 本番マシンのセットアップ
  3. データ移行
  4. マスターデータ等を移行するプログラムの作成
  5. ユーザ教育
  6. マニュアルを使用した操作教育
  7. テストシナリオ実施
  8. 結合テストと同一のシナリオを使用
  9. 本番環境で実施
  10. 運用面のシナリオも追加
  11. 結果の照合・判定
  12. 操作性、機能面をユーザに評価してもらう
  13. 発生した障害に全て対応する

テストケース作成までの手順 1. ゴール確認 - テスト設計: テスト技法でテストケースのパターン抽出 - テストケース作成: 抽出したパターンからテストケース作成 2. テスト設計 3. テストケース作成