SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
かいてみようCFD
    ※公開用(一部、削除・更新しています)



          WACATE2012冬

     近江 久美子(WACATE実行委員会)
(ワークのサポート 上田 卓由(WACATE実行委員会))




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   1
こんなあなたに

• 条件について考慮漏れがあった
• 仕様の確認不足で欠陥を見逃した




      Copyright (C) 2012 Kumiko Ohmi All rights reserved   2
準備OK?
目次
          1. まずは、基本
2.復習がてら~関連が深い技法
              3. 腕試し!
      4. 踏み込んで、+α
          5. 視野を広げて

        Copyright (C) 2012 Kumiko Ohmi All rights reserved   3
準備OK?
目次

        1. まずは、基本
              2.復習がてら~関連が深い技法
                            3. 腕試し!
                    4. 踏み込んで、+α
                        5. 視野を広げて



        Copyright (C) 2012 Kumiko Ohmi All rights reserved   4
CFDの特徴と生い立ち

• CFD=Cause Flow Diagram
  – 複雑な論理に対するテストに
  – “Case Flow Diagram”(本「ソフトウェア
    開発・検証技法」より)とされていた頃も
                                                                Windows3.1、
                                                                  NTより前
• 松尾谷 徹氏が1980年代に開発                                              (1990年台)
  – 今も発展し続けている
  – WACATE2012冬「CFD++(仮)」



           Copyright (C) 2012 Kumiko Ohmi All rights reserved                 5
CFDの特徴と生い立ち




• 「テスト技法ポジショニングマップ」引用元:
  http://www.hayst.com/Pages/positioning.aspx

                   Copyright (C) 2012 Kumiko Ohmi All rights reserved   6
CFDの特徴と生い立ち

• 技法として
  CFD法(CFD技法)は、同値分割、CFD、デシジョ
  ンテーブルから構成される


• 図として              ユーザーID                  パスワード                 メールアドレス
                                                                             登録
                      未登録                     入力あり                 入力あり
                                                                             処理
                      登録済                     入力なし                 入力なし


                                                                            エラー



  • フリーで利用できるツール「 drawCFD(仮) 」
    – http://softest.cocolog-nifty.com/labo/drawCFD/
    – デシジョンテーブルへの変換も可能


             Copyright (C) 2012 Kumiko Ohmi All rights reserved                   7
例題で考えみましょう

• 例題 新規会員登録ボタンを押した時の
  挙動

   まず「ユーザーID」に未登録の値が入力さ
    れていることを確認する。
   次に「パスワード」「メールアドレス」に、値が
    入力されていることを確認する。
   上記の条件を全て満たす場合は登録処
    理へ、 それ以外の場合はエラーとする。


       Copyright (C) 2012 Kumiko Ohmi All rights reserved   8
例題で考えみましょう

• CFDの登場人物
 –原因
 –結果
 –流れ(線)



      Copyright (C) 2012 Kumiko Ohmi All rights reserved   9
例題で考えみましょう

• 手順
 – CFDをかく
   • 同値分割を使いテストすべき結果とその原因を見
     つけ出し、図にする
   • 処理順に従って流れ線をかく
 – CFDを元にデシジョンテーブルをかく
   • CFD、デシジョンテーブルを照合して確認する




            Copyright (C) 2012 Kumiko Ohmi All rights reserved   10
同値分割を使いテ
ストすべき結果と
その原因を見つけ
出し、図にする



     Copyright (C) 2012 Kumiko Ohmi All rights reserved   11
例題で考えみましょう

• テストすべき結果と原因は?
 – 例題   新規会員登録ボタンを押した時の挙動


     まず「ユーザーID」に未登録の値が入力さ
      れていることを確認する。
     次に「パスワード」「メールアドレス」に、値が
      入力されていることを確認する。
     上記の条件を全て満たす場合は登録処
      理へ、 それ以外の場合はエラーとする。


          Copyright (C) 2012 Kumiko Ohmi All rights reserved   12
例題で考えみましょう

• テストすべき結果は?
 – 例題   新規会員登録ボタンを押した時の挙動


     まず「ユーザーID」に未登録の値が入力さ
      れていることを確認する。
     次に「パスワード」「メールアドレス」に、値が
      入力されていることを確認する。
     上記の条件を全て満たす場合は登録処
      理へ、 それ以外の場合はエラーとする。


          Copyright (C) 2012 Kumiko Ohmi All rights reserved   13
例題で考えみましょう

• 結果の原因は?

    まず「ユーザーID」に未登録の値が入力され
     ていることを確認する。
    次に「パスワード」「メールアドレス」に、値が入
     力されていることを確認する。
    上記の条件を全て満たす場合は登録処理
     へ、 それ以外の場合はエラーとする。




        Copyright (C) 2012 Kumiko Ohmi All rights reserved   14
例題で考えみましょう

• 同値分割して、図にしましょう ~結果
  上記の条件を全て満たす場合は登録処理へ、 それ以外の
   場合はエラーとする。


  • 三浦マグロさんの場合
    – ユーザーIDmaguro, ****, magu@example.com”
  • 若手太郎さんの場合
    – “wakate, ****, taro@example.com”
  ⇒ 値に関わらず、「登録処理」




            Copyright (C) 2012 Kumiko Ohmi All rights reserved   15
例題で考えみましょう

• 同値分割して、図にしましょう ~結果
  上記の条件を全て満たす場合は登録処理へ、 それ以外の
   場合はエラーとする。
 – 有効系か無効系を判断しましょう
  • 目的の機能が動作する結果
    – 有効系の結果                                                   登録
                                                               処理

  • 目的の機能が動作しない結果
    – 無効系の結果
    – 下のほうに横線か塗りつぶし
                                                               エ
    – CFDでは、優先度は有効系より低い
                                                              ラー


         Copyright (C) 2012 Kumiko Ohmi All rights reserved         16
例題で考えみましょう

• 同値分割して、図にしましょう ~原因
   「パスワード」「メールアドレス」に、値が入力されていることを
    確認する。
  • 結果に対する影響を元に分割する
  • 「入力されていること」以外=「入力されていな
    いこと」
    – 1文字、2文字、 …=「入力あり」
 – 有効系か無効系を判断しましょう
  • どちらが有効系の結果につながりますか?



          Copyright (C) 2012 Kumiko Ohmi All rights reserved   17
例題で考えみましょう

• 同値分割して、図にしましょう ~原因
   「パスワード」「メールアドレス」に、値が入力されていることを
    確認する。
                                              パスワード
                                                入力あり

                                                入力なし




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   18
例題で考えみましょう

• 同値分割して、図にしましょう ~原因
   「パスワード」「メールアドレス」に、値が入力されていることを
    確認する。
                                              パスワード
     同値分割図
                                                入力あり
  有効系 → 小さい島
  無効系 → 大きい島
                                                入力なし



 – 図で表現した原因は処理の順に並べておきます

          Copyright (C) 2012 Kumiko Ohmi All rights reserved   19
処理順に
                                    従って
                                    流れ線をかく



Copyright (C) 2012 Kumiko Ohmi All rights reserved   20
例題で考えみましょう

• 流れ線をかきましょう
     まず「ユーザーID」に未登録の値が入力されていることを確認する。
     次に「パスワード」「メールアドレス」に、値が入力されていることを確認す
      る。
     上記の条件を全て満たす場合は登録処理へ、 それ以外の場合はエ
      ラーとする。

 ユーザーID       パスワード                          メールアドレス
                                                                   登録
  未登録            入力あり                              入力あり
                                                                   処理
  登録済           入力なし                               入力なし

  登録処理にたどりつくには                                                    エラー
    原因のどこを通る?

             Copyright (C) 2012 Kumiko Ohmi All rights reserved         21
例題で考えみましょう

