...

ソフトウェアテスト入門(2)

by user

on
Category: Documents
18

views

Report

Comments

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
ページ更新ボタン
○
○
○
-
プレビューボタン
-
-
-
○
ファイル書き出しページ表示
○
-
-
-
ファイル書き出し
タイムスタンプを元に戻しページ表示
-
○
-
-
ファイル削除し削除完了画面表示
-
-
○
-
プレビュー表示
-
-
-
○

デシジョンテーブルの例より少なくなった
◦ 視点が変わったから

でも少なすぎないか? 抜けやすいのでよく確認すること
今日のまとめ
今日のまとめ

ブラックボックステスト
◦ デシジョンテーブル
◦ 原因結果グラフ
→複雑なテストケースにも対応
ご清聴ありがとうございました
Fly UP