Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
わりとディープ?
同値分割↔境界値分析
はじめに
これは本当の話です。
同値分割・境界値分析わかってると
おもってた・・・
そしたらこんなのがふってきた
70
80
90
100
110
6問 5問 4問 3問 2問 1問 0問
境界値をテストしなきゃ!!!!
a1 a2 a3 a4 a5
×10
点数 6問 5問 4問 3問 2問 1問 0問 結果の格付
1 91...
正直よくわからない・・・
こういうものがふってくる前に
同値分割・境界値分析をきちんと
学ぼう
このセッションの目的
最近同値分割・境界値分析・ドメイン分析やって
ますか?
適当にやってませんか?
同値分割・境界値分析・ドメイン分析
の違いがわかり、意識的に使えるようになろう
自己紹介
山口 寛子(WACATE実行委員会)2年目(4回め)
金融系SIerで金融系ではないSIをやっている
SN:べにちどり(@scarletplover)
目次
はじめに
同値分割・境界値分析をやってみよう
同値分割
境界値分析
ドメイン分析をやってみよう
最後に
というわけで、さっそく
同値分割・境界値分析してみよう
同値分割・境界値分析
をやってみよう
【例】居酒屋DM送信システム
居酒屋チェーンが、ダイレクトメールを送信するシステムを作成
しました。以下のとおり、すでにDM会員登録されているお客様
に対し、年齢によって送信する店の情報を変えて、送信するシス
テムです。
なお、DM会員は20歳...
まず、同値分割から
①同値分割とは
•テスト対象が同じ振る舞いをすると仮定できる入力や出力などの値の集合や範囲を「同値ク
ラス」としてまとめ、同値クラス内の代表値のみをテストすることによりテストの数を削減
する技法。
SQuBOKでの定義【同値分割】
•仕様に基づ...
同値分割のやりかた
①システムなどのテスト対象で扱う入力値や出力値を、テスト
対象の振る舞いに注目して「同値クラス」にまとめる。
②代表値を抽出してテストをする。
同値分割のやりかた①
①システムなどのテスト対象で扱う入力値や出力値を、テスト対象の振る舞い
に注目して「同値クラス」にまとめる。
→そのテスト、同値クラスにまとめられるかも?
(カーネル著「基本から学ぶソフトウェアテスト」より)
・同じ機能で...
同値分割のやりかた①
同値クラスにわけるときに要件に書いてあるものだけです
ませないこと
→例えば、無効の値は要件で書き漏れていることが多いので
注意する。
※有効同値クラス
正常処理が行われるクラス
※無効同値クラス
異常処理(エラー処理)...
【例】居酒屋DM送信システム
居酒屋チェーンが、ダイレクトメールを送信するシステムを作成
しました。以下のとおり、すでにDM会員登録されているお客様
に対し、年齢によって送信する店の情報を変えて、送信するシス
テムです。
なお、DM会員は20歳...
同値分割のやりかた①
20歳未満
無効
20歳以上
有効
【例題】
>なお、DM会員は20歳以上が対象となっています。
999歳超
無効
20歳未満はエラー。またここでは999歳を上限として扱
う。
20歳以上
有効
20歳未満
無効
999歳超
無効
同値分割のやりかた①
20歳以上
30歳未満
ビール系
30歳以上
40歳未満
日本酒・焼
酎系
40歳以上
50歳未満
高級酒系
50歳以上
(999歳
以下)
DMなし
年齢 送付するD...
同値分割のやりかた②
②それぞれの同値クラスから、代表値を1つ以上選んで、
テストケースに使用する。
同値分割のやりかた②
19 25 34 46 80
20歳以上
有効
20歳未満
無効
999歳超
無効
20歳以上
30歳未満
ビール系
30歳以上
40歳未満
日本酒・焼
酎系
40歳以上
50歳未満
高級酒系
50歳以上
(999歳
以下...
同値分割で気をつけること
同値クラスを見極める。
プログラムの作りによって同値クラスが変わることがある。
EX)もし例題システムが1歳ごとに判定をくりかえしていたら・・・
別の条件によって違う振る舞いをしていないか考える
EX)もし例題シス...
同値分割の効果
• 同値クラス内については、代表値によるテストだけで十
分であるという根拠により、テストの数を削減できる。
同値分割の効果【SQuBOKより】
システムの振る舞いをテストするのによい。
テストの量を削減することができる。
...
では、やってみよう
(問題文非公開)
次に、境界値分析
境界値分析とは
•プログラムの誤りが同値クラスの境界部分に存在しやすいことに
着目し、境界値を分析してテストを設計する技法。
SQuBOKの定義【境界値分析/境界値テスト】
•ブラックボックステスト設計技法の一つ。境界値に基づいてテス
トケース...
①システムなどのテスト対象で扱う入力値や出力値を、テス
ト対象の振る舞いに注目して「同値クラス」にまとめる。
②「同値クラス」の境界値をみつける。
③境界値を分析してテストを設計する。
境界値分析のやりかた
【例】居酒屋DM送信システム
居酒屋チェーンが、ダイレクトメールを送信するシステムを作成
しました。以下のとおり、すでにDM会員登録されているお客様
に対し、年齢によって送信する店の情報を変えて、送信するシス
テムです。
なお、DM会員は20歳...
①システムなどのテスト対象で扱う入力値や出力値を、テス
ト対象の振る舞いに注目して「同値クラス」にまとめる。
境界値分析のやりかた①
境界値分析のやりかた①
同値クラスごとにわける
(説明は同値分割で行ったので割愛)
20歳以上
有効
20歳未満
無効
999歳超
無効
20歳以上
30歳未満
ビール系
30歳以上
40歳未満
日本酒・焼
酎系
40歳以上
50歳未満
高級酒...
②「同値クラス」の境界値をみつける。
→「同値クラス」どうしが隣接していなければ境界値分析
はできないので注意。
→境界値が、隣接している同値クラスのどちらに入るのか
を間違えない。
境界値分析のやりかた②
境界値分析のやりかた②
3020 40 50
境界値を見つける。
999
20歳以上
有効
20歳未満
無効
999歳超
無効
20歳以上
30歳未満
ビール系
30歳以上
40歳未満
日本酒・焼
酎系
40歳以上
50歳未満
高級酒系
50歳...
③境界値を分析してテストを設計する。
→境界値と、その直前・直後の値を選択しテストケースに
使用する。
※「直前」・「直後」の値の幅はデータの単位によるの
で注意。
境界値分析のやりかた③
境界値分析のやりかた③
29 302019 39 40 49 50
境界値と、その直前・直後の値を選択しテストケースに
使用する。
20 40 50 999
20歳以上
有効
20歳未満
無効
999歳超
無効
20歳以上
30歳未満
ビール系...
境界値分析で気をつけること
同値クラスを見極める(再掲)
プログラムの作りによって同値クラス・境界値が変わることがある。
EX)もし例題システムが1歳ごとに判定をくりかえしていたら・・・
別の条件によって違う振る舞いをしていないか考える
E...
境界値分析で気をつけること
基準に気をつける
データの値は整数?有効桁は?
例)もし例題が「赤ちゃん商品」のDMだったら・・・
いつ基準の数値を扱うべきなのか。
例)年齢っていつ時点の?
上限・下限?
かつてシステムには200歳のおじいち...
境界値分析の効果
•プログラム内のループの終了条件や判定条件の不等号式など
の誤りを検出できる。
境界値分析の効果【SQuBOKより】
いろいろなシステムの値に使用でき、使いやすい。
ーホワイトボックステストでも一部使用できる。
経験則的に...
では、やってみよう
(問題文非公開)
同値分割・境界値分析できた!
でも、こんなのには対応で
きない!
70
75
80
85
90
95
100
105
6問 5問 4問 3問 2問 1問 0問
境界値をテストしなきゃ!!!!
a1 a2 a3 a4 a5
×10
点数 6問 5問 4問 3問 2問 1問 0...
というわけで・・・
複数の境界があるテストを
考えてみよう!
ドメイン分析を
やってみよう
【例題2】無料飲料配布
システム
あるイベントで無料飲食スペースのドリンク配布管理システ
ムを使うことになりました。
有効同値クラスと無効同値クラスのテストで使用する値を算
出します。
※利用者は20歳以上とします。
・1人につき7本まで無料で...
ドメイン分析とは
•ブラックボックステスト設計技法の一つ。複数の変数を同
時にテストできる、又はテストする必要がある場合に効率
的かつ効果的なテストケースを識別するのに使用される。
同値分割法と境界値分析に基づいて構築され、これらを汎
用化する...
ドメイン分析のやり方
わける・境界をみつける
ON/OFFポイントを探す
くみあわせる
※ここでは弱1✕1方式を使う
やりかた①
わける・境界値をみつける
わける・境界をみつける
ON/OFFポイントを探す
くみあわせる
やりかた①
わける・境界値をみつける
同値クラス・境界値をみつける。
→ドメイン分析では複数の値を同時にテストするた
め、境界値を「式」で表すとよい。また、図等にあら
わすとより鮮明になる。
>缶にはソフトドリンクと酒類の2種類が入ってい
る。...
やりかた①
わける・境界値をみつける
>1人につき7本まで無料で缶飲料をもらうことができる。
x+y ≦ 7
>ソフトドリンクは5本までしか受け取ることができない。
x ≦ 5
>酒類の缶は4本までしか受け取ることができない。
y ≦ 4
※缶...
やりかた①
わける・境界値をみつける
有効
無効
y ≦ 4
x≦5
x≧0
y ≧ 0
ドメイン分析のやり方
わける・境界をみつける
ON/OFFポイントを探す
くみあわせる
やりかた②
ON・OFFポイント探す
ONポイント
境界上の点。
ドメイン境界上の点、あるいは、その境界に近接した点
で、境界条件を満足させることができるもの。
やりかた②
ON・OFFポイント探す
OFFポイント
境界上ではなく、境界に隣接する値。
※OFFポイントと境界の値の幅はデータの単位によるので注意。
※二つのドメインが境界不等式を共有している場合、二つのド
メインは隣接しているという。
やりかた②
ON・OFFポイント探す
OFFポイント(続き)
ONポイントがテストを行うドメインの内部に含まれる場合、OFF
ポイントはドメイン外部の値となる。
例)x ≦ 5のとき、ONポイントは「5」、OFFポイントは「6」
ONポイント...
やりかた②
ON・OFFポイント探す
INポイント
すべての境界条件を満たすが境界上にはない値。
やりかた②
ON・OFFポイント探す
有効
無効
y ≦ 4
x≦5
x≧0
y ≧ 0
やりかた②
ON・OFFポイント探す
y ≦ 4
境界条件 ONポイント OFFポイント
y ≦ 4 y = 4 y = 5
ONポイント
OFFポイント
やりかた②
ON・OFFポイント探す
境界条件 ONポイント OFFポイント
1 x ≧ 0 x = 0 x = -1
2 x ≦ 5 x = 5 x = 6
3 y ≧ 0 y = 0 y = -1
4 y ≦ 4 y = 4 y = 5
5...
やりかた③
くみあわせる
わける・境界をみつける
ON/OFFポイントを探す
くみあわせる
やりかた③
くみあわせる
ここでは、Binderのドメインテストマトリックスを使う。
ケース1 ケース2 ケース3 ケース4
ON
OFF
ON
OFF
ON
OFF
ON
OFF
ON
OFF
項目2
期待結果
項目3
条件1
条件3
項目1...
②できめたON・OFFポイントを、 Binderのドメインテストマトリックスに
おとしこむ。
→1つの項目のONポイントまたはOFFポイントに対して、他の項目はINポイ
ントになるように設定する。
→1つのドメインに対し、1表必要
やりかた③
...
ケース1 ケース2
ON 0
OFF
ON
OFF
ON
OFF
ON
OFF
5
ON
OFF
5
有効 無効
x/y
x + y ≦ 7
IN
期待結果
x
x ≧ 0
x ≦ 5
IN
y
y ≧ 0
y ≦ 4
IN
やりかた③
くみあ...
ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7
ON 0
OFF -1
ON 5
OFF 6
1 2
ON 0
OFF -1
ON
OFF
5 4 1 1
ON 7
OFF
5 3 6 1 1
有効 無効 有効 無効 有効...
ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7
ON 0
OFF -1
ON 5
OFF 6
1 2
ON 0
OFF -1
ON
OFF
5 4 1 1
ON 7
OFF
5 3 6 1 1
有効 無効 有効 無効 有効...
ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7
ON 0
OFF -1
ON 5
OFF 6
1 2
ON 0
OFF -1
ON
OFF
5 4 1 1
ON 7
OFF
5 3 6 1 1
有効 無効 有効 無効 有効...
ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7 ケース8 ケース9 ケース10
ON 0
OFF -1
ON 5
OFF 6
1 2 1 1 4 4
ON 0
OFF -1
ON 4
OFF 5
5 4 1 1 3 4
O...
ドメイン分析で気をつける
ところ
・x = a のような不等式でないときの判定はどうするのか
→この場合、値が1つだけの同値クラスがあるとみなす。
つまり
ONポイント:6
OFFポイント:5、7(データが整数の場合)
ドメイン分析の効果
複数の値を同時にテストできる。
→以下の欠陥が発見可能。
境界の移動
境界の傾き違い
Y<2+x
Y<3Y<5
Y<10-x
ドメイン分析の効果
以下の欠陥が発見可能(続き)。
境界抜け
余分な境界
Y<2X+2
Y<10-X
Y<2X+2
Y<1/2X
Y<1/2X
Y<10-X
では、やってみよう
(問題文非公開)
最後に
今日お話ししたこと
同値分割
テスト対象の振る舞いによってグループわけしてテスト
→テストケースの削減が可能。
境界値分析
グループの境界値をねらいうってテスト
→境界値にかかわる誤りを検出できる。
ドメイン分析
グループの境界値のONポ...
まとめ
同値分割・境界値分析・ドメイン分析
はどんなテストでも使う可能性がある
意識してしっかり使いましょう
困ったときの参考文献
リー・コープランド著、宗 雅彦訳
「はじめて学ぶソフトウェアのテスト技法」
日経BP社、2005年
秋山 浩一著
「ソフトウェアのテスト技法ドリル
-テスト設計の考え方と実際-」
日科技連出版社、2010年
ボーリス...
ご清聴ありがとうございまし
た。
Upcoming SlideShare
Loading in …5
×

