Comments
Description
Transcript
ソフトウェアテスト入門(2)
ソフトウェアテスト入門(2) 2007/12/20 ディノ 竹腰彰成 前回の内容(1) テストの目的とは ◦ バグ出し・品質保証 ◦ 品質保証したい対象ごとにテストがある 演習問題 テスト技法 ◦ ブラックボックステスト 同値分割 境界値分析 前回の内容(2) 同値分割 ◦ 入力値を意味ごとに分割 「英字のみ受付」→ 有効値:英字 無効値:記号など 境界値分析 ◦ 処理が変わる境目に着目 「1ページ5件」→ 5件と6件で確認 ポイント もれなく・効率的に 今日の内容 テスト技法 ◦ ブラックボックステスト (同値分割) (境界値分析) デシジョンテーブル 原因結果グラフ 前回の内容 今回の内容 ブラックボックステスト デシジョンテーブル デシジョンテーブル Decision:意思決定、決断、判定 「決定表」とも言う 組み合わせが複雑な場合に使用 ◦ 入力項目が何種類もあると 考えるのが難しくなってくる ◦ マトリクスで管理 例:PukiWikiの編集機能 入力項目がたくさん デシジョンテーブルで テストケースを書いてみる テキストを編集して保存 空入力で保存するとページ削除 タイムスタンプを変えずに保存 プレビュー機能 入力&状態のパターン洗い出し 入力項目 元の状態 本文 タイムスタンプ変更 Submitボタン 値 新規作成 編集 変更あり(入力あり) 変更あり(空入力) 変更なし する しない ページの更新 プレビュー 動作結果のパターン洗い出し チェック項目 保存内容 タイムスタンプ 結果画面 値 新規作成 更新 削除 何もしない 現在の時刻 時刻更新なし 対象ファイルなし 対象ページ プレビュー画面 「削除しました」画面 全組み合わせを書く No. 元の状態 1 2 3 4 5 6 7 8 9 新規作成 本文 ○○○○○○○○ 編集 変更あり(入力あり) 1 1 1 1 1 1 1 1 1 1 2 0 1 2 3 4 5 6 7 8 9 0 ○○○○○○○○○○○○ ○○○○ 変更あり(空入力) ○○○○ ○○○○ ○○○○ 変更なし タイムスタンプ変更 Submitボタン する ○○ しない ページの更新 ○ ○ ○○ ○○ ○ ○ ○ ○ ○○ ○○ ○ ○ ○ ○ ○ ○ プレビュー画面 「削除しました」画面 ○ ○ ○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○○○○○ ○ ○ ○ ○ ○ ○○○○○ ○ ○ ○○○○○ ○ ○○○ ○ ○ ○ 時刻更新なし 対象ページ ○○ ○ 削除 対象ファイルなし ○○ ○ 更新 現在の時刻 結果画面 ○ ○ 何もしない タイムスタンプ ○○ ○○ プレビュー 新規作成 保存内容 ○○○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 全組み合わせを書く No. 元の状態 1 2 3 4 5 6 7 8 9 新規作成 編集 変更あり(入力あり) 本文 変更あり(空入力) 変更なし タイムスタンプ変更 Submitボタン する ○ ○ ○ ○ ○○ ○ ○ ○ ○ ○○ ○ ○ ○ ○ 時刻更新なし 対象ファイルなし 対象ページ プレビュー画面 「削除しました」画面 ○○ ○ ○ ○ ○ ○○ ○ ○ ○ ○ ○ ○ ○ ○ 削除 現在の時刻 結果画面 ○○ 更新 何もしない タイムスタンプ ○○○○○○○○○○○○ プレビュー 新規作成 保存内容 新規作成で 本文入力ありで ○○○○ ○○○○ ○○○○ ○○○○ タイムスタンプ変更ありで ○○○○ ○○ ○○ ○○ ○○ ○○ 「ページの更新」なら ○○○○○○○○ しない ページの更新 1 1 1 1 1 1 1 1 1 1 2 0 1 2 3 4 5 6 7 8 9 0 ○ ○ ○ ○○○○○ ○ ○ ○ ○○○○○ ○ ○ ○ ○ ○ ファイル新規作成で ○ ○ ○○○ ○ ○ ○○○ 現在の時刻で ○ ○○○○○ ○ ○ 対象ページに遷移する ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 全組み合わせを書く 1 1 1 1 1 1 1 1 1 1 2 全部で20通り 0 1 2 3 4 5 6 7 8 9 0 No. 元の状態 1 2 3 4 5 6 7 8 9 新規作成 編集 変更あり(入力あり) 本文 ○○○○○○○○ ○○○○○○○○○○○○ ○○○○ ○○○○ ○○○○ 入力の組み合わせ ○○○○ ○ ○ 全部列挙 ○○ ○○ ○○ 変更あり(空入力) 変更なし タイムスタンプ変更 Submitボタン する ページの更新 ○○ ○ プレビュー 新規作成 保存内容 ○○ しない ○ ○○ ○ ○ ○ ○ ○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 対象ファイルなし 「削除しました」画面 ○ ○ ○○○○○ ○ 時刻更新なし プレビュー画面 ○ ○○ ○ ○ ○ ○ ○ ○ 削除 対象ページ ○○ ○ 更新 現在の時刻 結果画面 ○ ○ 何もしない タイムスタンプ ○○○○ ○ ○ ○ ○ ○○○○○ ○ ○ 入力に対応する ○○○ ○ ○ ○○○ 動作結果を記入 ○○○○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 重複テストケースを探し出す No. 元の状態 1 2 3 4 5 6 7 8 9 新規作成 本文 ○○○○○○○○ 編集 変更あり(入力あり) ○○○○○○○○○○○○ ○○○○ 変更あり(空入力) 変更なし タイムスタンプ変更 Submitボタン する ○○ ○ プレビュー 新規作成 保存内容 ○○ しない ページの更新 ○ 本文と ○○○○ ○○○○ タイムスタンプは ○○○○ ○○ ○○ ○○ ○○ 動作に影響しない ○○○○ ○○ ○ ○ ○ ○ ○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○○○○○ ○ ○ 「削除しました」画面 ○ ○ 時刻更新なし プレビュー画面 ○ ○ ○○○ 対象ファイルなし ○ ○○ ○ ○ ○ ○ ○ ○ 削除 対象ページ ○○ ○ 更新 現在の時刻 結果画面 ○ ○ 何もしない タイムスタンプ 1 1 1 1 1 1 1 1 1 1 2 0 1 2 3 4 5 6 7 8 9 0 ○ ○ ○○○○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 動作結果が ○ ○○○○○ 同じ ○ ○ ○ ○ ○ ○○○ ○ ○ ○ ○ ○ ○ ○ ○ ○ D/C(Don’t Care)で省略 No. 元の状態 新規作成 2 3 5 7 ○ ○ ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ ○ DC 変更あり(空入力) 9 10 11 13 15 17 19 ○ ○ ○ ○ ○ ○ ○ ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ ○ ○ ○ 削除 ○ ○ ○ ○ ○ ○ 対象ページ プレビュー画面 「削除しました」画面 DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 入力値は ○ ○ テスターの任意 ○ ○ 時刻更新なし 対象ファイルなし ○ ○ 更新 現在の時刻 結果画面 ○ ○ 何もしない タイムスタンプ DC ○ プレビュー 新規作成 保存内容 ○ ○ ○ DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 重複を探し出す No. 元の状態 新規作成 2 3 5 7 ○ ○ ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ ○ DC 変更あり(空入力) 9 10 11 13 15 17 19 ○ ○ ○ ○ ○ ○ ○ ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ ○ ○ ○ ○ ○ ○ ○ 削除 ○ ○ ○ ○ ○ 時刻更新なし 対象ファイルなし 動作結果が○ プレビュー画面 同じ 「削除しました」画面 DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 削除のときは ○ ○ ○ タイムスタンプ ○ ○ ○ 関係なし ○ ○ ○ 対象ページ ○ ○ 更新 現在の時刻 結果画面 ○ ○ 何もしない タイムスタンプ DC ○ プレビュー 新規作成 保存内容 ○ ○ ○ DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 重複を省略する No. 元の状態 新規作成 2 3 5 ○ ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ ○ DC 変更あり(空入力) 9 10 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ DC ○ ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ ○ ○ ○ DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 対象ファイルなし 「削除しました」画面 ○ ○ 時刻更新なし プレビュー画面 ○ ○ ○ 削除 対象ページ DC ○ 更新 現在の時刻 結果画面 ○ DC ○ 何もしない タイムスタンプ DC ○ プレビュー 新規作成 保存内容 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 重複を探し出す No. 元の状態 新規作成 2 3 5 ○ ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ ○ DC 変更あり(空入力) ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ DC ○ 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ DC ○ 新規作成では ○ ○ タイムスタンプ ○ ○ DC DC ○ ○ 関係なし ○ ○ ○ ○ 対象ファイルなし 「削除しました」画面 ○ ○ ○ ○ ○ ○ ○ ○ ○ 時刻更新なし プレビュー画面 ○ ○ 削除 対象ページ ○ ○ 更新 現在の時刻 結果画面 ○ 10 ○ 何もしない タイムスタンプ DC ○ プレビュー 新規作成 保存内容 ○ 9 ○ ○ ○ ○ ○ 動作結果が ○ ○ ○ 同じ ○ ○ ○ ○ ○ ○ ○ ○ ○ 省略 No. 元の状態 新規作成 2 5 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 10 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ DC 変更あり(空入力) 9 ○ DC ○ ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ ○ DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 対象ファイルなし 「削除しました」画面 ○ ○ 時刻更新なし プレビュー画面 ○ ○ ○ 削除 対象ページ DC ○ 更新 現在の時刻 結果画面 DC ○ 何もしない タイムスタンプ DC ○ プレビュー 新規作成 保存内容 DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 行の省略を考える No. 元の状態 新規作成 2 5 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 10 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ DC 変更あり(空入力) 9 ○ DC ○ ○ 変更なし タイムスタンプ変更 Submitボタン する しない ページの更新 ○ 削除 何もしない タイムスタンプ 時刻更新なし 結果画面 プレビュー画面 「削除しました」画面 ○ ○ DC ○ ○ ○ DC ○ ○ ○ ○ ○ ○ チェックボックスは ○ ○ ○ On/Offの2択 ○ ○ ○ ○ ○ ○ ○ ○ 2行も使わなくていい ○ ○ ○ 対象ファイルなし 対象ページ DC ○ 更新 現在の時刻 DC ○ プレビュー 新規作成 保存内容 DC ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 書き方を変える No. 元の状態 新規作成 2 5 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 10 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ DC 変更あり(空入力) 9 ○ DC ○ ○ 変更なし タイムスタンプ変更 Submitボタン チェックボックス DC ページの更新 ○ プレビュー 新規作成 保存内容 - ○ ○ ○ ○ ○ - レ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 対象ファイルなし 「削除しました」画面 DC ○ レ点 or 入力なし ○ ○ ○ 時刻更新なし プレビュー画面 レ ○ 削除 対象ページ DC ○ 更新 現在の時刻 結果画面 DC ○ 何もしない タイムスタンプ DC ○ ○ テスト操作しやすくする No. 元の状態 新規作成 2 5 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 10 11 13 17 19 ○ ○ ○ ○ ○ ○ ○ ○ ○ DC 変更あり(空入力) 9 ○ DC ○ ○ 変更なし タイムスタンプ変更 Submitボタン チェックボックス DC ページの更新 ○ プレビュー 新規作成 保存内容 - ○ ○ DC レ DC - レ ○ ○ ○ ○ ○ ○ ○ ○ 更新 ○ ○ 削除 現在の時刻 時刻更新なし 対象ファイルなし 対象ページ 結果画面 DC ○ ○ 何もしない タイムスタンプ DC プレビュー画面 「削除しました」画面 ○ ○ ○ ○ ○ 操作が入れ違って ○ ○ ○ オペミスを誘いやすい ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 整列して見た目を整える No. 元の状態 新規作成 5 2 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 変更あり(空入力) ○ 9 11 13 17 19 10 ○ ○ ○ ○ ○ ○ ○ ○ DC 変更なし タイムスタンプ変更 Submitボタン チェックボックス DC DC ページの更新 ○ ○ プレビュー 新規作成 保存内容 レ DC - レ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ きれいに並べて ○ ○ オペミスを防止する ○ ○ ○ ○ 時刻更新なし ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ プレビュー画面 「削除しました」画面 DC ○ ○ 対象ファイルなし 結果画面 - 削除 対象ページ ○ ○ 更新 現在の時刻 ○ ○ 何もしない タイムスタンプ DC DC ○ ○ ○ ○ 番号を振り直して完成 No. 元の状態 新規作成 2 3 ○ ○ ○ 編集 変更あり(入力あり) 本文 1 ○ 変更あり(空入力) ○ 4 5 6 7 8 9 ○ ○ ○ ○ ○ ○ ○ ○ DC 変更なし タイムスタンプ変更 Submitボタン 保存内容 チェックボックス DC DC ページの更新 ○ ○ ○ - レ DC - レ ○ ○ ○ ○ ○ ○ もれなく:かなり確実 新規作成 ○ 更新効率的に:重複なし ○ ○ ○ ○ ○ ○ ○ ○ 時刻更新なし ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ プレビュー画面 「削除しました」画面 ○ ○ ○ ○ ○ 対象ファイルなし 対象ページ DC ○ 削除 現在の時刻 結果画面 ○ プレビュー 何もしない タイムスタンプ DC DC ○ ○ ○ ○ 作成手順のおさらい 入力&状態のパターン洗い出し 結果のパターン洗い出し 全組み合わせを作成 重複テストケースを削除 行の圧縮 見た目の整理 管理のために 番号振り直し 番号は必ず振る ブラックボックステスト 原因結果グラフ 原因結果グラフ デシジョンテーブルとほぼ同じ ◦ 複雑な組み合わせの管理に使う ◦ より視覚的……わかりやすいかも? 最後はデシジョンテーブルに変換 ◦ デシジョンテーブルを作る補助手法 ◦ 素のデシジョンテーブルよりも テストケース数が少なくなる ここでは紹介のみ ◦ デシジョンテーブルをずっと使っていると 無駄があるように感じてくる ◦ より効率化する手掛かりとして紹介 グラフ例 One テキスト入力 あり テキスト入力 なし タイムスタン プ更新しない checkbox ページ更新 ボタン ∧ ∧ ∧ ファイル書き出し ページ表示 ファイル書き出し タイムスタンプ元 に戻し ページ表示 ファイル削除し 削除完了画面表示 One プレビュー ボタン プレビュー画面 表示 注:ページがなくても「削除完了」になる仕様 グラフ例 One テキスト入力 あり テキスト入力 なし タイムスタン プ更新しない checkbox ページ更新 ボタン ∧ ∧ ∧ ファイル書き出し ページ表示 ファイル書き出し タイムスタンプ元 に戻し ページ表示 ファイル削除し 削除完了画面表示 One プレビュー ボタン プレビュー画面 表示 注:ページがなくても「削除完了」になる仕様 グラフ例 One ∧ テキスト入力 あり テキスト入力 なし タイムスタン プ更新しない 原因 checkbox ページ更新 ボタン ∧ 組み合わせ ファイル書き出し ページ表示 ファイル書き出し タイムスタンプ元 に戻し ページ表示 結果 ∧ ファイル削除し 削除完了画面表示 One プレビュー ボタン プレビュー画面 表示 注:ページがなくても「削除完了」になる仕様 デシジョンテーブルに変換 No. 1 2 3 4 テキスト入力あり ○ ○ - DC テキスト入力なし - - ○ DC タイムスタンプ更新しないcheckbox - ○ DC DC ページ更新ボタン ○ ○ ○ - プレビューボタン - - - ○ ファイル書き出しページ表示 ○ - - - ファイル書き出し タイムスタンプを元に戻しページ表示 - ○ - - ファイル削除し削除完了画面表示 - - ○ - プレビュー表示 - - - ○ デシジョンテーブルの例より少なくなった ◦ 視点が変わったから でも少なすぎないか? 抜けやすいのでよく確認すること 今日のまとめ 今日のまとめ ブラックボックステスト ◦ デシジョンテーブル ◦ 原因結果グラフ →複雑なテストケースにも対応 ご清聴ありがとうございました