ソフトウェアテスト 入門
- テストサイクル
- 計画、設計、実施を管理で回していく
- テスト計画
- 品質保証のタイプ
- 検出型
- 網羅型
- 最善型
- 品質保証のタイプ
SWEBOKのソフトウェアテスティング
- 静的テストと動的テスト
- ブラックテストとホワイトテスト、グレーボックステスト
- レベルで分けるテスト
- コンテキストで分けるテスト
静的テストと動的テスト
- 静的テスト
- 人による静的テスト
- レビュー
- ウォークスルー
- 機械的な静的テスト
- 複雑度分析
- データフロー分析
- アルゴリズム分析
- 形式手法 : ソフトウェア要求と設計を数学的に検証
- 人による静的テスト
ブラックテストとホワイトテスト、グレーボックステスト
- ブラックテストとホワイトテスト、グレーボックステスト
- ブラックボックスとホワイトボックスによる分類
- ブラックボックス
- 同値分割
- 境界値分析
- デシジョンテーブル
- 有限状態機械に基づくテスティング
- 形式仕様によるテスティング
- エラー推測
- 運用プロファイル
- ホワイトボックス
- コードに基づくテスティングのための参照モデル
- 変異テスティング
- ブラックボックス
レベルで分けるテスト
レベルで分けるテスト
- 開発レベル
- 単体テスト
- 結合テスト
- システムテスト
- 目標レベル
- ユーザー指向
- 受け入れ/認定テスト
- 導入テスト
- アルファおよびベータテスティング
- ユーザビリティテスティング
- 不具合指向
- テスティングによる信頼性の実現および評価
- 回復テスティング
- 要件指向
- 適格性テスティング/機能テスティング/正当性テスティング
- バックツー/バックテスティング
- 構成テスティング
- 設計指向
- パフォーマンステスティング
- ストレステスティング
- その他
- 回復テスティング
- ユーザー指向
- 開発レベル
結合テスト
- トップダウン手法で下位ユニットがあに場合はスタブという下位モジュールの入出力を模擬するモジュールを作成
- ボトムアップ手法で上位ユニットがない場合は、上位ユニットの入出力を模擬するドライバを作成
コンテキストで分けるテスト
- テスト担当者の直感と経験に基づく分類
- 探索的テスト : ベテランによるアドホックなテスト
- 仕様に基づく分類
- 同値分割
- 境界値分析
- デシジョンテーブル
- 有限状態機械に基づくテスティング
- 形式仕様によるテスティング
- コードに基づく分類
- フローグラフ、コールグラフ
- フォールトに基づく分類
- エラー推測
- 変異テスティング
- 利用に基づく分類
- 運用プロファイル
- アプリケーションの性質に基づく分類
- オブジェクト指向テスティング
- 部品に基づくテスティング
- コンポーネントベーステスティング
- GUIテスト
- 並行プログラムのテスティング
- プロトコル適格性テスティング
- 分散システムのテスティング
- リアルタイムシステムのテスティング
- 科学計算ソフトウェアのテスティング
分析
テスト項目の抽出
- テスト観点
- 正常系パターン : 同値分割 - 仕様通りかを確認
- 異常系パターン : 同値分割 - 仕様通りかを確認
- 例外発生パターン : 同値分割 - 仕様通りかを確認
- 境界値パターン : 境界値分析 - バグっぽいところを叩く
- ゼロ・NULLなどのパターン : エラー推測 - バグっぽいところを叩く
- 1~3は仕様確認のためのものなので、必ず仕様書代わりのテストコードとして記述
- 4~5はバグが埋め込まれやすいポイントを叩くための観点で仕様を表現するものとは少し意味外が異なる
- TDDでテストファーストなテストで4,5のテストコードをもれなく書くことは通常無い。従来手法と同等レベルの単体テストを実施する場合、4,5の観点のテストをするための単体テストの工程を別途切る必要がある
- テスト観点
ホワイトボックステスト
- 制御パステストによる
- カバレッジ基準 : テストする処理経路の網羅度合いを測る
- ステートメントカバレッジ
- 命令網羅、C0カバレッジ
- ブランチカバレッジ
- 分岐網羅、C1カバレッジ
- ステートメントカバレッジ
- ブランチカバレッジが100%であればステートメントカバレッジも必ず100%になる
ホワイトボックステストとブラックボックステストの使い分け
- 理想論としての品質確保のためにはホワイトボックステストを実施してブラックボックステストをすることだが、テストは仕様どおりに動くことを確認するもののため、ブラックボックステストをメインにするべき
カバレッジ率
- 直交表を用いて2機能間の問題をがっちり抑え、3機能以上の問題については、3機能の組み合わせ結果が仕様書に明記されている箇所と、開発者へのヒアリングや過去のバグリストから検出した怪しいところ、テスト中に見つけた3機能以上の組み合わせバグ原因に焦点を絞り、局所的にテストするほうが効率が良い
- カバレッジ率を100%にできない場合
- 単体テスト環境ではテストできない
- 仕様にないロジックのコーディング
どこでテストをやめるか
- 十分性チェック
- カバレッジ
- レビュー : メモレベルでも抽出の観点が書いてあるとレビューしやすくなる
- メトリクス
- 試験密度 : 試験密度=テスト項目数÷ソースコード行数
- バグ密度 : バグ密度=検出バグ数÷ソースコード行数
- 十分性チェック
直交表
- ソフトウェア設計の流れ
- 因子/水準の決定
- 直交表の決定
- 線点図の組み換え
- 因子/水準の割り付け
- 禁則の回避
- 完成したマトリクスのチェック
- ソフトウェア設計の流れ
All-pair法
- 2機能間組み合わせカバレッジ率が100%になるような最小のテストマトリクスを目指して生成
- 2機能間の組み合わせを出すことに集中しているため、組み合わせが偏ってしまう欠点
- 直交表もAll-pair法の一種とみなす場合もある
マインドマップ
- マインドマップで発散する方向に発想を広げ、テストケース表では収束させて落とし込むといった形で活用することもできる
IEEE829-1998 テストプランのアウトライン
- テスト計画書番号
- 概要
- テスト項目
- テスト対象
- 非テスト対象
- アプローチ
- テスト項目の合否基準
- 一時中断基準と再開要件
- テスト提供物
- テストタスク
- 環境要件
- 責任
- 要因計画とトレーニング
- スケジュール
- リスク対策
- 承認
ドキュメンテーション
- テスト仕様書のレビュー観点
- テスト仕様書があるか
- テスト仕様書が何を元に作成されたか
- 全体計画と詳細テスト仕様に分かれているか
- テスト計画より前にテストケースが設計されていないか
- メトリクスに関する記述に着目
- テストが簡単んい終わるように完了基準が設定していないか
- テストが永遠に終わらないような完了基準を設定していないか
- メトリクスデータのみを利用してテストを終わらせようとしていないか
- 書いていないことに対するテストケース設計
- テスト内容に十分性を証明できるか
- その他