• 注意その1 流れ線は処理順通りに
 – CFDでは、より合理的なテストをめざし実装
   の情報も利用

  メールアドレス         パスワード                        ユーザーID
                                                                  登録
   入力あり             入力あり                           未登録
                                                                  処理
   入力なし             入力なし                           登録済


  ユーザーIDの確認でエラーなのに                                               エラー
 メールアドレスとパスワードの処理が
        行われる?

            Copyright (C) 2012 Kumiko Ohmi All rights reserved         22
例題で考えみましょう

• 注意その2 無効系は1つずつテスト

ユーザーID   パスワード                        メールアドレス
                                                               登録
 未登録     入力あり                               入力あり
                                                               処理
 登録済      入力なし                               入力なし


                                                              エラー
エラーはどの原因で起こった?



         Copyright (C) 2012 Kumiko Ohmi All rights reserved         23
例題で考えみましょう

• (図としてのCFDは)完成!
ユーザーID   パスワード                          メールアドレス
                                                               登録
 未登録       入力あり                               入力あり
                                                               処理
 登録済       入力なし                               入力なし


                                                              エラー


• ここからデシジョンテーブルをかきまし
  ょう

         Copyright (C) 2012 Kumiko Ohmi All rights reserved         24
CFDを元に
デシジョン
テーブルをかく



     Copyright (C) 2012 Kumiko Ohmi All rights reserved   25
例題で考えみましょう

• デシジョンテーブル作成
 – CFDの原因→デシジョンテーブルの条件へ
 – CFDの結果→デシジョンテーブルの動作へ
 – CFDの流れ線を追って、デシジョンテーブル
   の列を埋める




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   26
例題で考えみましょう

• デシジョンテーブル作成
            ユーザーID               パスワード                    メールアドレス
                                                                      登録
             未登録                   入力あり                        入力あり   確認
                                                                      処理
             登録済                   入力なし                        入力なし

               テスト項目番号                               1
原因 ユーザーID      未登録                                   1                エラー
               登録済                                   0
   パスワード       入力あり                                  1

               入力なし                                  0

   メールアドレス     入力あり                                  1

               入力なし                                  0

結果 登録処理                                              1
   エラー
                Copyright (C) 2012 Kumiko Ohmi All rights reserved          27
例題で考えみましょう

• デシジョンテーブル作成
                              テスト項目番号                             1 2 3 4
 原因 ユーザーID                    未登録                                 1 0 1 1
                              登録済                                 0 1 0 0
    パスワード                     入力あり                                1   ― 1
                                                                       0

                              入力なし                                0   ― 0
                                                                       1

    メールアドレス                   入力あり                                1   ―― 0

                              入力なし                                0   ―― 1

 結果 登録処理                                                          1
    エラー                                                               1 1 1


             Copyright (C) 2012 Kumiko Ohmi All rights reserved               28
例題で考えみましょう

• 照合してチェック
         ユーザーID                                パスワード              メールアドレス
                                                                             登録
                          未登録                    入力あり              入力あり
                                                                             処理
                          登録済                    入力なし              入力なし


                                                                            エラー
             テスト項目番号                             1 2 3 4
原因 ユーザーID    未登録                                 1 0 1 1
             登録済                                 0 1 0 0
   パスワード     入力あり                                1     ― 1
                                                        0

             入力なし                                0     ― 0
                                                        1

   メールアドレス   入力あり                                1     ―― 0

             入力なし                                0     ―― 1

結果 登録処理                                          1
   エラー                                                1 1 1


             Copyright (C) 2012 Kumiko Ohmi All rights reserved                   29
例題で考えみましょう

• 手順
 – CFDをかく
   • 同値分割を使いテストすべき結果とその原因を洗
     い出す
   • 結果、原因を図にする
   • 処理順に従って流れ線をかく
 – CFDを元にデシジョンテーブルをかく
   • CFD、デシジョンテーブルを照合して確認する




            Copyright (C) 2012 Kumiko Ohmi All rights reserved   30
準備OK?
目次
                                                         1. まずは、基本



      2. 復習がてら
    ~関連が深い技法
                                                    3. 腕試し!
                                            4. 踏み込んで、+α
                                                5. 視野を広げて
        Copyright (C) 2012 Kumiko Ohmi All rights reserved       31
関連が深い技法:同値分割




   Copyright (C) 2012 Kumiko Ohmi All rights reserved   32
関連が深い技法:同値分割

• 全部はテストできない
  – 同じ欠陥が出るであろうもの同士、グループに
  – 例 1月の日付が入力されていたら、…
       • 1/1-1/31
       • 上記以外
