Slide 1

Slide 1 text

デシジョンテーブルで 振る舞いを整理しよう WACATE 2021 WINTER

Slide 2

Slide 2 text

⾃⼰紹介 • ⾓⽥ 俊 • 仕事 ソフトウェアエンジニア 最近︓ QAエンジニア • Twitter @imtnd • コミュニティ活動 • WACATE実⾏委員 • NaITE運営スタッフ • テストプロセス改善技術研究会

Slide 3

Slide 3 text

セッションのゴール • テスト技法の⼀つである「デシジョンテーブルテスト」につい て理解を深める • デシジョンテーブルとは何かが分かる • デシジョンテーブルテストとは何かが分かる • デシジョンテーブルテストの使い所が分かる • デシジョンテーブルテストが使えるようになる • デシジョンテーブルテストの前提となる技法についても理解を 深める

Slide 4

Slide 4 text

デシジョンテーブルとは︖ • 別名︓決定表 • JIS X 0125:1986 • 仕様の⼊⼒(条件)と出⼒(アクション)の論理的関係を整理する⼿法 • ソフトウェアの設計などに使⽤される 例) 年齢が20歳以上で、⾞などの運転予定がなければ飲酒できる 年齢が20歳以上 Y Y N N 運転予定がない Y N Y N 飲酒可能 X - - - ⽇本産業規格(JIS=Japanese Industrial Standardsの略)。 ⽇本の産業製品に関する規格や測定法などが定められた⽇本の国家規格のこと。 本セッションで扱うのでは、制限指定(limited-entry)デシジョンテーブルであり、拡張指定(extended-entry)デシジョンテーブルは扱いません。 拡張指定(extended-entry)デシジョンテーブルはY/NやX/-などの2値ではなく、値を記述したものです

Slide 5

Slide 5 text

デシジョンテーブルテストとは︖ • ⼊⼒(条件)と出⼒(アクション)の論理的関係(ロジック)をディ シジョンテーブルを作成することで明らかにし、 その論理でソフトウェアが実装されていることをテストするた めの技法 •モデル準拠テスティング⼿法 SWEBOK •仕様に基づいたテスト技法 SQuBOK •ブラックボックステスト技法 •要件定義の技法でもある JSTQB •論理組み合わせテスト ソフトウェアテスト技法ドリル

Slide 6

Slide 6 text

モデリング(モデル化) • モデリング(モデル化)とは、問題解決の対象を抽象化表現すること • 抽象化表現とは、対象から注⽬すべき事柄のみを抜き出して、表現することをいう • ⾃然⾔語(⽇本語など)で記載された情報は、ノイズの取捨選択が難しく、 要素同⼠の⽭盾点などに気がつくのが難しい • ディシジョンテーブルなどのモデリング技法で情報を整理することで、情 報を把握しやすくなる

Slide 7

Slide 7 text

Y: Yes N: No ⾃然⾔語記述: 年齢が20歳以上で、⾞などの運転予定がなければ飲酒できる モデリング:デシジョンテーブル ⾃然⾔語記述を読んだだけでは、次のような事柄を即時に理解するのが難しい。 • パターンが何パターンあるのか • 条件に⽭盾点はないのか • どういう条件のときに、飲酒可能という判定結果となるのか • 飲酒可能という条件のときはどういうときなのか モデリングされたデシジョンテーブルでは、上記のような情報を簡単に読み取ることができる 年齢が20歳以上 Y Y N N 運転予定がない Y N Y N 飲酒可能 X - - - X:該当 -:該当しない

Slide 8

Slide 8 text

組み合わせの種類 • 組み合わせテストを考えるときに考慮すること 有則 機能が動作する⼊⼒と出⼒(処理)の論理関係が定義されているもの 無則 論理関係が定義されていないが組み合わせが可能なもの 組み合わせても何も結果に影響がないと思われるもの 禁則 組み合わせることができないもの 組み合わせることが禁⽌されているもの ※ JSTQBには記載のない概念です

Slide 9

Slide 9 text