わりとディープ?同値分割↔境界値分析

9,330 views

Published on

WACATE2015冬のセッション資料です。
公開用ということで演習内容は削っております。ご容赦ください。

Published in: Engineering
  • Be the first to comment

わりとディープ?同値分割↔境界値分析

  1. 1. わりとディープ? 同値分割↔境界値分析
  2. 2. はじめに
  3. 3. これは本当の話です。
  4. 4. 同値分割・境界値分析わかってると おもってた・・・
  5. 5. そしたらこんなのがふってきた 70 80 90 100 110 6問 5問 4問 3問 2問 1問 0問 境界値をテストしなきゃ!!!! a1 a2 a3 a4 a5 ×10 点数 6問 5問 4問 3問 2問 1問 0問 結果の格付 1 91~100 12 8 4 0 -4 -8 -12 一流 2 81~90 12 8 4 0 -4 -8 -12 3 61~80 21 14 7 0 -7 -14 -21 4 51~60 12 8 4 0 -4 -8 -12 5 31~50 21 14 7 0 -7 -14 -21 6 11~30 12 8 4 0 -4 -8 -12 7 0~10 21 14 7 0 -7 -14 -21 普通 二流 そっくり
  6. 6. 正直よくわからない・・・
  7. 7. こういうものがふってくる前に
  8. 8. 同値分割・境界値分析をきちんと 学ぼう
  9. 9. このセッションの目的 最近同値分割・境界値分析・ドメイン分析やって ますか? 適当にやってませんか? 同値分割・境界値分析・ドメイン分析 の違いがわかり、意識的に使えるようになろう
  10. 10. 自己紹介 山口 寛子(WACATE実行委員会)2年目(4回め) 金融系SIerで金融系ではないSIをやっている SN:べにちどり(@scarletplover)
  11. 11. 目次 はじめに 同値分割・境界値分析をやってみよう 同値分割 境界値分析 ドメイン分析をやってみよう 最後に
  12. 12. というわけで、さっそく 同値分割・境界値分析してみよう
  13. 13. 同値分割・境界値分析 をやってみよう
  14. 14. 【例】居酒屋DM送信システム 居酒屋チェーンが、ダイレクトメールを送信するシステムを作成 しました。以下のとおり、すでにDM会員登録されているお客様 に対し、年齢によって送信する店の情報を変えて、送信するシス テムです。 なお、DM会員は20歳以上が対象となっており、20歳未満は DM会員になることはできません。 年齢 送付するDM 1 20歳以上30歳未満 ビール系居酒屋 2 30歳以上40歳未満 日本酒・焼酎系居酒屋 3 40歳以上50歳未満 高級酒系居酒屋 4 50歳以上 DMを送付しない
  15. 15. まず、同値分割から
  16. 16. ①同値分割とは •テスト対象が同じ振る舞いをすると仮定できる入力や出力などの値の集合や範囲を「同値ク ラス」としてまとめ、同値クラス内の代表値のみをテストすることによりテストの数を削減 する技法。 SQuBOKでの定義【同値分割】 •仕様に基づき、コンポーネントやシステムの振る舞いが同じとみなせる入力ドメインや出力 ドメインの部分。 JSTQBでの定義【同値分析】 •ブラックボックステスト設計技法の一つ。同値分割した領域から代表値を実行するテスト ケースを設計する。原則として、最低1回各同値分割した領域を実行するように設計する。 JSTQBでの定義【同値分析法】 ※JSTQBでは、同値クラスに分けることを「同値分割」、テスト技法としての 同値分割を「同値分割法」と区別しているが、ここでは特に区別しない。
  17. 17. 同値分割のやりかた ①システムなどのテスト対象で扱う入力値や出力値を、テスト 対象の振る舞いに注目して「同値クラス」にまとめる。 ②代表値を抽出してテストをする。
  18. 18. 同値分割のやりかた① ①システムなどのテスト対象で扱う入力値や出力値を、テスト対象の振る舞い に注目して「同値クラス」にまとめる。 →そのテスト、同値クラスにまとめられるかも? (カーネル著「基本から学ぶソフトウェアテスト」より) ・同じ機能でのテスト ・1つのテストで障害が見つかれば、残りのテストでも見つかると予想でき るテスト。 ・1つのテストで障害が見つからなければ、残りのテストでも見つからない と予想できるテスト。
  19. 19. 同値分割のやりかた① 同値クラスにわけるときに要件に書いてあるものだけです ませないこと →例えば、無効の値は要件で書き漏れていることが多いので 注意する。 ※有効同値クラス 正常処理が行われるクラス ※無効同値クラス 異常処理(エラー処理)が行われる同値クラス
  20. 20. 【例】居酒屋DM送信システム 居酒屋チェーンが、ダイレクトメールを送信するシステムを作成 しました。以下のとおり、すでにDM会員登録されているお客様 に対し、年齢によって送信する店の情報を変えて、送信するシス テムです。 なお、DM会員は20歳以上が対象となっており、20歳未満は DM会員になることはできません。 年齢 送付するDM 1 20歳以上30歳未満 ビール系居酒屋 2 30歳以上40歳未満 日本酒・焼酎系居酒屋 3 40歳以上50歳未満 高級酒系居酒屋 4 50歳以上 DMを送付しない
  21. 21. 同値分割のやりかた① 20歳未満 無効 20歳以上 有効 【例題】 >なお、DM会員は20歳以上が対象となっています。 999歳超 無効 20歳未満はエラー。またここでは999歳を上限として扱 う。
  22. 22. 20歳以上 有効 20歳未満 無効 999歳超 無効 同値分割のやりかた① 20歳以上 30歳未満 ビール系 30歳以上 40歳未満 日本酒・焼 酎系 40歳以上 50歳未満 高級酒系 50歳以上 (999歳 以下) DMなし 年齢 送付するDM 1 20歳以上30歳未満 ビール系居酒屋 2 30歳以上40歳未満 日本酒・焼酎系居酒屋 3 40歳以上50歳未満 高級酒系居酒屋 4 50歳以上 DMを送付しない
  23. 23. 同値分割のやりかた② ②それぞれの同値クラスから、代表値を1つ以上選んで、 テストケースに使用する。
  24. 24. 同値分割のやりかた② 19 25 34 46 80 20歳以上 有効 20歳未満 無効 999歳超 無効 20歳以上 30歳未満 ビール系 30歳以上 40歳未満 日本酒・焼 酎系 40歳以上 50歳未満 高級酒系 50歳以上 (999歳 以下) DMなし 1200
  25. 25. 同値分割で気をつけること 同値クラスを見極める。 プログラムの作りによって同値クラスが変わることがある。 EX)もし例題システムが1歳ごとに判定をくりかえしていたら・・・ 別の条件によって違う振る舞いをしていないか考える EX)もし例題システムで女の人にはDM送らない仕様だったら・・・
  26. 26. 同値分割の効果 • 同値クラス内については、代表値によるテストだけで十 分であるという根拠により、テストの数を削減できる。 同値分割の効果【SQuBOKより】 システムの振る舞いをテストするのによい。 テストの量を削減することができる。 いろいろなシステムの値に使用でき、使いやすい。 ーホワイトボックステストでも一部使用できる。 ー同値クラスが連続していない値でも使える。 「Xの値のときだけ処理の内容が変わる」
  27. 27. では、やってみよう (問題文非公開)
  28. 28. 次に、境界値分析
  29. 29. 境界値分析とは •プログラムの誤りが同値クラスの境界部分に存在しやすいことに 着目し、境界値を分析してテストを設計する技法。 SQuBOKの定義【境界値分析/境界値テスト】 •ブラックボックステスト設計技法の一つ。境界値に基づいてテス トケースを設計する。 JSTQBの定義【境界値分析】
  30. 30. ①システムなどのテスト対象で扱う入力値や出力値を、テス ト対象の振る舞いに注目して「同値クラス」にまとめる。 ②「同値クラス」の境界値をみつける。 ③境界値を分析してテストを設計する。 境界値分析のやりかた
  31. 31. 【例】居酒屋DM送信システム 居酒屋チェーンが、ダイレクトメールを送信するシステムを作成 しました。以下のとおり、すでにDM会員登録されているお客様 に対し、年齢によって送信する店の情報を変えて、送信するシス テムです。 なお、DM会員は20歳以上が対象となっており、20歳未満は DM会員になることはできません。 年齢 送付するDM 1 20歳以上30歳未満 ビール系居酒屋 2 30歳以上40歳未満 日本酒・焼酎系居酒屋 3 40歳以上50歳未満 高級酒系居酒屋 4 50歳以上 DMを送付しない
  32. 32. ①システムなどのテスト対象で扱う入力値や出力値を、テス ト対象の振る舞いに注目して「同値クラス」にまとめる。 境界値分析のやりかた①
  33. 33. 境界値分析のやりかた① 同値クラスごとにわける (説明は同値分割で行ったので割愛) 20歳以上 有効 20歳未満 無効 999歳超 無効 20歳以上 30歳未満 ビール系 30歳以上 40歳未満 日本酒・焼 酎系 40歳以上 50歳未満 高級酒系 50歳以上 (999歳 以下) DMなし
  34. 34. ②「同値クラス」の境界値をみつける。 →「同値クラス」どうしが隣接していなければ境界値分析 はできないので注意。 →境界値が、隣接している同値クラスのどちらに入るのか を間違えない。 境界値分析のやりかた②
  35. 35. 境界値分析のやりかた② 3020 40 50 境界値を見つける。 999 20歳以上 有効 20歳未満 無効 999歳超 無効 20歳以上 30歳未満 ビール系 30歳以上 40歳未満 日本酒・焼 酎系 40歳以上 50歳未満 高級酒系 50歳以上 (999歳 以下) DMなし
  36. 36. ③境界値を分析してテストを設計する。 →境界値と、その直前・直後の値を選択しテストケースに 使用する。 ※「直前」・「直後」の値の幅はデータの単位によるの で注意。 境界値分析のやりかた③
  37. 37. 境界値分析のやりかた③ 29 302019 39 40 49 50 境界値と、その直前・直後の値を選択しテストケースに 使用する。 20 40 50 999 20歳以上 有効 20歳未満 無効 999歳超 無効 20歳以上 30歳未満 ビール系 30歳以上 40歳未満 日本酒・焼 酎系 40歳以上 50歳未満 高級酒系 50歳以上 (999歳 以下) DMなし 30 29 302019 39 40 49 50 999 1000 境界値と「直前」「直後」の値を割り出し、テストケースに使用する 値とする。
  38. 38. 境界値分析で気をつけること 同値クラスを見極める(再掲) プログラムの作りによって同値クラス・境界値が変わることがある。 EX)もし例題システムが1歳ごとに判定をくりかえしていたら・・・ 別の条件によって違う振る舞いをしていないか考える EX)もし例題システムで女の人にはDM送らない仕様だったら・・・
  39. 39. 境界値分析で気をつけること 基準に気をつける データの値は整数?有効桁は? 例)もし例題が「赤ちゃん商品」のDMだったら・・・ いつ基準の数値を扱うべきなのか。 例)年齢っていつ時点の? 上限・下限? かつてシステムには200歳のおじいちゃんが・・・
  40. 40. 境界値分析の効果 •プログラム内のループの終了条件や判定条件の不等号式など の誤りを検出できる。 境界値分析の効果【SQuBOKより】 いろいろなシステムの値に使用でき、使いやすい。 ーホワイトボックステストでも一部使用できる。 経験則的に多いと言われている、プログラム内のループの終了条件 や判定条件の不等号式などの誤りを検出できる。 ←同値分割とはテストの目的が異なる場合がある。
  41. 41. では、やってみよう (問題文非公開)
  42. 42. 同値分割・境界値分析できた!
  43. 43. でも、こんなのには対応で きない! 70 75 80 85 90 95 100 105 6問 5問 4問 3問 2問 1問 0問 境界値をテストしなきゃ!!!! a1 a2 a3 a4 a5 ×10 点数 6問 5問 4問 3問 2問 1問 0問 結果の格付 1 91~100 12 8 4 0 -4 -8 -12 一流 2 81~90 12 8 4 0 -4 -8 -12 3 61~80 21 14 7 0 -7 -14 -21 4 51~60 12 8 4 0 -4 -8 -12 5 31~50 21 14 7 0 -7 -14 -21 6 11~30 12 8 4 0 -4 -8 -12 7 0~10 21 14 7 0 -7 -14 -21 普通 二流 そっくり
  44. 44. というわけで・・・
  45. 45. 複数の境界があるテストを 考えてみよう!
  46. 46. ドメイン分析を やってみよう
  47. 47. 【例題2】無料飲料配布 システム あるイベントで無料飲食スペースのドリンク配布管理システ ムを使うことになりました。 有効同値クラスと無効同値クラスのテストで使用する値を算 出します。 ※利用者は20歳以上とします。 ・1人につき7本まで無料で缶飲料をもらうことができる。 ・缶にはソフトドリンクと酒類の2種類が入っている。 ・ソフトドリンクは5本までしか受け取ることができない。 ・酒類の缶は4本までしか受け取ることができない。
  48. 48. ドメイン分析とは •ブラックボックステスト設計技法の一つ。複数の変数を同 時にテストできる、又はテストする必要がある場合に効率 的かつ効果的なテストケースを識別するのに使用される。 同値分割法と境界値分析に基づいて構築され、これらを汎 用化する。 JSTQBの定義【ドメイン分析】 ※ドメインとは データのセット。ここから、有効な入力値や出力値を選ぶ。
  49. 49. ドメイン分析のやり方 わける・境界をみつける ON/OFFポイントを探す くみあわせる ※ここでは弱1✕1方式を使う
  50. 50. やりかた① わける・境界値をみつける わける・境界をみつける ON/OFFポイントを探す くみあわせる
  51. 51. やりかた① わける・境界値をみつける 同値クラス・境界値をみつける。 →ドメイン分析では複数の値を同時にテストするた め、境界値を「式」で表すとよい。また、図等にあら わすとより鮮明になる。 >缶にはソフトドリンクと酒類の2種類が入ってい る。 ソフトドリンクの本数を「x」、酒類の本数を 「y」とする。
  52. 52. やりかた① わける・境界値をみつける >1人につき7本まで無料で缶飲料をもらうことができる。 x+y ≦ 7 >ソフトドリンクは5本までしか受け取ることができない。 x ≦ 5 >酒類の缶は4本までしか受け取ることができない。 y ≦ 4 ※缶飲料の本数は一般的に0未満にはならない。 また、缶飲料の本数は一般的に整数である。 x ≧ 0 y ≧ 0
  53. 53. やりかた① わける・境界値をみつける 有効 無効 y ≦ 4 x≦5 x≧0 y ≧ 0
  54. 54. ドメイン分析のやり方 わける・境界をみつける ON/OFFポイントを探す くみあわせる
  55. 55. やりかた② ON・OFFポイント探す ONポイント 境界上の点。 ドメイン境界上の点、あるいは、その境界に近接した点 で、境界条件を満足させることができるもの。
  56. 56. やりかた② ON・OFFポイント探す OFFポイント 境界上ではなく、境界に隣接する値。 ※OFFポイントと境界の値の幅はデータの単位によるので注意。 ※二つのドメインが境界不等式を共有している場合、二つのド メインは隣接しているという。
  57. 57. やりかた② ON・OFFポイント探す OFFポイント(続き) ONポイントがテストを行うドメインの内部に含まれる場合、OFF ポイントはドメイン外部の値となる。 例)x ≦ 5のとき、ONポイントは「5」、OFFポイントは「6」 ONポイントがテストを行うドメインの外部の値の場合、OFFポイ ントはドメイン内部の値となる。 例)x < 5のとき、ONポイントは「5」、OFFポイントは「4」
  58. 58. やりかた② ON・OFFポイント探す INポイント すべての境界条件を満たすが境界上にはない値。
  59. 59. やりかた② ON・OFFポイント探す 有効 無効 y ≦ 4 x≦5 x≧0 y ≧ 0
  60. 60. やりかた② ON・OFFポイント探す y ≦ 4 境界条件 ONポイント OFFポイント y ≦ 4 y = 4 y = 5 ONポイント OFFポイント
  61. 61. やりかた② ON・OFFポイント探す 境界条件 ONポイント OFFポイント 1 x ≧ 0 x = 0 x = -1 2 x ≦ 5 x = 5 x = 6 3 y ≧ 0 y = 0 y = -1 4 y ≦ 4 y = 4 y = 5 5 x + y ≦ 7 x + y = 7 x + y = 8
  62. 62. やりかた③ くみあわせる わける・境界をみつける ON/OFFポイントを探す くみあわせる
  63. 63. やりかた③ くみあわせる ここでは、Binderのドメインテストマトリックスを使う。 ケース1 ケース2 ケース3 ケース4 ON OFF ON OFF ON OFF ON OFF ON OFF 項目2 期待結果 項目3 条件1 条件3 項目1 条件2 IN IN 条件4 IN 条件5
  64. 64. ②できめたON・OFFポイントを、 Binderのドメインテストマトリックスに おとしこむ。 →1つの項目のONポイントまたはOFFポイントに対して、他の項目はINポイ ントになるように設定する。 →1つのドメインに対し、1表必要 やりかた③ くみあわせる 境界条件 ONポイント OFFポイント 1 x ≧ 0 y = 0 y = -1 2 x ≦ 5 x = 5 x = 6 3 y ≧ 0 y = 0 y = -1 4 y ≦ 4 y = 4 y = 5 5 x + y ≦ 7 x + y = 7 x + y = 8 ケース1 ケース2 ケー ON OFF ON OFF ON OFF ON OFF 項目2 条件1 条件3 項目1 条件2 代表値 条件4
  65. 65. ケース1 ケース2 ON 0 OFF ON OFF ON OFF ON OFF 5 ON OFF 5 有効 無効 x/y x + y ≦ 7 IN 期待結果 x x ≧ 0 x ≦ 5 IN y y ≧ 0 y ≦ 4 IN やりかた③ くみあわせる 境界条件 1 x ≧ 0 2 x ≦ 5 3 y ≧ 0 4 y ≦ 4 5 x + y ≦ 7 縦の見出しに、境界に関わる項目(x,yなど)と、境界条件を書き込む。
  66. 66. ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7 ON 0 OFF -1 ON 5 OFF 6 1 2 ON 0 OFF -1 ON OFF 5 4 1 1 ON 7 OFF 5 3 6 1 1 有効 無効 有効 無効 有効 無効 有効 x/y x + y ≦ 7 IN 期待結果 x x ≧ 0 x ≦ 5 IN y y ≧ 0 y ≦ 4 IN やりかた③ くみあわせる テストしたい項目について、ONポイントまたはOFFポイントを1ケース1つ ずつ入力していく。
  67. 67. ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7 ON 0 OFF -1 ON 5 OFF 6 1 2 ON 0 OFF -1 ON OFF 5 4 1 1 ON 7 OFF 5 3 6 1 1 有効 無効 有効 無効 有効 無効 有効 x/y x + y ≦ 7 IN 期待結果 x x ≧ 0 x ≦ 5 IN y y ≧ 0 y ≦ 4 IN やりかた③ くみあわせる ONポイント・OFFポイントを入力した項目以外の項目(yなど)にはINポイ ントのデータを入力。
  68. 68. ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7 ON 0 OFF -1 ON 5 OFF 6 1 2 ON 0 OFF -1 ON OFF 5 4 1 1 ON 7 OFF 5 3 6 1 1 有効 無効 有効 無効 有効 無効 有効 x/y x + y ≦ 7 IN 期待結果 x x ≧ 0 x ≦ 5 IN y y ≧ 0 y ≦ 4 IN やりかた③ くみあわせる くみあわされた項目に対する、テストケースの期待結果を入力。
  69. 69. ケース1 ケース2 ケース3 ケース4 ケース5 ケース6 ケース7 ケース8 ケース9 ケース10 ON 0 OFF -1 ON 5 OFF 6 1 2 1 1 4 4 ON 0 OFF -1 ON 4 OFF 5 5 4 1 1 3 4 ON 7 7 OFF 8 5 3 6 1 1 5 6 有効 無効 有効 無効 有効 無効 有効 無効 有効 無効 x/y x + y ≦ 7 IN 期待結果 x x ≧ 0 x ≦ 5 IN y y ≧ 0 y ≦ 4 IN 【例題】解答例 xのONポイント/OFFポイ ントのテスト yのONポイント/OFFポイ ントのテスト x+yのONポイント/OFF ポイントのテスト
  70. 70. ドメイン分析で気をつける ところ ・x = a のような不等式でないときの判定はどうするのか →この場合、値が1つだけの同値クラスがあるとみなす。 つまり ONポイント:6 OFFポイント:5、7(データが整数の場合)
  71. 71. ドメイン分析の効果 複数の値を同時にテストできる。 →以下の欠陥が発見可能。 境界の移動 境界の傾き違い Y<2+x Y<3Y<5 Y<10-x
  72. 72. ドメイン分析の効果 以下の欠陥が発見可能(続き)。 境界抜け 余分な境界 Y<2X+2 Y<10-X Y<2X+2 Y<1/2X Y<1/2X Y<10-X
  73. 73. では、やってみよう (問題文非公開)
  74. 74. 最後に
  75. 75. 今日お話ししたこと 同値分割 テスト対象の振る舞いによってグループわけしてテスト →テストケースの削減が可能。 境界値分析 グループの境界値をねらいうってテスト →境界値にかかわる誤りを検出できる。 ドメイン分析 グループの境界値のONポイント・OFFポイントを組み合わせ てテスト →複数の値を同時にテストできる。
  76. 76. まとめ 同値分割・境界値分析・ドメイン分析 はどんなテストでも使う可能性がある 意識してしっかり使いましょう
  77. 77. 困ったときの参考文献 リー・コープランド著、宗 雅彦訳 「はじめて学ぶソフトウェアのテスト技法」 日経BP社、2005年 秋山 浩一著 「ソフトウェアのテスト技法ドリル -テスト設計の考え方と実際-」 日科技連出版社、2010年 ボーリス・バイザー著 「実践的プログラムテスト入門 -ソフトウェアのブラックボックステスト-」 日経BP社、 1997年 SQuBOK策定部会編 「ソフトウェア品質知識体系ガイド(第2版)」 日経BP社、2005年
  78. 78. ご清聴ありがとうございまし た。

×