SlideShare a Scribd company logo

wacate2012w

WACATE2012冬のセッション資料。 http://wacate.jp/ 「かいてみようCFD」(Let's draw CFD)と題して、テスト技法の1つであるCFDについてお話ししたセッションです。 Special Thanks to: ・私の拙い質問に答えてくださった方々 ・資料を教えてくださった方々 ・レビューしてくださった皆様

wacate2012w

1 of 75
Download to read offline
かいてみよう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
Ad

Recommended

ドメインテストとは
ドメインテストとはドメインテストとは
ドメインテストとはKumiko Ohmi
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドIosif Takakura
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料Yuji Otani
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?kwatch
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 

More Related Content

What's hot

Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmineGo Maeda
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Go Maeda
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
Ruby 3の型推論やってます
Ruby 3の型推論やってますRuby 3の型推論やってます
Ruby 3の型推論やってますmametter
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
モダナイゼーションがもたらす未来
モダナイゼーションがもたらす未来モダナイゼーションがもたらす未来
モダナイゼーションがもたらす未来Hiromasa Oka
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
アジャイル開発を支える開発環境 公開用
アジャイル開発を支える開発環境 公開用アジャイル開発を支える開発環境 公開用
アジャイル開発を支える開発環境 公開用ESM SEC
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 Yugo Shimizu
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる MakefileShohei Okada
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかYoshitaka Kawashima
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐりKazuyuki TAKASE
 

What's hot (20)

Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmine
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
 
No skk, no life.
No skk, no life.No skk, no life.
No skk, no life.
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
Ruby 3の型推論やってます
Ruby 3の型推論やってますRuby 3の型推論やってます
Ruby 3の型推論やってます
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
Paxos
PaxosPaxos
Paxos
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
モダナイゼーションがもたらす未来
モダナイゼーションがもたらす未来モダナイゼーションがもたらす未来
モダナイゼーションがもたらす未来
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
アジャイル開発を支える開発環境 公開用
アジャイル開発を支える開発環境 公開用アジャイル開発を支える開発環境 公開用
アジャイル開発を支える開発環境 公開用
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる Makefile
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
 

Viewers also liked

はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法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
 

Viewers also liked (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