デシジョンテーブルテストのテスト範囲 有則 無則 禁則 デシジョンテーブルテストのテストの対象は、 基本的には有則の組み合わせ条件に対して、振る舞いが想定のロジック通りになっているかのテストを⾏う。 ただし、デシジョンテーブルを作成する段階で 定義されていない組み合わせ条件(無則な条件)や、 禁⽌されている組み合わせ条件(禁則な条件)が⾒つかることもある。 デシジョンテーブルテストのテスト範囲

Slide 10

Slide 10 text

因⼦と⽔準 デシジョンテーブルを作成する際に、 網羅的に条件を出すために、因⼦と⽔準という概念に着⽬する 因⼦ 要因の変数(値やステータスを持つもの)。 ⽔準を抽象化したもの。 ⽔準 因⼦が取る値。値やステータス。 因⼦を具体化したもの。 OS macOS Windows Linux 因⼦ ⽔準 ※ JSTQBには記載のない概念です 実験計画法の⽤語です

Slide 11

Slide 11 text

デシジョンテーブルテストにおけるデシジョンテーブル デシジョンテーブルテストを⾏う際に作成するデシジョンテーブルは、 因⼦と⽔準を意識して記述すると良い 原因 年齢 20歳以上 Y Y N N 19歳以下 N N Y Y 運転予定 ある Y N Y N ない N Y N Y 結果 飲酒可能 - X - - 年齢が20歳以上 Y Y N N 運転予定がない Y N Y N 飲酒可能 X - - -

Slide 12

Slide 12 text

因⼦、⽔準は同値分割の関係 因⼦を具体化、分割し、まとめられるものをグループ化したものが⽔準となる。 20歳以上 19歳以下 年齢 ある ない 運転予定 Windows Linux OS macOS ※同値分割した⽔準をデシジョンテーブルにする際に、原因と結果に関係がない⽔準は省略することもあります。

Slide 13

Slide 13 text

同値分割法

Slide 14

Slide 14 text

同値分割法 英語名称は、Equivalence Partitioning。 パラメータを特定の観点からみたときに、同じように処理される(と 思われる)値のセットとして分割、識別する⼿法。 値のセットは、同値パーティション(同値クラス)と呼ばれる。 ”値”とは数字のみではなく、範囲、種類、ステータスも含む。 同値パーティションから代表値を使⽤してテストを⾏うため、 テストケースの削減になる。 パーティション(Partition) 区画、仕切り クラス(Class) 種類、集まり

Slide 15

Slide 15 text

例︓宅配便の代引き⼿数料 代引き⼿数料の価格 商品価格 1円 〜300,000円 330円 〜9,999円 〜29,999円 〜99,999円 440円 660円 1100円 https://business.kuronekoyamato.co.jp/service/lineup/payment_daibiki/index.html

Slide 16

Slide 16 text

例︓宅配便の代引き⼿数料 代引きが可能な⾦額 商品価格 〜0円 〜300,000円 有効 無効 無効 有効な同値クラス︓有効パーティション(有効同値クラス) 無効な同値クラス︓無効パーティション(無効同値クラス) 無効値は仕様書に明確化されていないことが多いので、特に意識する

Slide 17

Slide 17 text

例︓⽇本 地域区分(8地域区分) 同値分割法は数値のみに適⽤する⼿法ではない https://tools.m-bsys.com/data/area_classification.php 東北 関東 北海道 中部 中国 四国 近畿 九州

Slide 18

Slide 18 text

例︓⽇本 地域区分(8地域区分) 同じ⽇本を同値分割する⽅法でも、分割する視点により分割する⽅法は異なる = テストの⽬的により、どういう視点で分割するのかは異なる https://tools.m-bsys.com/data/area_classification.php 気象庁・地⽅季節予報で⽤いる区分 11地域

Slide 19

Slide 19 text

同値分割法では、MECEを意識して分割する 「MECE」とは、Mutually Exclusive and Collectively Exhaustiveの頭⽂字をとった⾔葉で、 ミーシーもしくはミッシーと読む。 直訳すると「相互に重複することなく、全体としてモレがない」という意味。 https://www.weblio.jp/content/MECE

