Upgrade to Pro — share decks privately, control downloads, hide ads and more …

analyze the behavior with decision table

imtnd
December 12, 2021

analyze the behavior with decision table

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

in WACATE 2021 winter
https://wacate.jp/workshops/2021winter/

imtnd

December 12, 2021
Tweet

More Decks by imtnd

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. デシジョンテーブルとは︖
    • 別名︓決定表
    • 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値ではなく、値を記述したものです

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. デシジョンテーブルテストにおけるデシジョンテーブル
    デシジョンテーブルテストを⾏う際に作成するデシジョンテーブルは、
    因⼦と⽔準を意識して記述すると良い
    原因 年齢 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 - - -

    View Slide

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

    View Slide

  13. 同値分割法

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. 同値分割法ワーク解説
    検索ボタンが押せる
    ⽂字列の⻑さ
    有効
    無効 無効
    1 1024
    0 1025
    半⾓
    ⽂字幅種
    全⾓
    数字
    記号
    ⽂字種
    英字
    ⽇本語



    ハイフン記号
    スペース記号



    カタカナ
    漢字
    ひらがな
    旧字体



    旧漢字
    韓国語
    記号
    ⽇本語

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. デシジョンテーブルの作成⼿順
    原因 年齢 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になる

    View Slide

  28. ⽔準の組み合わせパターン


    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個の組み合わせができる
    何も考えず制約なしの組み合わせを書き出して、整理するのもあり

    View Slide

  29. デシジョンテーブルの作成⼿順
    原因 年齢 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 - -

    View Slide

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

    View Slide

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

    View Slide

  32. デシジョンテーブルテストワーク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分

    View Slide

  33. デシジョンテーブルテストワーク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カードかクレジットカードか、現⾦で決済が可能です。
    複数の⾦額条件に⼀致した場合は⾦額が安くなる⽅を適⽤します。
    ⽀払う⾦額に対してのデシジョンテーブルを作成してください。
    料⾦
    料⾦に関係しそうな
    条件

    View Slide

  34. デシジョンテーブルテストワーク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

    View Slide

  35. デシジョンテーブルテストワーク2解説


    曜⽇ 平⽇
    ⼟⽇祝⽇
    時間 20時まで
    20時以降
    年齢 70歳未満
    70歳以上
    学⽣ ⼤・専
    中・⾼



    曜⽇ 平⽇
    ⼟⽇祝⽇
    時間 20時まで
    20時以降
    年齢 70歳未満
    70歳以上
    学⽣属性 学⽣ではない
    学⽣区分 ⼤・専
    中・⾼

    因⼦、⽔準の分け⽅は⼀通りではない

    View Slide

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

    View Slide

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

    View Slide

  38. デシジョンテーブルの圧縮
    運転予定の条件は
    結果に関係していない
    原因 年齢 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でも
    どちらでも良い場合は-で記載する
    ※条件が結果に関係なくてもテストを⾏いたい場合は、意図的に圧縮しない場合もあります

    View Slide

  39. デシジョンテーブルの整理
    原因 年齢 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 - - -

    View Slide

  40. デシジョンテーブルの整理
    原因 年齢 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 - -

    View Slide

  41. デシジョンテーブルの圧縮、整理
    圧縮、整理して簡単化したデシジョンテーブルを
    簡単化したデシジョンテーブル(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)デシジョンテーブルと呼ぶ。

    View Slide

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

    View Slide

  43. デシジョンテーブル圧縮ワーク解説


    時間 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歳以下の⼈は、
    ⼩、中、⾼でなければ料⾦は⼀律となる。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  47. 参考資料
    • 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

    View Slide