12/                                                1/               1/
        1/1    1/2                …                                      2/1   2/2
 31                                                30               31

      if (mmdd >= 20120101 and mmdd <=20120131){
                          …


                    Copyright (C) 2012 Kumiko Ohmi All rights reserved               33
関連が深い技法:同値分割

• 全部はテストできない
  – 同じ欠陥が出るであろうもの同士、グループに
  – 例 1月の日付が入力されていたら、…

12/                                         1/               1/
      1/1   1/2            …                                      2/1   2/2
 31                                         30               31
                              日付
                         1/1-1/31

                        2/1-12/31

             Copyright (C) 2012 Kumiko Ohmi All rights reserved               34
関連が深い技法:同値分割

• 同値分割図、何かに似ていませんか?

  パスワード                                                        ML申込み

  入力あり                                                          する
                              日付
  入力なし                                                          しない
                         1/1-1/31

                        2/1-12/31



          Copyright (C) 2012 Kumiko Ohmi All rights reserved
関連が深い技法:同値分割

• 同値分割図、何かに似ていませんか?

                                                 ML申込み
  ML申込み
                                                         する
   する
   しない


                                   しない


          Copyright (C) 2012 Kumiko Ohmi All rights reserved   36
関連が深い技法:同値分割

• CFDの場合
 – 図にして考えると、他にないか?を考えやすい
  • 例 ML申込み「する」の場合は、…

   ML申込み

    する                • しない




           Copyright (C) 2012 Kumiko Ohmi All rights reserved   37
関連が深い技法:同値分割

• CFDの場合
 – 図にして考えると、他にないか?を考えやすい
  • 例 ML申込み「する」の場合は次の処理を行う

   ML申込み
                      •      しない
    する                •      申込み済
                      •      過去に申し込んでいたことがある


               仕様、設計に抜け漏れはないか?
               考えましょう

           Copyright (C) 2012 Kumiko Ohmi All rights reserved   38
関連が深い技法:デシジョンテーブル




     Copyright (C) 2012 Kumiko Ohmi All rights reserved   39
関連が深い技法:デシジョンテーブル

• デシジョンテーブル
 – 複数の変数や条件の論理的な関係を扱うとき
   に活用できる




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   40
関連が深い技法:デシジョンテーブル
                                                ※フォーマットや1、0、―の表記は
                                                        異なることもある

                             テスト項目番号                              1 2 3 4
 原因 ユーザーID                   未登録                                  1 0 1 1
                             登録済                                  0 1 0 0
    パスワード                    入力あり                                 1   ― 1
                                                                       0

                             入力なし                                 0   ― 0
                                                                       1

    メールアドレス                  入力あり                                 1   ―― 0

                             入力なし                                 0   ―― 1

 結果 登録処理                                                          1
    エラー                                                               1 1 1


             Copyright (C) 2012 Kumiko Ohmi All rights reserved               41
関連が深い技法:デシジョンテーブル
                                                ※フォーマットや1、0、―の表記は
条件を、判定順に列挙する                                            異なることもある
 (CFDでは「原因」)
                             テスト項目番号                              1 2 3 4
 原因 ユーザーID                   未登録                                  1 0 1 1
                             登録済                                  0 1 0 0
    パスワード                    入力あり    ― 1
                                      0                           1

                       入力なし        0 ― 0
                                      1

    メールアドレス            入力あり        1 ――
                      動作(処理)を、実行順に列挙する  0
                         (CFDでは「結果」)
                       入力なし        0 ―― 1

 結果 登録処理                                                          1
    エラー                                                               1 1 1


             Copyright (C) 2012 Kumiko Ohmi All rights reserved               42
関連が深い技法:デシジョンテーブル
                                                ※フォーマットや1、0、―の表記は
                                                        異なることもある

                             テスト項目番号                              1 2 3 4
 原因 ユーザーID                   未登録                                  1 0 1 1
                             登録済                                  0 1 0 0
    条件(原因)の組合せとそれに
    パスワード    入力あり
  対応する動作(結果)が書かれている
                                                                  1   ― 1
                                                                       0

        規則(各列)
             入力なし                                                 0   ― 0
                                                                       1

    メールアドレス
           タテに読む
                             入力あり                                 1   ―― 0

                             入力なし                                 0   ―― 1

 結果 登録処理                                                          1
    エラー                                                               1 1 1


             Copyright (C) 2012 Kumiko Ohmi All rights reserved               43
関連が深い技法:デシジョンテーブル

• デシジョンテーブル
 – 原因と結果(条件と動作)の関係を表で表現
  • テストを実行するときに扱いやすい
  • 異なる視点からの二重チェックができる
   – 原因と結果が全てテストされるか?
   – 組合せ、流れ線に抜けはないか?




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   44
関連が深い技法:デシジョンテーブル

• CFDの場合
 – CFD(図)で洗い出した原因、結果の同値を全て書く
   • デシジョンテーブルの条件はCFDの原因へ
     – デシジョンテーブルの条件(原因)の並びとCFDの原因並びは同じ
   • デシジョンテーブルの動作はCFDの結果へ
   • CFDの流れ線はデシジョンテーブルの列(条件と結果の組合せ)
     へ
 – 1で表現すると、同値クラスの登場回数が判り、Excelの
   関数等を使ってチェックしやすくなる
                               テスト項目番号                    1 2 3 4
        原因 ユーザーID              未登録                        1 0 1 1
                               登録済                        0 1 0 0
           パスワード               入力あり                       1     ― 1
                                                                 0

                               入力なし                       0     ― 0
                                                                 1

           メールアドレス             入力あり                       1     ―― 0

                               入力なし                       0     ―― 1

        結果 登録処理                                           1
           エラー                                                  1 1 1

           Copyright (C) 2012 Kumiko Ohmi All rights reserved           45
準備OK?
目次
                      1. まずは、基本
              2.復習がてら~関連が深い技法



                              3. 腕試し!
                                            4. 踏み込んで、+α
                                                5. 視野を広げて


        Copyright (C) 2012 Kumiko Ohmi All rights reserved   46
ワーク1

• 個人ワークで考えて頂きます
• 回答時間は10分
 – 足りない人はその後の休憩10分もどうぞ
• 時間が余ったら…
 – デシジョンテーブル作成
 – CFDとの照合
• 迷ったところはメモ!
 – ワーク2の共有時間や休憩時間に


       Copyright (C) 2012 Kumiko Ohmi All rights reserved   47
ワーク1

※問題は別紙で配布。
 別紙は本「公開用」のプレゼン資料には
 掲載しないが、
 後の「4. 踏み込んで、+α 」内にて
 問題文の一部を掲載している。




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   48
ワーク1

• この例題でお伝えしたかったこと
 – 「どちらのやり方でかこうかな」迷ったひと
   はいますか?




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   49
準備OK?


ズームイン、

ズームアウト




        Copyright (C) 2012 Kumiko Ohmi All rights reserved   50
ズームイン、ズームアウト

• 同値分割の粒度を変えてズームイン、ズ
  ームアウト
 – 必要なテストを絞り込む
 – 例 ※出力Wの有効/無効は別途テストする
     出力W
     200W                                                   出力W

     500W
                                                          有効なW
     600W
                                                          無効なW
     1000W
    無効なW


             Copyright (C) 2012 Kumiko Ohmi All rights reserved   51
ワーク2

• 個人ワークで考えて頂いたあとで、グル
  ープ内で共有して頂きます
 – 考え方を説明できるようにしてください
  • 例 原因と結果の洗い出しから図示までに考えた
    こと
  • 例 流れ線をかくときに考えたこと
 – 時間が余ったら…
  • デシジョンテーブル作成
  • CFDとの照合



       Copyright (C) 2012 Kumiko Ohmi All rights reserved   52
ワーク2

※問題は別紙で配布。
 問題に関するプレゼン資料および別紙は、
 本「公開用」のスライドには掲載なし。




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   53
ワーク2

• 回答時間:15分間
 – 時間が余ったら…
  • デシジョンテーブル作成
  • CFDとの照合
• 終了後、20分程度かけて考え方を班内で
  共有して頂きます




       Copyright (C) 2012 Kumiko Ohmi All rights reserved   54
ワーク2

• 共有の時間:20分間
• 班内で考え方を共有しましょう
 – 目的は、他のひとの回答と同じところ、違う
   ところから学ぶことです
 – 考え方まで踏み込んで聞いてみましょう
• 考え方、置いた前提、疑問点
 – ワーク1で疑問があれば、この機会に
• 何班かに、出た話を発表して頂きます
 – 共有しましょう。2、3まとめてください

       Copyright (C) 2012 Kumiko Ohmi All rights reserved   55
準備OK?
目次
                      1. まずは、基本
              2.復習がてら~関連が深い技法
                          3. 腕試し!



 4. 踏み込んで、+α
                                                         5. 視野を広げて


        Copyright (C) 2012 Kumiko Ohmi All rights reserved       56
?

• ワーク1の問題がこうだったら?
    ①重量センサがONであることを確認する。
    ②出力Wが以下のいずれかであることを確認する。
      200W / 500W / 600W / 1000W
    ③あたため時間を確認する。
     20秒~1800秒(30分)が有効な値である。
     整数で指定し、20秒単位で設定することができる。
    ④扉センサがONであることを確認する。
    ⑤上記①~③全てを満たす場合はあたためを開始
    する。満たさない場合は、通常エラーとする。④を満
    たさない場合は、扉開放エラーとする。


             Copyright (C) 2012 Kumiko Ohmi All rights reserved   57
?

                                                  エラーの出し分けも
                                                  確認したいときは?
    (略)
    ④扉センサがONであることを確認する。
    ⑤上記①~③全てを満たす場合はあたためを開始す
    る。満たさない場合は、通常エラーとする。④を満たさ
    ない場合は、扉開放エラーとする。




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   58
準備OK?



                   有効系?
                   無効系?




        Copyright (C) 2012 Kumiko Ohmi All rights reserved   59
有効系?   無効系?

• 優先的にテストしたいものは、有効系に
 – ユーザ(お客様)にとって重要なものは?
   優先的にテストすべきものは?
 – 絶対的な区別ではない


• 例 扉センサがOFFの場合は別処理が続く
• 例 エラーやワーニングのメッセージの
  出し分けを確認したい


        Copyright (C) 2012 Kumiko Ohmi All rights reserved   60
有効系?     無効系?

• ワーク1   回答例
                                                                     扉センサ
           出力W                              あたため時間
                                                                      ON
          有効なW                               有効な時間                   OFF

          無効なW                               無効な時間
重量センサ
                                                                       あたた
 ON                                                                    め開
                                                                        始
 OFF

                                                                扉開
                                          通常
                                                                放エ
                                         エラー
                                                                ラー




           Copyright (C) 2012 Kumiko Ohmi All rights reserved                61
?

• 最初の例題がこうだったら?
    – 例題   新規会員登録ボタンを押した時の挙動

      ログイン状態でないことを確認する。
      「ユーザーID」に有効な値が入力されていることを確認す
       る。
      次に「パスワード」「メールアドレス」に、値が入力されてい
       ることを確認する。
      上記の条件を全て満たす場合は登録処理へ、 それ以
       外の場合はエラーとする。
        登録処理と同時にログイン処理も行われる。


             Copyright (C) 2012 Kumiko Ohmi All rights reserved   62
状態を扱う




Copyright (C) 2012 Kumiko Ohmi All rights reserved   63
状態を扱う
                                             最初は未済でも、
• 何か足りない…                                   結果的には済になる…


ログイン状態   ユーザーID           パスワード                     メールアドレス

 未済       未登録              入力あり                         入力あり         登録
                                                                     処理
  済       登録済              入力なし                         入力なし




                                              エラー




                Copyright (C) 2012 Kumiko Ohmi All rights reserved        64
状態を扱う

• 状態=自分自身も変わることがある
  – 原因と結果の両方に登場
ログイン状態   ユーザーID           パスワード                     メールアドレス

 未済       未登録              入力あり                         入力あり           登録
                                                                       処理
  済       登録済              入力なし                         入力なし

                                                                     ログイン状態の変化

                                                                     済へ
                                              エラー
                                                                            未済へ




                Copyright (C) 2012 Kumiko Ohmi All rights reserved            65
ここまでの話

•   CFDの特徴と生い立ち
•   CFDの書き方
•   同値分割、デシジョンテーブルとの関係
•   トピック
    – ズームイン、ズームアウト
    – 有効系? 無効系?
    – 状態を扱う




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   66
準備OK?
目次
                        1. まずは、基本
              2.復習がてら~関連が深い技法
                            3. 腕試し!
                    4. 踏み込んで、+α



        5. 視野を広げて

        Copyright (C) 2012 Kumiko Ohmi All rights reserved   67
なぜCFD?
ー見落とし防止、コミュニケーション
      促進の仕掛け




     Copyright (C) 2012 Kumiko Ohmi All rights reserved   68
視野を広げて

• インシデント、欠陥(バグ、不具合、…)
 – 見落とし
  • 例 条件の考慮漏れが、リリース後の問題に
  • 例 うるう年の場合を想定していなかった


 – コミュニケーション不足
  • 例 仕様の確認不足でバグに気づけなかった
  • 例 入力がない場合は、処理は終了? 続行?




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   69
視野を広げて

• インシデント、欠陥(バグ、不具合、…)
 – 見落とし
  • 例 条件の考慮漏れが、リリース後の問題に
  • 例 うるう年の場合を想定していなかった


 – コミュニケーション不足
  • 例 仕様の確認不足でバグに気づけなかった
  • 例 入力がない場合は、処理は終了? 続行?




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   70
視野を広げて

• CFD
 – 処理順を意識する
   • 設計の検討に使い早期から見落とし防止に
   • 必要なテストを絞込み、優先度の高い部分の
     テストを練る時間を増やす
 – 図なので全体を意識、俯瞰しやすい
 – 「今見ているものの外側」に目を向けや
   すい
 – 一人でも使える

         Copyright (C) 2012 Kumiko Ohmi All rights reserved   71
5. 視野を広げて

• インシデント、欠陥(バグ、不具合、…)
 – 見落とし
   • 例 条件の考慮漏れが、リリース後の問題に
   • 例 うるう年の場合を想定していなかった


 – コミュニケーション不足
   • 例 仕様の確認不足でバグに気づけなかった
   • 例 入力がない場合は、処理は終了? 続行?




          Copyright (C) 2012 Kumiko Ohmi All rights reserved   72
視野を広げて

• CFD
 –設計段階で使うと早期にテストに意識を向けや
   すくなる
   • 設計でCFDをつくりテストでそこから生成し
     たデシジョンテーブルを使う
 – 直感的に理解しやすい
 – テストエンジニアでなくても読める
   • ステークホルダー同士の情報共有や説明にも



         Copyright (C) 2012 Kumiko Ohmi All rights reserved   73
参考文献
•   2012年度 秋山浩一のソフトウェアテスト技法ドリルセミナー テキスト
     – 一般財団法人 日本科学技術連盟, 2012年
•   ソフトウェアテスト技法ドリル―テスト設計の考え方と実際
     – 秋山 浩一 (著) ,日科技連出版社, 2010年
•   ソフトウェア・テスト PRESS 総集編
     – ソフトウェア・テストPRESS編集部 編 (著), ソフトウェア・テストPRESS編集部 (編集) ,
        技術評論社, 2011年
     – 付属CD内 ソフトウェア・テスト PRESS Vol.9
         • ソフトウェアテストの未来を知るヒント 続・ソフトウェアテスト・ヒストリー(日
           本編), 辰巳敬三
     – 付属CD内 ソフトウェア・テストPRESS Vol.8
         • 難しいテストを簡単にCFD法の極意【前編】, 松尾谷徹
•   ソフトウェア開発・検証技法
     – 松本 正雄 (著), 小山田 正史 (著), 松尾谷 徹 (著), 電子情報通信学会, 1997年




                   Copyright (C) 2012 Kumiko Ohmi All rights reserved   74
参考文献
•   第4回ソフトウェアテスト技法ドリル勉強会講義資料
     – http://www.slideshare.net/oota_ken/4
•   CFD 技法の評価と事例に基づくガイドの作成
     – http://www.juse.or.jp/software/pdf/20_spc/8/7_d_report.pdf
•   原因流れ図によるテストケース抽出技法
     – http://ci.nii.ac.jp/naid/110002874854
•   三賢者、テストを語る
     – http://www.jasst.jp/archives/jasst07e/pdf/A5.pdf
•   ソフトウェアテストの勉強室
     – アーカイブス CFD法
         • http://softest.cocolog-nifty.com/blog/cfd/index.html
     – drawCFD(仮)
         • http://softest.cocolog-nifty.com/labo/drawCFD/
•   ソフトウェアテストの本質を振り返る
     – http://jasst.jp/symposium/jasst12kansai/pdf/A2-3.pdf
•   テスト技法ポジショニングマップ
     – http://www.hayst.com/Pages/positioning.aspx
     – ※サイト「HAYST法」(http://www.hayst.com/Pages/default.aspx)内
•   テストケース抽出の一方式 : 「原因流れ図」
     – http://ci.nii.ac.jp/naid/110002870800
•   テストケース抽出の一方式「順序回路を含む場合」
     – http://ci.nii.ac.jp/naid/110002880001


                         Copyright (C) 2012 Kumiko Ohmi All rights reserved   75

Más contenido relacionado

La actualidad más candente

フーリエ変換を用いたテクスチャ解像度推定とその応用
フーリエ変換を用いたテクスチャ解像度推定とその応用フーリエ変換を用いたテクスチャ解像度推定とその応用
フーリエ変換を用いたテクスチャ解像度推定とその応用Hajime Uchimura
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料直久 住川
 
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発Hirohito Morinaga
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜Teppei Sato
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなすUnity Technologies Japan K.K.
 
データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-Koichi Inami
 
【DL輪読会】Monocular real time volumetric performance capture
【DL輪読会】Monocular real time volumetric performance capture 【DL輪読会】Monocular real time volumetric performance capture
【DL輪読会】Monocular real time volumetric performance capture Deep Learning JP
 
メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策Mai Nakagawa
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイするTakayuki Itoh
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドIosif Takakura
 
機械学習応用システムのための要求工学
機械学習応用システムのための要求工学機械学習応用システムのための要求工学
機械学習応用システムのための要求工学Nobukazu Yoshioka
 
AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜Naoki Fujiwara
 
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことLeapMind Inc
 
深層学習 - 画像認識のための深層学習 ②
深層学習 - 画像認識のための深層学習 ②深層学習 - 画像認識のための深層学習 ②
深層学習 - 画像認識のための深層学習 ②Shohei Miyashita
 
(文献紹介)Depth Completionの最新動向
(文献紹介)Depth Completionの最新動向(文献紹介)Depth Completionの最新動向
(文献紹介)Depth Completionの最新動向Morpho, Inc.
 
PRMU 201312 subpixel object detection survey
PRMU 201312 subpixel object detection surveyPRMU 201312 subpixel object detection survey
PRMU 201312 subpixel object detection surveyYoshihisa Ijiri
 
#FTMA15 第一回 鬼コース 全PDF
#FTMA15 第一回 鬼コース 全PDF#FTMA15 第一回 鬼コース 全PDF
#FTMA15 第一回 鬼コース 全PDFYoichi Ochiai
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~DoshishaUniv ProntiatVR
 

La actualidad más candente (20)

フーリエ変換を用いたテクスチャ解像度推定とその応用
フーリエ変換を用いたテクスチャ解像度推定とその応用フーリエ変換を用いたテクスチャ解像度推定とその応用
フーリエ変換を用いたテクスチャ解像度推定とその応用
 
ZenmuTechのご紹介
ZenmuTechのご紹介ZenmuTechのご紹介
ZenmuTechのご紹介
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
 
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
 
データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-
 
【DL輪読会】Monocular real time volumetric performance capture
【DL輪読会】Monocular real time volumetric performance capture 【DL輪読会】Monocular real time volumetric performance capture
【DL輪読会】Monocular real time volumetric performance capture
 
メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策メルペイの与信モデリングにおける特徴量の品質向上の施策
メルペイの与信モデリングにおける特徴量の品質向上の施策
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライド
 
機械学習応用システムのための要求工学
機械学習応用システムのための要求工学機械学習応用システムのための要求工学
機械学習応用システムのための要求工学
 
AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜
 
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
 
深層学習 - 画像認識のための深層学習 ②
深層学習 - 画像認識のための深層学習 ②深層学習 - 画像認識のための深層学習 ②
深層学習 - 画像認識のための深層学習 ②
 
(文献紹介)Depth Completionの最新動向
(文献紹介)Depth Completionの最新動向(文献紹介)Depth Completionの最新動向
(文献紹介)Depth Completionの最新動向
 
PRMU 201312 subpixel object detection survey
PRMU 201312 subpixel object detection surveyPRMU 201312 subpixel object detection survey
PRMU 201312 subpixel object detection survey
 
#FTMA15 第一回 鬼コース 全PDF
#FTMA15 第一回 鬼コース 全PDF#FTMA15 第一回 鬼コース 全PDF
#FTMA15 第一回 鬼コース 全PDF
 
5分でわかる Sensor SDK
5分でわかる Sensor SDK5分でわかる Sensor SDK
5分でわかる Sensor SDK
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
 

Destacado

はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法Tatsuya Saito
 
WACATE2010w テスト技法ワーク_スライド
WACATE2010w テスト技法ワーク_スライドWACATE2010w テスト技法ワーク_スライド
WACATE2010w テスト技法ワーク_スライドMasaki Kase
 
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考える
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考えるテスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考える
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考えるHIDEKAZU MATSUURA
 
実験計画法(直交表実験)の応用によるLpoの実例 slide share
実験計画法(直交表実験)の応用によるLpoの実例 slide share実験計画法(直交表実験)の応用によるLpoの実例 slide share
実験計画法(直交表実験)の応用によるLpoの実例 slide shareKazuya Obanayama
 
20101130 南東京iphone開発3
20101130 南東京iphone開発320101130 南東京iphone開発3
20101130 南東京iphone開発3Masaki Kase
 
JaSST'10 Shikoku 公開資料
JaSST'10 Shikoku 公開資料JaSST'10 Shikoku 公開資料
JaSST'10 Shikoku 公開資料Masaki Kase
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション智治 長沢
 
JaSST'11 Kyushu 配布資料(スライド)
JaSST'11 Kyushu 配布資料(スライド)JaSST'11 Kyushu 配布資料(スライド)
JaSST'11 Kyushu 配布資料(スライド)Masaki Kase
 
JaSST'15 Tokyo クロージングパネル概要
JaSST'15 Tokyo クロージングパネル概要JaSST'15 Tokyo クロージングパネル概要
JaSST'15 Tokyo クロージングパネル概要Makoto Nonaka
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testingryuji koyama
 
JaSST'12 Niigata LT-koyaman
JaSST'12 Niigata LT-koyamanJaSST'12 Niigata LT-koyaman
JaSST'12 Niigata LT-koyamanryuji koyama
 
wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」
wacate2013s「分けてみよう悩んでみよう同値分割・境界値分析」wacate2013s「分けてみよう悩んでみよう同値分割・境界値分析」
wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」Kumiko Ohmi
 
ドメイン分析勉強会
ドメイン分析勉強会ドメイン分析勉強会
ドメイン分析勉強会Kosuke Fujisawa
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasstkyon mm
 
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由Hironori Washizaki
 
Kpt×ナース(公開版)
Kpt×ナース(公開版)Kpt×ナース(公開版)
Kpt×ナース(公開版)Noriyuki Nemoto
 

Destacado (20)

はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
20140610 秋山-ss2014
20140610 秋山-ss201420140610 秋山-ss2014
20140610 秋山-ss2014
 
WACATE2010w テスト技法ワーク_スライド
WACATE2010w テスト技法ワーク_スライドWACATE2010w テスト技法ワーク_スライド
WACATE2010w テスト技法ワーク_スライド
 
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考える
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考えるテスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考える
テスト設計のタイミングと手法の変更による、品質向上と生産性向上 順序を入れ替え繰り返し考える
 
実験計画法(直交表実験)の応用によるLpoの実例 slide share
実験計画法(直交表実験)の応用によるLpoの実例 slide share実験計画法(直交表実験)の応用によるLpoの実例 slide share
実験計画法(直交表実験)の応用によるLpoの実例 slide share
 
20101130 南東京iphone開発3
20101130 南東京iphone開発320101130 南東京iphone開発3
20101130 南東京iphone開発3
 
JaSST'10 Shikoku 公開資料
JaSST'10 Shikoku 公開資料JaSST'10 Shikoku 公開資料
JaSST'10 Shikoku 公開資料
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 
20080615 wacate
20080615 wacate20080615 wacate
20080615 wacate
 
wacate2012s
wacate2012swacate2012s
wacate2012s
 
JaSST'11 Kyushu 配布資料(スライド)
JaSST'11 Kyushu 配布資料(スライド)JaSST'11 Kyushu 配布資料(スライド)
JaSST'11 Kyushu 配布資料(スライド)
 
JaSST'15 Tokyo クロージングパネル概要
JaSST'15 Tokyo クロージングパネル概要JaSST'15 Tokyo クロージングパネル概要
JaSST'15 Tokyo クロージングパネル概要
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testing
 
JaSST'12 Niigata LT-koyaman
JaSST'12 Niigata LT-koyamanJaSST'12 Niigata LT-koyaman
JaSST'12 Niigata LT-koyaman
 
wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」
wacate2013s「分けてみよう悩んでみよう同値分割・境界値分析」wacate2013s「分けてみよう悩んでみよう同値分割・境界値分析」
wacate2013s「分けてみよう 悩んでみよう 同値分割・境界値分析」
 
ドメイン分析勉強会
ドメイン分析勉強会ドメイン分析勉強会
ドメイン分析勉強会
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由
正統なソフトウェア品質エンジニアであるためにSQiP研究会に入るべき7つの理由
 
Jasst15 webjasst
Jasst15 webjasstJasst15 webjasst
Jasst15 webjasst
 
Kpt×ナース(公開版)
Kpt×ナース(公開版)Kpt×ナース(公開版)
Kpt×ナース(公開版)
 

wacate2012w

  • 1. かいてみようCFD ※公開用(一部、削除・更新しています) WACATE2012冬 近江 久美子(WACATE実行委員会) (ワークのサポート 上田 卓由(WACATE実行委員会)) Copyright (C) 2012 Kumiko Ohmi All rights reserved 1
  • 3. 準備OK? 目次 1. まずは、基本 2.復習がてら~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 3
  • 4. 準備OK? 目次 1. まずは、基本 2.復習がてら~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 4
  • 5. CFDの特徴と生い立ち • CFD=Cause Flow Diagram – 複雑な論理に対するテストに – “Case Flow Diagram”(本「ソフトウェア 開発・検証技法」より)とされていた頃も Windows3.1、 NTより前 • 松尾谷 徹氏が1980年代に開発 (1990年台) – 今も発展し続けている – WACATE2012冬「CFD++(仮)」 Copyright (C) 2012 Kumiko Ohmi All rights reserved 5
  • 6. CFDの特徴と生い立ち • 「テスト技法ポジショニングマップ」引用元: http://www.hayst.com/Pages/positioning.aspx Copyright (C) 2012 Kumiko Ohmi All rights reserved 6
  • 7. CFDの特徴と生い立ち • 技法として CFD法(CFD技法)は、同値分割、CFD、デシジョ ンテーブルから構成される • 図として ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 処理 登録済 入力なし 入力なし エラー • フリーで利用できるツール「 drawCFD(仮) 」 – http://softest.cocolog-nifty.com/labo/drawCFD/ – デシジョンテーブルへの変換も可能 Copyright (C) 2012 Kumiko Ohmi All rights reserved 7
  • 8. 例題で考えみましょう • 例題 新規会員登録ボタンを押した時の 挙動  まず「ユーザーID」に未登録の値が入力さ れていることを確認する。  次に「パスワード」「メールアドレス」に、値が 入力されていることを確認する。  上記の条件を全て満たす場合は登録処 理へ、 それ以外の場合はエラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 8
  • 9. 例題で考えみましょう • CFDの登場人物 –原因 –結果 –流れ(線) Copyright (C) 2012 Kumiko Ohmi All rights reserved 9
  • 10. 例題で考えみましょう • 手順 – CFDをかく • 同値分割を使いテストすべき結果とその原因を見 つけ出し、図にする • 処理順に従って流れ線をかく – CFDを元にデシジョンテーブルをかく • CFD、デシジョンテーブルを照合して確認する Copyright (C) 2012 Kumiko Ohmi All rights reserved 10
  • 12. 例題で考えみましょう • テストすべき結果と原因は? – 例題 新規会員登録ボタンを押した時の挙動  まず「ユーザーID」に未登録の値が入力さ れていることを確認する。  次に「パスワード」「メールアドレス」に、値が 入力されていることを確認する。  上記の条件を全て満たす場合は登録処 理へ、 それ以外の場合はエラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 12
  • 13. 例題で考えみましょう • テストすべき結果は? – 例題 新規会員登録ボタンを押した時の挙動  まず「ユーザーID」に未登録の値が入力さ れていることを確認する。  次に「パスワード」「メールアドレス」に、値が 入力されていることを確認する。  上記の条件を全て満たす場合は登録処 理へ、 それ以外の場合はエラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 13
  • 14. 例題で考えみましょう • 結果の原因は?  まず「ユーザーID」に未登録の値が入力され ていることを確認する。  次に「パスワード」「メールアドレス」に、値が入 力されていることを確認する。  上記の条件を全て満たす場合は登録処理 へ、 それ以外の場合はエラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 14
  • 15. 例題で考えみましょう • 同値分割して、図にしましょう ~結果  上記の条件を全て満たす場合は登録処理へ、 それ以外の 場合はエラーとする。 • 三浦マグロさんの場合 – ユーザーIDmaguro, ****, magu@example.com” • 若手太郎さんの場合 – “wakate, ****, taro@example.com” ⇒ 値に関わらず、「登録処理」 Copyright (C) 2012 Kumiko Ohmi All rights reserved 15
  • 16. 例題で考えみましょう • 同値分割して、図にしましょう ~結果  上記の条件を全て満たす場合は登録処理へ、 それ以外の 場合はエラーとする。 – 有効系か無効系を判断しましょう • 目的の機能が動作する結果 – 有効系の結果 登録 処理 • 目的の機能が動作しない結果 – 無効系の結果 – 下のほうに横線か塗りつぶし エ – CFDでは、優先度は有効系より低い ラー Copyright (C) 2012 Kumiko Ohmi All rights reserved 16
  • 17. 例題で考えみましょう • 同値分割して、図にしましょう ~原因  「パスワード」「メールアドレス」に、値が入力されていることを 確認する。 • 結果に対する影響を元に分割する • 「入力されていること」以外=「入力されていな いこと」 – 1文字、2文字、 …=「入力あり」 – 有効系か無効系を判断しましょう • どちらが有効系の結果につながりますか? Copyright (C) 2012 Kumiko Ohmi All rights reserved 17
  • 18. 例題で考えみましょう • 同値分割して、図にしましょう ~原因  「パスワード」「メールアドレス」に、値が入力されていることを 確認する。 パスワード 入力あり 入力なし Copyright (C) 2012 Kumiko Ohmi All rights reserved 18
  • 19. 例題で考えみましょう • 同値分割して、図にしましょう ~原因  「パスワード」「メールアドレス」に、値が入力されていることを 確認する。 パスワード 同値分割図 入力あり 有効系 → 小さい島 無効系 → 大きい島 入力なし – 図で表現した原因は処理の順に並べておきます Copyright (C) 2012 Kumiko Ohmi All rights reserved 19
  • 20. 処理順に 従って 流れ線をかく Copyright (C) 2012 Kumiko Ohmi All rights reserved 20
  • 21. 例題で考えみましょう • 流れ線をかきましょう  まず「ユーザーID」に未登録の値が入力されていることを確認する。  次に「パスワード」「メールアドレス」に、値が入力されていることを確認す る。  上記の条件を全て満たす場合は登録処理へ、 それ以外の場合はエ ラーとする。 ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 処理 登録済 入力なし 入力なし 登録処理にたどりつくには エラー 原因のどこを通る? Copyright (C) 2012 Kumiko Ohmi All rights reserved 21
  • 22. 例題で考えみましょう • 注意その1 流れ線は処理順通りに – CFDでは、より合理的なテストをめざし実装 の情報も利用 メールアドレス パスワード ユーザーID 登録 入力あり 入力あり 未登録 処理 入力なし 入力なし 登録済 ユーザーIDの確認でエラーなのに エラー メールアドレスとパスワードの処理が 行われる? Copyright (C) 2012 Kumiko Ohmi All rights reserved 22
  • 23. 例題で考えみましょう • 注意その2 無効系は1つずつテスト ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 処理 登録済 入力なし 入力なし エラー エラーはどの原因で起こった? Copyright (C) 2012 Kumiko Ohmi All rights reserved 23
  • 24. 例題で考えみましょう • (図としてのCFDは)完成! ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 処理 登録済 入力なし 入力なし エラー • ここからデシジョンテーブルをかきまし ょう Copyright (C) 2012 Kumiko Ohmi All rights reserved 24
  • 25. CFDを元に デシジョン テーブルをかく Copyright (C) 2012 Kumiko Ohmi All rights reserved 25
  • 26. 例題で考えみましょう • デシジョンテーブル作成 – CFDの原因→デシジョンテーブルの条件へ – CFDの結果→デシジョンテーブルの動作へ – CFDの流れ線を追って、デシジョンテーブル の列を埋める Copyright (C) 2012 Kumiko Ohmi All rights reserved 26
  • 27. 例題で考えみましょう • デシジョンテーブル作成 ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 確認 処理 登録済 入力なし 入力なし テスト項目番号 1 原因 ユーザーID 未登録 1 エラー 登録済 0 パスワード 入力あり 1 入力なし 0 メールアドレス 入力あり 1 入力なし 0 結果 登録処理 1 エラー Copyright (C) 2012 Kumiko Ohmi All rights reserved 27
  • 28. 例題で考えみましょう • デシジョンテーブル作成 テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 パスワード 入力あり 1 ― 1 0 入力なし 0 ― 0 1 メールアドレス 入力あり 1 ―― 0 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 28
  • 29. 例題で考えみましょう • 照合してチェック ユーザーID パスワード メールアドレス 登録 未登録 入力あり 入力あり 処理 登録済 入力なし 入力なし エラー テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 パスワード 入力あり 1 ― 1 0 入力なし 0 ― 0 1 メールアドレス 入力あり 1 ―― 0 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 29
  • 30. 例題で考えみましょう • 手順 – CFDをかく • 同値分割を使いテストすべき結果とその原因を洗 い出す • 結果、原因を図にする • 処理順に従って流れ線をかく – CFDを元にデシジョンテーブルをかく • CFD、デシジョンテーブルを照合して確認する Copyright (C) 2012 Kumiko Ohmi All rights reserved 30
  • 31. 準備OK? 目次 1. まずは、基本 2. 復習がてら ~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 31
  • 32. 関連が深い技法:同値分割 Copyright (C) 2012 Kumiko Ohmi All rights reserved 32
  • 33. 関連が深い技法:同値分割 • 全部はテストできない – 同じ欠陥が出るであろうもの同士、グループに – 例 1月の日付が入力されていたら、… • 1/1-1/31 • 上記以外 12/ 1/ 1/ 1/1 1/2 … 2/1 2/2 31 30 31 if (mmdd >= 20120101 and mmdd <=20120131){ … Copyright (C) 2012 Kumiko Ohmi All rights reserved 33
  • 34. 関連が深い技法:同値分割 • 全部はテストできない – 同じ欠陥が出るであろうもの同士、グループに – 例 1月の日付が入力されていたら、… 12/ 1/ 1/ 1/1 1/2 … 2/1 2/2 31 30 31 日付 1/1-1/31 2/1-12/31 Copyright (C) 2012 Kumiko Ohmi All rights reserved 34
  • 35. 関連が深い技法:同値分割 • 同値分割図、何かに似ていませんか? パスワード ML申込み 入力あり する 日付 入力なし しない 1/1-1/31 2/1-12/31 Copyright (C) 2012 Kumiko Ohmi All rights reserved
  • 36. 関連が深い技法:同値分割 • 同値分割図、何かに似ていませんか? ML申込み ML申込み する する しない しない Copyright (C) 2012 Kumiko Ohmi All rights reserved 36
  • 37. 関連が深い技法:同値分割 • CFDの場合 – 図にして考えると、他にないか?を考えやすい • 例 ML申込み「する」の場合は、… ML申込み する • しない Copyright (C) 2012 Kumiko Ohmi All rights reserved 37
  • 38. 関連が深い技法:同値分割 • CFDの場合 – 図にして考えると、他にないか?を考えやすい • 例 ML申込み「する」の場合は次の処理を行う ML申込み • しない する • 申込み済 • 過去に申し込んでいたことがある 仕様、設計に抜け漏れはないか? 考えましょう Copyright (C) 2012 Kumiko Ohmi All rights reserved 38
  • 39. 関連が深い技法:デシジョンテーブル Copyright (C) 2012 Kumiko Ohmi All rights reserved 39
  • 40. 関連が深い技法:デシジョンテーブル • デシジョンテーブル – 複数の変数や条件の論理的な関係を扱うとき に活用できる Copyright (C) 2012 Kumiko Ohmi All rights reserved 40
  • 41. 関連が深い技法:デシジョンテーブル ※フォーマットや1、0、―の表記は 異なることもある テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 パスワード 入力あり 1 ― 1 0 入力なし 0 ― 0 1 メールアドレス 入力あり 1 ―― 0 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 41
  • 42. 関連が深い技法:デシジョンテーブル ※フォーマットや1、0、―の表記は 条件を、判定順に列挙する 異なることもある (CFDでは「原因」) テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 パスワード 入力あり ― 1 0 1 入力なし 0 ― 0 1 メールアドレス 入力あり 1 ―― 動作(処理)を、実行順に列挙する 0 (CFDでは「結果」) 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 42
  • 43. 関連が深い技法:デシジョンテーブル ※フォーマットや1、0、―の表記は 異なることもある テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 条件(原因)の組合せとそれに パスワード 入力あり 対応する動作(結果)が書かれている 1 ― 1 0 規則(各列) 入力なし 0 ― 0 1 メールアドレス タテに読む 入力あり 1 ―― 0 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 43
  • 44. 関連が深い技法:デシジョンテーブル • デシジョンテーブル – 原因と結果(条件と動作)の関係を表で表現 • テストを実行するときに扱いやすい • 異なる視点からの二重チェックができる – 原因と結果が全てテストされるか? – 組合せ、流れ線に抜けはないか? Copyright (C) 2012 Kumiko Ohmi All rights reserved 44
  • 45. 関連が深い技法:デシジョンテーブル • CFDの場合 – CFD(図)で洗い出した原因、結果の同値を全て書く • デシジョンテーブルの条件はCFDの原因へ – デシジョンテーブルの条件(原因)の並びとCFDの原因並びは同じ • デシジョンテーブルの動作はCFDの結果へ • CFDの流れ線はデシジョンテーブルの列(条件と結果の組合せ) へ – 1で表現すると、同値クラスの登場回数が判り、Excelの 関数等を使ってチェックしやすくなる テスト項目番号 1 2 3 4 原因 ユーザーID 未登録 1 0 1 1 登録済 0 1 0 0 パスワード 入力あり 1 ― 1 0 入力なし 0 ― 0 1 メールアドレス 入力あり 1 ―― 0 入力なし 0 ―― 1 結果 登録処理 1 エラー 1 1 1 Copyright (C) 2012 Kumiko Ohmi All rights reserved 45
  • 46. 準備OK? 目次 1. まずは、基本 2.復習がてら~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 46
  • 47. ワーク1 • 個人ワークで考えて頂きます • 回答時間は10分 – 足りない人はその後の休憩10分もどうぞ • 時間が余ったら… – デシジョンテーブル作成 – CFDとの照合 • 迷ったところはメモ! – ワーク2の共有時間や休憩時間に Copyright (C) 2012 Kumiko Ohmi All rights reserved 47
  • 48. ワーク1 ※問題は別紙で配布。 別紙は本「公開用」のプレゼン資料には 掲載しないが、 後の「4. 踏み込んで、+α 」内にて 問題文の一部を掲載している。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 48
  • 49. ワーク1 • この例題でお伝えしたかったこと – 「どちらのやり方でかこうかな」迷ったひと はいますか? Copyright (C) 2012 Kumiko Ohmi All rights reserved 49
  • 50. 準備OK? ズームイン、 ズームアウト Copyright (C) 2012 Kumiko Ohmi All rights reserved 50
  • 51. ズームイン、ズームアウト • 同値分割の粒度を変えてズームイン、ズ ームアウト – 必要なテストを絞り込む – 例 ※出力Wの有効/無効は別途テストする 出力W 200W 出力W 500W 有効なW 600W 無効なW 1000W 無効なW Copyright (C) 2012 Kumiko Ohmi All rights reserved 51
  • 52. ワーク2 • 個人ワークで考えて頂いたあとで、グル ープ内で共有して頂きます – 考え方を説明できるようにしてください • 例 原因と結果の洗い出しから図示までに考えた こと • 例 流れ線をかくときに考えたこと – 時間が余ったら… • デシジョンテーブル作成 • CFDとの照合 Copyright (C) 2012 Kumiko Ohmi All rights reserved 52
  • 54. ワーク2 • 回答時間:15分間 – 時間が余ったら… • デシジョンテーブル作成 • CFDとの照合 • 終了後、20分程度かけて考え方を班内で 共有して頂きます Copyright (C) 2012 Kumiko Ohmi All rights reserved 54
  • 55. ワーク2 • 共有の時間:20分間 • 班内で考え方を共有しましょう – 目的は、他のひとの回答と同じところ、違う ところから学ぶことです – 考え方まで踏み込んで聞いてみましょう • 考え方、置いた前提、疑問点 – ワーク1で疑問があれば、この機会に • 何班かに、出た話を発表して頂きます – 共有しましょう。2、3まとめてください Copyright (C) 2012 Kumiko Ohmi All rights reserved 55
  • 56. 準備OK? 目次 1. まずは、基本 2.復習がてら~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 56
  • 57. ? • ワーク1の問題がこうだったら? ①重量センサがONであることを確認する。 ②出力Wが以下のいずれかであることを確認する。 200W / 500W / 600W / 1000W ③あたため時間を確認する。 20秒~1800秒(30分)が有効な値である。 整数で指定し、20秒単位で設定することができる。 ④扉センサがONであることを確認する。 ⑤上記①~③全てを満たす場合はあたためを開始 する。満たさない場合は、通常エラーとする。④を満 たさない場合は、扉開放エラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 57
  • 58. エラーの出し分けも 確認したいときは? (略) ④扉センサがONであることを確認する。 ⑤上記①~③全てを満たす場合はあたためを開始す る。満たさない場合は、通常エラーとする。④を満たさ ない場合は、扉開放エラーとする。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 58
  • 59. 準備OK? 有効系? 無効系? Copyright (C) 2012 Kumiko Ohmi All rights reserved 59
  • 60. 有効系? 無効系? • 優先的にテストしたいものは、有効系に – ユーザ(お客様)にとって重要なものは? 優先的にテストすべきものは? – 絶対的な区別ではない • 例 扉センサがOFFの場合は別処理が続く • 例 エラーやワーニングのメッセージの 出し分けを確認したい Copyright (C) 2012 Kumiko Ohmi All rights reserved 60
  • 61. 有効系? 無効系? • ワーク1 回答例 扉センサ 出力W あたため時間 ON 有効なW 有効な時間 OFF 無効なW 無効な時間 重量センサ あたた ON め開 始 OFF 扉開 通常 放エ エラー ラー Copyright (C) 2012 Kumiko Ohmi All rights reserved 61
  • 62. ? • 最初の例題がこうだったら? – 例題 新規会員登録ボタンを押した時の挙動  ログイン状態でないことを確認する。  「ユーザーID」に有効な値が入力されていることを確認す る。  次に「パスワード」「メールアドレス」に、値が入力されてい ることを確認する。  上記の条件を全て満たす場合は登録処理へ、 それ以 外の場合はエラーとする。  登録処理と同時にログイン処理も行われる。 Copyright (C) 2012 Kumiko Ohmi All rights reserved 62
  • 63. 状態を扱う Copyright (C) 2012 Kumiko Ohmi All rights reserved 63
  • 64. 状態を扱う 最初は未済でも、 • 何か足りない… 結果的には済になる… ログイン状態 ユーザーID パスワード メールアドレス 未済 未登録 入力あり 入力あり 登録 処理 済 登録済 入力なし 入力なし エラー Copyright (C) 2012 Kumiko Ohmi All rights reserved 64
  • 65. 状態を扱う • 状態=自分自身も変わることがある – 原因と結果の両方に登場 ログイン状態 ユーザーID パスワード メールアドレス 未済 未登録 入力あり 入力あり 登録 処理 済 登録済 入力なし 入力なし ログイン状態の変化 済へ エラー 未済へ Copyright (C) 2012 Kumiko Ohmi All rights reserved 65
  • 66. ここまでの話 • CFDの特徴と生い立ち • CFDの書き方 • 同値分割、デシジョンテーブルとの関係 • トピック – ズームイン、ズームアウト – 有効系? 無効系? – 状態を扱う Copyright (C) 2012 Kumiko Ohmi All rights reserved 66
  • 67. 準備OK? 目次 1. まずは、基本 2.復習がてら~関連が深い技法 3. 腕試し! 4. 踏み込んで、+α 5. 視野を広げて Copyright (C) 2012 Kumiko Ohmi All rights reserved 67
  • 68. なぜCFD? ー見落とし防止、コミュニケーション 促進の仕掛け Copyright (C) 2012 Kumiko Ohmi All rights reserved 68
  • 69. 視野を広げて • インシデント、欠陥(バグ、不具合、…) – 見落とし • 例 条件の考慮漏れが、リリース後の問題に • 例 うるう年の場合を想定していなかった – コミュニケーション不足 • 例 仕様の確認不足でバグに気づけなかった • 例 入力がない場合は、処理は終了? 続行? Copyright (C) 2012 Kumiko Ohmi All rights reserved 69
  • 70. 視野を広げて • インシデント、欠陥(バグ、不具合、…) – 見落とし • 例 条件の考慮漏れが、リリース後の問題に • 例 うるう年の場合を想定していなかった – コミュニケーション不足 • 例 仕様の確認不足でバグに気づけなかった • 例 入力がない場合は、処理は終了? 続行? Copyright (C) 2012 Kumiko Ohmi All rights reserved 70
  • 71. 視野を広げて • CFD – 処理順を意識する • 設計の検討に使い早期から見落とし防止に • 必要なテストを絞込み、優先度の高い部分の テストを練る時間を増やす – 図なので全体を意識、俯瞰しやすい – 「今見ているものの外側」に目を向けや すい – 一人でも使える Copyright (C) 2012 Kumiko Ohmi All rights reserved 71
  • 72. 5. 視野を広げて • インシデント、欠陥(バグ、不具合、…) – 見落とし • 例 条件の考慮漏れが、リリース後の問題に • 例 うるう年の場合を想定していなかった – コミュニケーション不足 • 例 仕様の確認不足でバグに気づけなかった • 例 入力がない場合は、処理は終了? 続行? Copyright (C) 2012 Kumiko Ohmi All rights reserved 72
  • 73. 視野を広げて • CFD –設計段階で使うと早期にテストに意識を向けや すくなる • 設計でCFDをつくりテストでそこから生成し たデシジョンテーブルを使う – 直感的に理解しやすい – テストエンジニアでなくても読める • ステークホルダー同士の情報共有や説明にも Copyright (C) 2012 Kumiko Ohmi All rights reserved 73
  • 74. 参考文献 • 2012年度 秋山浩一のソフトウェアテスト技法ドリルセミナー テキスト – 一般財団法人 日本科学技術連盟, 2012年 • ソフトウェアテスト技法ドリル―テスト設計の考え方と実際 – 秋山 浩一 (著) ,日科技連出版社, 2010年 • ソフトウェア・テスト PRESS 総集編 – ソフトウェア・テストPRESS編集部 編 (著), ソフトウェア・テストPRESS編集部 (編集) , 技術評論社, 2011年 – 付属CD内 ソフトウェア・テスト PRESS Vol.9 • ソフトウェアテストの未来を知るヒント 続・ソフトウェアテスト・ヒストリー(日 本編), 辰巳敬三 – 付属CD内 ソフトウェア・テストPRESS Vol.8 • 難しいテストを簡単にCFD法の極意【前編】, 松尾谷徹 • ソフトウェア開発・検証技法 – 松本 正雄 (著), 小山田 正史 (著), 松尾谷 徹 (著), 電子情報通信学会, 1997年 Copyright (C) 2012 Kumiko Ohmi All rights reserved 74
  • 75. 参考文献 • 第4回ソフトウェアテスト技法ドリル勉強会講義資料 – http://www.slideshare.net/oota_ken/4 • CFD 技法の評価と事例に基づくガイドの作成 – http://www.juse.or.jp/software/pdf/20_spc/8/7_d_report.pdf • 原因流れ図によるテストケース抽出技法 – http://ci.nii.ac.jp/naid/110002874854 • 三賢者、テストを語る – http://www.jasst.jp/archives/jasst07e/pdf/A5.pdf • ソフトウェアテストの勉強室 – アーカイブス CFD法 • http://softest.cocolog-nifty.com/blog/cfd/index.html – drawCFD(仮) • http://softest.cocolog-nifty.com/labo/drawCFD/ • ソフトウェアテストの本質を振り返る – http://jasst.jp/symposium/jasst12kansai/pdf/A2-3.pdf • テスト技法ポジショニングマップ – http://www.hayst.com/Pages/positioning.aspx – ※サイト「HAYST法」(http://www.hayst.com/Pages/default.aspx)内 • テストケース抽出の一方式 : 「原因流れ図」 – http://ci.nii.ac.jp/naid/110002870800 • テストケース抽出の一方式「順序回路を含む場合」 – http://ci.nii.ac.jp/naid/110002880001 Copyright (C) 2012 Kumiko Ohmi All rights reserved 75