Slide 20

Slide 20 text

ズームイン、ズームアウト OS macOS Windows Linux Monterey Big Sur Windows 11 Windows 10 ubuntu 21.04 CentOS 8 ・・・ ・・・ ・・・ ・・・ ・・・ ズームアウト 抽象的に捉えて、 全体を俯瞰する ズームイン 具体的に捉えて、 詳細な事柄を把握 する

Slide 21

Slide 21 text

同値分割法ワーク データベースから、⼈の名前や電話番号を 検索できるシステムがあります。 スペース記号を⼊⼒するとor検索ができます。 電話番号はハイフン記号(-)があっても、なくても 検索することができます。 テキストエリアは1⽂字以上、1024⽂字以下を ⼊⼒すると検索ボタンを押すことができます。 テキストボックスに⼊⼒してテストする値を 同値分割法で考えてください。 個⼈ワーク:10分 グループ共有:5分

Slide 22

Slide 22 text

同値分割法ワーク解説 検索ボタンが押せる ⽂字列の⻑さ 有効 無効 無効 1 1024 0 1025 半⾓ ⽂字幅種 全⾓ 数字 記号 ⽂字種 英字 ⽇本語 ・ ・ ・ ハイフン記号 スペース記号 ・ ・ ・ カタカナ 漢字 ひらがな 旧字体 ・ ・ ・ 旧漢字 韓国語 記号 ⽇本語

Slide 23

Slide 23 text

デシジョンテーブルテスト

Slide 24

Slide 24 text

デシジョンテーブルテスト ソフトウェアのロジック(ルール)が明確になっていないときに、 ロジック(ルール)を明確化し、 そのロジック(ルール)を網羅するようにテストを設計する技法。 表の上部に条件(原因)、下部にアクション(結果)を記述する。 条件は真(True)、偽(False)の状態で⽰す。 アクションが発⽣するときはXで⽰し、 発⽣しないときは-で⽰す。 ※デシジョンテーブルの記述⽅法は、他のパターンもあります。 本資料の上部はJISの書き⽅に合わせていましたが、 これ以降のスライドではJSTQBの書き⽅でTとFを使⽤します。

Slide 25

Slide 25 text

デシジョンテーブルの作成⼿順 仕様書 テストしたいこと 確認したい アクションと、 その要因になり そうな因⼦、⽔ 準を抜き出す。 アクションの条件 となる因⼦、⽔準 アクション デシジョンテーブルで 条件とアクションを 整理する デシジョンテーブル

Slide 26

Slide 26 text

デシジョンテーブルの作成⼿順 原因 結果 原因 年齢 20歳以上 19歳以下 運転予定 ある ない 結果 飲酒可能 原因と結果の表を作成する 因⼦、⽔準、アクションを記載する ⽔準は漏れが無いように書き出す

Slide 27

Slide 27 text

デシジョンテーブルの作成⼿順 原因 年齢 20歳以上 19歳以下 運転予定 ある ない 結果 飲酒可能 原因 年齢 20歳以上 T T F F 19歳以下 F F T T 運転予定 ある T F T F ない F T F T 結果 飲酒可能 ⽔準の組み合わせを網羅するように、 パターンを機械的に書き込んでいく。 因⼦内の⽔準がT、Fになるパターンとして、 次のパターンがある ・制約なし ・因⼦内の⽔準が常に⼀つのみがTになる ・因⼦内の⽔準が多くても⼀つがTになる ・因⼦内の⽔準が少なくても⼀つがTになる

Slide 28

Slide 28 text

⽔準の組み合わせパターン 原 因 A A-1 T F A-2 F T ・因⼦内の⽔準が常に⼀つのみがTになる ・因⼦内の⽔準が少なくても⼀つがTになる ・制約なし 原 因 A A-1 F T F T A-2 F F T T ・因⼦内の⽔準が多くても⼀つがTになる 原 因 A A-1 F T F A-2 F F T 原 因 A A-1 T F T A-2 F T T ディシジョンテーブルのサイズは、⽔準数をnとしたとき、最⼤で、2n個の組み合わせができる 何も考えず制約なしの組み合わせを書き出して、整理するのもあり

Slide 29

Slide 29 text

デシジョンテーブルの作成⼿順 原因 年齢 20歳以上 T T F F 19歳以下 F F T T 運転予定 ある T F T F ない F T F T 結果 飲酒可能 期待結果になるところ、ならないところを埋めていく 原因 年齢 20歳以上 T T F F 19歳以下 F F T T 運転予定 ある T F T F ない F T F T 結果 飲酒可能 - X - -

Slide 30

Slide 30 text

デシジョンテーブルテストワーク1 とあるショッピングサイトがあります。 このショッピングサイトではお茶と和菓⼦を⼀緒にカートに⼊れて、 会計⼿続きをすると5%割引になるキャンペーンを実施します。 割引される条件のデシジョンテーブルを作成してください。 個⼈ワーク:10分

Slide 31

Slide 31 text

デシジョンテーブルテストワーク1解説 条件 お茶 カートにある T T F F カートにない F F T T 和菓⼦ カートにある T F T F カートにない F T F T 結果 5%割引 X - - -

Slide 32

Slide 32 text

デシジョンテーブルテストワーク2 とある映画館の券売機をテストします。 ⼀般の料⾦は1800円で、20時以降は1300円になります。 シニア(70歳以上)は、1100円で、20時以降も1100円です。 ⼤学⽣、専⾨学⽣は1500円で、20時以降は1300円になります。 中学⽣、⾼校⽣は1000円で、20時以降も1000円です。 ⼩学⽣は1000円で、20時以降も1000円です。 ⼟⽇祝⽇は、⼀般の料⾦は1800円で、20時以降は1300円になります。 シニア(70歳以上)は、1100円で、20時以降も1100円です。 ⼤学⽣、専⾨学⽣は1500円で、20時以降は1300円になります。 中学⽣、⾼校⽣は1000円で、20時以降も1000円です。 ⼩学⽣は1000円で、20時以降も1000円です。 ⽀払い⽅法は、ICカードかクレジットカードか、現⾦で決済が可能です。 複数の⾦額条件に⼀致した場合は⾦額が安くなる⽅を適⽤します。 ⽀払う⾦額に対してのデシジョンテーブルを作成してください。 個⼈ワーク:20分 グループディスカッション:15分

Slide 33

Slide 33 text

デシジョンテーブルテストワーク2解説 とある映画館の券売機をテストします。 ⼀般の料⾦は1800円で、20時以降は1300円になります。 シニア(70歳以上)は、1100円で、20時以降も1100円です。 ⼤学⽣、専⾨学⽣は1500円で、20時以降は1300円になります。 中学⽣、⾼校⽣は1000円で、20時以降も1000円です。 ⼩学⽣は1000円で、20時以降も1000円です。 ⼟⽇祝⽇は、⼀般の料⾦は1800円で、20時以降は1300円になります。 シニア(70歳以上)は、1100円で、20時以降も1100円です。 ⼤学⽣、専⾨学⽣は1500円で、20時以降は1300円になります。 中学⽣、⾼校⽣は1000円で、20時以降も1000円です。 ⼩学⽣は1000円で、20時以降も1000円です。 ⽀払い⽅法は、ICカードかクレジットカードか、現⾦で決済が可能です。 複数の⾦額条件に⼀致した場合は⾦額が安くなる⽅を適⽤します。 ⽀払う⾦額に対してのデシジョンテーブルを作成してください。 料⾦ 料⾦に関係しそうな 条件

Slide 34

Slide 34 text

デシジョンテーブルテストワーク2解説 原 因 曜⽇ 平⽇ T T T T T T T T T T T T T T T T F F F F F F F F F F F F F F F F ⼟⽇祝⽇ F F F F F F F F F F F F F F F F T T T T T T T T T T T T T T T T 時間 20時まで T T T T T T T T F F F F F F F F T T T T T T T T F F F F F F F F 20時以降 F F F F F F F F T T T T T T T T F F F F F F F F T T T T T T T T 年齢 70歳未満 T T T T F F F F T T T T F F F F T T T T F F F F T T T T F F F F 70歳以上 F F F F T T T T F F F F T T T T F F F F T T T T F F F F T T T T 学⽣ ⼤・専 F T F F F T F F F T F F F T F F F T F F F T F F F T F F F T F F 中・⾼ F F T F F F T F F F T F F F T F F F T F F F T F F F T F F F T F ⼩ F F F T F F F T F F F T F F F T F F F T F F F T F F F T F F F T 結 果 料⾦ 1800円 X - - - - - - - - - - - - - - - X - - - - - - - - - - - - - - - 1500円 - X - - - - - - - - - - - - - - - X - - - - - - - - - - - - - - 1300円 - - - - - - - - X X - - - - - - - - - - - - - - X X - - - - - - 1100円 - - - - X X - - - - - - X X - - - - - - X X - - - - - - X X - - 1000円 - - X X - - X X - - X X - - X X - - X X - - X X - - X X - - X X

Slide 35

Slide 35 text

デシジョンテーブルテストワーク2解説 原 因 曜⽇ 平⽇ ⼟⽇祝⽇ 時間 20時まで 20時以降 年齢 70歳未満 70歳以上 学⽣ ⼤・専 中・⾼ ⼩ 原 因 曜⽇ 平⽇ ⼟⽇祝⽇ 時間 20時まで 20時以降 年齢 70歳未満 70歳以上 学⽣属性 学⽣ではない 学⽣区分 ⼤・専 中・⾼ ⼩ 因⼦、⽔準の分け⽅は⼀通りではない

Slide 36

Slide 36 text

ワーク元ネタ 実際の業務ではもっと複雑な条件に対応する必要があります https://cinemacity.co.jp/ticket/

Slide 37

Slide 37 text

デシジョンテーブルの圧縮 デシジョンテーブルは条件数が多くなると、 ⼤きくなりすぎて、条件を把握しにくいというデメリットがある 条件を整理して、デシジョンテーブルを⼩さくすることができる

Slide 38

Slide 38 text

デシジョンテーブルの圧縮 運転予定の条件は 結果に関係していない 原因 年齢 20歳以上 T T F 19歳以下 F F T 運転予定 ある T F - ない F T - 結果 飲酒可能 - X - 原因 年齢 20歳以上 T T F F 19歳以下 F F T T 運転予定 ある T F T F ない F T F T 結果 飲酒可能 - X - - 列を圧縮することができる 圧縮して、条件がTでもFでも どちらでも良い場合は-で記載する ※条件が結果に関係なくてもテストを⾏いたい場合は、意図的に圧縮しない場合もあります

Slide 39

Slide 39 text

デシジョンテーブルの整理 原因 年齢 20歳以上 T T T T F F F F 19歳以下 F F F F T T T T 運転予定 ある T T F F T T F F ない F F T T F F T T 運転免許 取得済み T F T F T F T F 未取得 F T F T F T F T 結果 飲酒可能 - - X X - - - - 原因の中に組み合わせられない項⽬(禁則)があった ※禁則でもテストを⾏いたい場合は、意図的に削除しない場合もあります 原因 年齢 20歳以上 T T T F F F 19歳以下 F F F T T T 運転予定 ある T F F T F F ない F T T F T T 運転免許 取得済み T T F T T F 未取得 F F T F F T 結果 飲酒可能 - X X - - -

Slide 40

Slide 40 text

デシジョンテーブルの整理 原因 年齢 20歳以上 T T T T F F F F 19歳以下 F F F F T T T T 運転予定 ある T T F F T T F F ない F F T T F F T T 注⽂⾦額 1000円以上 T F T F T F T F 1000円未満 F T F T F T F T 結果 飲酒可能 - - X X - - - - 原因と結果を埋めたあとで、 注⽂⾦額が関係ないことがわかった(無則) ※条件が結果に関係なくてもテストを⾏いたい場合は、意図的に削除しない場合もあります 原因 年齢 20歳以上 T T F F 19歳以下 F F T T 運転予定 ある T F T F ない F T F T 結果 飲酒可能 - X - -

Slide 41

Slide 41 text

デシジョンテーブルの圧縮、整理 圧縮、整理して簡単化したデシジョンテーブルを 簡単化したデシジョンテーブル(Collapsed decision table)と呼ぶ。 圧縮、整理していないデシジョンテーブルは 完全なデシジョンテーブル(Full decision table)と呼ぶ。 圧縮や整理を⾏い、⾏や、列を削除するときは本当に削除するべきかを検討する。 レビューするときは削除せずに、グレーアウトなどをしておくと良い。 原因 年齢 20歳以上 T T T T F F F F 19歳以下 F F F F T T T T 運転予定 ある T T F F T T F F ない F F T T F F T T 運転免許 取得済み T F T F T F T F 未取得 F T F T F T F T 結果 飲酒可能 - - X X - - - - 値として2値を持つ指定制限(limited-entry)デシジョンテーブルで、 すべての条件が網羅されたもの(要素数がnで2nの列が存在するもの)を 完全な指定制限(complete limited-entry)デシジョンテーブルと呼ぶ。

Slide 42

Slide 42 text

デシジョンテーブル圧縮ワーク ワーク2で作成したデシジョンテーブルを圧縮して、 簡単化したデシジョンテーブルを作成してみましょう 個⼈ワーク:5分

Slide 43

Slide 43 text

デシジョンテーブル圧縮ワーク解説 原 因 時間 20時まで T T - - F 20時以降 F F - - T 年齢 70歳未満 T T - F T 70歳以上 F F - T F 学⽣ ⼤・専 F T F - - ⼩・中・⾼ F F T F F 結 果 料⾦ 1800円 X - - - - 1500円 - X - - - 1300円 - - - - X 1100円 - - - X - 1000円 - - X - - 今回の条件では、平⽇、⼟⽇祝⽇は料⾦に関係していない。 ⼩、中、⾼校⽣は時間帯、年齢によらず料⾦は⼀律。 20時以降の70歳以下の⼈は、 ⼩、中、⾼でなければ料⾦は⼀律となる。

Slide 44

Slide 44 text

デシジョンテーブルテストに関係するテスト技法 • 原因結果グラフ • CFD(Cause Flow Diagram)法 https://www.slideshare.net/softest/wacate2018-102550504 https://www.slideshare.net/omn/wacate2012w-letsdrawcfdpublic

Slide 45

Slide 45 text

まとめ • デシジョンテーブルテストは主に有則の組み合わせに対して 適⽤するテスト技法 • 仕様が複雑なときは、整理して、それを網羅するようにテスト を設計することができる • デシジョンテーブルの因⼦、⽔準は同値分割法を⽤いて網羅的 に出すことができる • デシジョンテーブルは圧縮や整理で簡単化することができる

Slide 46

Slide 46 text

ふりかえり ふりかえりをします • 学んだこと • 感想 • 次に活かしたいこと など ⾃由に書いてみてください 個⼈ワーク:5分

Slide 47

Slide 47 text

参考資料 • SQuBOK V3 • SWEBOK V3.0 • JSTQB Advanced Level Test Analyst シラバス Version 3.1.1.J03 • ソフトウェアテスト設計ドリル • note:93号︓デシジョンテーブル https://note.com/akiyama924/n/ndd7dcbb2cd5b • ソフトウェアテストの最新動向︓7.テスト/デバッグ技法の効果と効率 https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=60855&file_id=1&fi le_no=1 • ソフトウェアテストの展望 http://www.jasst.jp/archives/jasst07e/pdf/A7.pdf • WACATE2018 夏 原因結果グラフ解説 https://www.slideshare.net/softest/wacate2018-102550504 • かいてみようCFD https://www.slideshare.net/omn/wacate2012w-letsdrawcfdpublic