/ ̄ ̄\
/ノ( _ノ \
|,'⌒ (( ●)(●)
| (__人__)
| ` ⌒´ノ ,rっっ ,
/"⌒ヽ ソ,ノ .i゙)' 'ィ´ ` ,. ____
゙ヾ ,,/ { ) 丿 , ゜;,/⌒ ⌒u:::\ 。
ィ≒ `\ /'ニ7´ スパァァ────/(◯.;); :::::、;(;.◯));:'::::ヽ‐─────‐‐ ン
/^ヾ \ ./ ゚ ;i`、 ⌒:(__人__) ⌒:::::;;,´:::| .
} __\___ ___ ____´_;;{ ;` j|r┬-|:;〉::,,゚, 。;;:;;|
)ンィ⌒ ̄" ̄ ̄ ̄  ̄ ̄  ̄ ̄ ̄  ̄ ̄  ̄ ̄ニ≡┴‐ー-,==ー--ァ人て゜ ゚;:,::|: ゜ .
ノ/ ≡'' ;;;;(( 三iiii_iiiiiii)))))て,,;;/ 。 ;
ヾ _____=≒=ー────;‐‐ ̄/i'只 ̄/ ̄|Y‐-<` `
\、 ー ィ⌒ ̄ // > |≡| / <〃 ヽ
____
/;:#;:;:;:;: \
/ _ノ ヽ_ \ 偶には変わった登場をしてみたかったんだお
/ (―) (―);#;:;:\
|;#;:;:;: (__人__) # | それで今、やらない夫はナニしてたんだお?
\ // `⌒´ ;:;:;:;: ,/
/ ー‐ \
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | u. (__人__) 展開が強引すぎるだろ常識的に考えて…
| ` ⌒´ノ
. | } 今度開催される「デブサミ201*」というイベントで
. ヽ }
ヽ ノ TDDをペアプロで実演しようって事になっていてな
i⌒\ ,__(‐- 、
l \ 巛ー─;\ Visual Studio Expresss でC#の勉強をしていただろ
| `ヽ-‐ーく_)
. | l
参考URL:
http://codezine.jp/devsumi/2011/
┏───────────────────────────────────────┓
│ やる夫で学ぶTDD 六日目 四日目の付け足し〜すべての状態遷移モデルを今テストへ〜......│
┗───────────────────────────────────────┛
(⊃ ̄ ̄\
(⊃ _ノ \
(⊃ ( ●)(●) さて前回はボウリングのスコア計算と予告していたが
| (__人__)
| ` ⌒´ノ ちょっと趣向を変えて、4日目のCSVParserの時に作った
| } \
/ヽ } \ 状態遷移モデル(ステートマシーン図)を、他のツールを使って
/ ヽ、____ノ )
/ . | _/ テストにもっと役立ててみようというネタでやってみたいと思う
| / ̄ ̄(_)
\ \ /| JJJ (
\ / /⊂_)

____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
/ ∩ノ ⊃ // ∩ノ ⊃ たしか、astahでこんなの作ったお
( \ / _ノ \/ _ノ
.\ “ / . \ “ /
\ / /\/
ソフトウェア開発設計支援ツール:astah
http://astah.change-vision.com/ja/
/ ̄ ̄\
/ _ノ \
| ( ●)(● もちろん、これだけでも十分状態遷移が分かるし
| (__人__)
. | ノ クラス設計にもテストにも役立つ
| ∩ ノ ⊃
/ ./ _ノ ただし、状態遷移モデルだけからテストケースを作ると
(. \ / ./_ノ │
\ “ /___| | 『誤った状態遷移のチェック』ができず、テストしては弱い
. \/ ___ /
/ ̄ ̄\
/ ノ \ \/`i
| (●)(●)./ リ
. | (__人__)..| / そ ・ こ ・ で!
| ` ⌒´ リ ヒ
. ヽ // ,`弋ヽ 遷移前の状態と、イベント、遷移後状態を組み合わせた
ヽ - ′.Y´ , `ヽ`.l
/〈 `ー〈::....ノ V .. マトリックスである状態遷移表を状態遷移モデルから作るだろ!!
| ヽ_ー 、 `ヾ_/ //
| フ-、`ー┴‐-〃
`ー‐一′
____
/_ノ ヽ、\
/( ●) (●).\ Excel とかで書くのかお?
/ (__人__) u. \
|ni 7 ` ⌒´ . |n ..図を描くのにもそれなりに時間がかかったのに
l^l | | l ,/) U l^l.| | /)
', U ! レ' / . . | U レ'//) さらに表も書くのかお・・・
{ 〈 ノ /
..i, ."⊃ rニ /
."'""⌒´ `''""''''
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) それを自動的にやってくれるツールがある
| ` ⌒´ノ
. | } 『 Enterprise Archtic 』では状態遷移図を書くと
. ヽ }
ヽ ノ \ 同時に状態遷移表も作ってくれるだろ
/ く \ \
| \ \ \ http://www.sparxsystems.jp/ea.htm
| |ヽ、二⌒)、 \
γ ⌒⌒ヽ
/ ̄ ̄\ ( ( ヽ ) ノ
/_ノ \ (⌒) 三 ノ 从 ゝ
( ●)( ●) ヽ 三/ | ニ ____ (⌒)
. | (__人__) u } | | /\ / ) し / | ミ
| ` ⌒´ ノ ! 、 /(○ )::(○ )⌒\/ | ミ そんな便利なツールがあるなら、すぐ使うお!
. | } \./:::::::(_人_):::::::: i' |
. ヽ } | )ww) | | ダウンロードするからURL教えるんだお!!
ヽ ノ ヘ \ `ー" ノ
/ く 、_/っ/ \ . . \
| \--一'' \
| |ヽ、二⌒)、 \
/ ̄ ̄\
/ _ノ \
| ( ●)(●) まて、これは30日分の評価版はダウンロードできるが
. | (__人__)
| ` ⌒´ノ これはあくまで商用ツールだ
. | }
. ヽ } 正式に仕事で使うにはお金払う必要があるから注意な
ヽ ノ ビシッ
/ く__,-ュ__ て
| ___ 三) (
| |  ̄ ´
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) | ちなみにおいくら?
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
/ ̄ ̄\
/ _ノ ヽ、.\
| (●)(●) .|
! (__人__) | ダウンロード版で一番安いのでも
, っ `⌒´ |
/ ミ) / 1ライセンスで17,325円だな
./ ノゝ /
i レ'´ ヽ
| |/| | |
____
/ \
/ ─ ─ \
/ (●) (●) \
| (__人__) |
\ `⌒´ ,/
/ ー‐ \
____
/:::::::::: u\
/:::::::::⌒ 三. ⌒\
/:::::::::: ( ○)三(○)\
|::::::::::::::::⌒(__人__)⌒ | _________ 限定版エロゲが楽々買えるお!
\:::::::::: ` ⌒´ ,/. | | |
ノ::::::::::u \ | | | ネットで落ちていないか探すお!!
. /:::::::::::::::: u | | |
|::::::::::::: l u | | |
ヽ::::::: -一ー_~、⌒)^),-、 |_|_______|
ヽ::::::::___,ノγ⌒ヽ)二二二 | | |
-=≡
-―‐- 、 -=≡三 / ,/
/ _ノ ヽ それは立派な犯罪だろ! -=≡三 三 三 -=:/| .//
/ (●);ゞ. 、| -=≡三 三 三 三 -=三 : / .!_/ /
/ .(⌒` ゙':(●ノ -=≡三 三 - 三≡三¬ ̄\ ´⌒ヽ て__
〃⌒\ニヽ__)/ -=≡三 三 三=≡三¬ ̄ iii(○) ヽ } ( ̄ ̄ ̄
/ }_ ノ -=≡ 三 三.:' -=≡三 ;:ヽ. (__人_) ⌒:::| _,ノ \
/ ノ ヽ _ /-=≡三 三 -=三三ニ { # ) ( ( / ´\ ∧` ̄
/ / l ( 、ヽ)〉 -=≡ 三 -=≡| . { \`'''´ ⌒` /∵i,i'`';.\! ヽ .+∵
/ / ト、 レク / _ '´ 三= : | ‘ー-ィ⌒ < + * 、 ;,;', '´`';・
/ / │ ヽ/ / '´ -= \ \ ;'´ `';
/ / ヽ、 〃, '´ _>'´ ` ー―7 ,r }
/ , / : ゞ`ー≠/ '´ / , ー―‐-イ /
. r 、 / /ヽ  ̄ ̄ '´ / { /
\ヽ‐'´ / ヽ : '´ ノ `ー――‐<´
(ニニニ´ _,./ ヽ x '´ / /⌒ヽ \
_/ - ./ ヽ /_ / / \ ヘ
. └‐と´/ > / : ( く } |
‘‐'´ / / \ \ | !
/ / \ \ | }
/ / ノ 丿 / /
/ / く / / i
/ / ` ―‐ ´ 廴___,ノ
| ! | | |
| │ 〈 ! 人
| |/ノ二__‐──ァ ヽニニ二二二ヾ } ,'⌒ヽ  ̄ .Y  ̄
/⌒!| =彳o。ト ̄ヽ '´ !o_シ`ヾ | i/ ヽ ! |
! ハ!| ー─ ' i ! `' '' " ||ヽ l |
| | /ヽ! | |ヽ i ! イイ男達が集まって何してるかと思えば…
ヽ { | ! |ノ /
ヽ | _ ,、 ! , ′ やる夫よ、『Enterprise Archtic』は、実は既に
\ ! '-゙ ‐ ゙ レ'
| `! / コーポレートライセンスで全員分挿ny・・・購入済みだぜ
人 ヽ ゙  ̄  ̄ ` / |
 ̄ .Y  ̄ |\ ー ─‐ , ′ ! 必要性に気付いたお前には使用許可を出してやるさ
| | \ / |
___
/ \
/ \ , , /\
/ (●) (●) \ さすが阿部さんだお!
| (__人__) |
\ ` ⌒ ´ ,/ さっそく使ってみるお!!
ノ \
/´ _i⌒i⌒i⌒i┐ ヽ まずは評価版で、CSVPaserの
| l ( l / / / l
l l ヽ / 状態遷移図を書いてみるお!
//////////////////////////////////////////////////
____
/─ ─\
/ (●) (●).\
/ (__人__) \
| ` ⌒´ | astahで書いたのと同じやつをEA(もう略す)で書いてみたお!
\ /
ノ \
. /´ ヽ カ
| l l||l 从人 l||l l||l 从人 l||l カ タ
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
┌ ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐
,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄

, '´  ̄ ̄ ` 、
i r-ー-┬-‐、i
| |,,_ _,{|
N| "゚'` {"゚`lリ そして、状態遷移図上で、
ト.i ,__''_ !
/i/ l\ ー .イ|、 『右クリック』→『Statechart Editor -> Table』だ
,.、-  ̄/ | l  ̄ / | |` ┬-、
/ ヽ. / ト-` 、ノ- | l l ヽ. 男は度胸、なんでもヤッてみるものさ!
/ ∨ l |! | `> | i
/ |`二^> l. | | <__,| |
_| |.|-< \ i / ,イ____!/ \
.| {.| ` - 、 ,.---ァ^! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
__{ ___|└―ー/  ̄´ |ヽ |___ノ____________|
}/ -= ヽ__ - 'ヽ -‐ ,r'゙ l |
__f゙// ̄ ̄ _ -' |_____ ,. -  ̄ \____|
| | -  ̄ / | _ | ̄ ̄ ̄ ̄ / \  ̄|
___`\ __ / _l - ̄ l___ / , / ヽi___.|
 ̄ ̄ ̄ | _ 二 =〒  ̄ } ̄ / l | ! ̄ ̄|
_______l -ヾ ̄ l/ l| |___|

____
/ \
/ ─ ─\ おおおお!
/ (◎) (◎) \
| (__人__) | 状態遷移表が出て来たお!
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
___
,ノ' ´ ` ''ヾ、
/ ヽ
}f^'^^了t^'^'`'ー1 l
|L_ ! ___ { ,..、|
}f'tr'i ''^'tォー` }j/i',|
l.| ´ |  ̄ vijソ.!
丶 └、 Fイ l′ そして、なんとコチラの状態遷移表でも編集が可能で
/ ', ‐--‐ ,イ ケ|
, ,/. ヽ `''"´,/ ! ^|ー、 その編集結果はもちろん元の状態遷移図に反映されている
/ / _,,」、'....ィ' '|. \、_
. /./ ,. ‐'''"´ ! / , _」__ヾ', 二刀流ってトコだな
.,'.,' /´ └ 、_ ノi ノ (、_ ``ヾ!
,'/ / ヽ、 ` ''ー 、ィ-─'' r`'^ `
l| ! リ `ぅ ー=、_
| | サ 〉
ト ′ ./''ー- 、,.._
| ヽl (B / ヽ、
,, - ―- 、
,. '" _,,. -…; ヽ
(i'"((´ __ 〈 }
|__ r=_ニニ`ヽfハ }
ヾ|! ┴' }|トi }
|! ,,_ {' }
「´r__ァ ./ 彡ハ、
ヽ ‐' / "'ヽ それから、使用できるテーブルのパターンは3つあるので
ヽ__,.. ' / ヽ
/⌒`  ̄ ` ヽ\_ 目的に応じて使い分けも可能だ
/ i ヽ \
,' } i ヽ Excelで書いている場合じゃないぞ
{ j l }
i ヽ j ノ | } l
___
/ \
/ \ , , /\
/ (●) (●) \ これは自分で買っていいぐらい、楽ちんできるツールだお・・・・
| (__人__) |
\ ` ⌒ ´ ,/ 空いた時間でエロゲが出来るお!!
ノ \
/´ _i⌒i⌒i⌒i┐ ヽ
| l ( l / / / l
l l ヽ /
/ ̄ ̄\
/ _ノ \
| ( ●)(● いや、そこは仕事しろよjk
| (__人__)
. | ノ この状態遷移表をベースにテストケースを作れるわけだが
| ∩ ノ ⊃
/ ./ _ノ さらに高度な状態遷移のカバレッジであるNスイッチカバレッジを
(. \ / ./_ノ │
\ “ /___| | 満たすテストケースを作るための方法として…
. \/ ___ /
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) まずはこの状態遷移図から
| ` ⌒´ノ
. | } CSVファイルをエクスポートして
. ヽ }
ヽ ノ \ それを.Excel.で開いてみるぞ
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \

/ ̄ ̄\
/ ノ \ \
| (●)(●) |
. | (__人__) |
| ` ⌒´ ノ こんな感じの元の状態遷移表から…
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \

(⊃ ̄ ̄\
(⊃ _ノ \
(⊃ ( ●)(●)
| (__人__) こんな感じの1スイッチカバレッジの
| ` ⌒´ノ
| } \ 状態遷移表が作られるだろ
/ヽ } \
/ ヽ、____ノ ) ちなみにスイッチの数はいくらでも指定可能だ
/ . | _/
| / ̄ ̄(_)
\ \ /| JJJ (
\ / /⊂_)
※カバレッジ
取材範囲、補償範囲、受信範囲、対象範囲、被覆率などの意味を持つ英単語
ソフトウェア開発において、出来上がったプログラムのテストをする際に、
どの程度をテスト対象とする(ことができる)かをカバレッジ(テストカバレッジ)という
___
/ \
/ _ノ '' 'ー \ この、Nスイッチカバレッジというのはどんな意味があるんだお?
/ (●) (●) \
| (__人__) | 今回のCSVParserの例で行くとどんな感じだお?
\ ` ⌒´ /
/ ̄ ̄\
/ _ノ \
| ( ●)(●) 『.「"」で始まり、「"」で閉じる.』といった、シナリオが検証可能だ
. | (__人__)
| ` ⌒´ノ さらにスイッチを増やすことによって、
.l^l^ln }
.ヽ L } 『.「,」の後に「"」があり、その間に「"」以外が続き、「"」で閉じる.』といった
ゝ ノ ノ
/ / \ 複雑なテストケースも可能になるだろ
/ / \
. / / -一'''''''ー-、.
人__ノ (⌒_(⌒)⌒)⌒))
/ ̄ ̄\
. ./ _ノ ヽ
| ( ●) (●) 特にCSVParserのような複雑なモノの場合
| (__人__) ∫
| `⌒´ノ ∬ 単純な状態遷移表のカバレッジをとっても不十分な場合が多い
. ヽ } | ̄|
ヽ ノ |_|) ただ、パーサーの場合、拡張BNFとかで
____/ イー┘ |
| | / / ___/ パース対象となる言語の言語仕様を決めていることがほとんどなので
| | / / |
| | (  ̄ ̄ ̄⌒ヽ その場合は構文テストの技法を使った方がいいだろ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
., ──‐、
/ \
. .| _ノ ヽ
| ( ●) (●) 構文テストの詳細は
| (__人__) , -―ーっ
| ` ⌒´ノ ( ゝ彡 ̄ 『 実践的プログラムテスト入門―ソフトウェアのブラックボックステスト 』
. ン } ゙| ̄'| http://amzn.to/eBgRsv
/⌒ヽ、 ノ .|, |
__/ ノ \_ィ ´ー‐ィ' ∫ これを参考にして欲しいだろ
| | / / r_____ ∬
| | / / |i ┌‐┐ 薄く見えるが恐ろしく難易度が高いので注意な
| | ( 〆⌒'──r─≒、.((| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄└‐┘ ̄ ̄ ̄ ̄
____
/ \
/ \ TDDと同時に、状態遷移のモデリングもして
/ \
| \ ,_ | そっから、体系だったテストケースも導けちゃうって事は
/ u ∩ノ ⊃―)/
( \ / _ノ | | 状態遷移モデルによるテストケースは
.\ “ /__| |
\ /___ / TDDで作ったテストケースを補完するってことかお?
/ ̄ ̄\
/ _ノ \
| ( ●)(● そういう事だ
| (__人__)
. | ノ 俺の会社ではそれを『MTDD』…
| ∩ ノ ⊃
/ ./ _ノ Model & Test Driven Development
(. \ / ./_ノ │
\ “ /___| | と呼んでいるな
. \/ ___ /
γ´/ 丿ヽ
-‐ '´ ̄ ヽソ ` 丿 脇からいいかしら?
/ //" `ヽ ヽ ヽ\
//, '//レ´/ノ ヽハ `、ヽ 状態遷移テストについては一つ大きな注意が必要よ
〃 {_{ ⌒ ⌒ リ| l │i
レ!小l (●) (●)从 |、i|\ 確かに、技法的にも確立されているテストなのだけど
丿ル| 、_,、_, |ノレ リ, ヽ
ヽ ゝ._) j /. V_,/) 現実には簡単に状態とその遷移は爆発を起こすために、
ゝ ,、__, イ / /
.y' |ヽ/ |  ̄ ̄ ̄` ,/ 実プロジェクトで用いるには少々工夫が必要よ
/丿ヘ`γ
丿 ´ ゞ ,ソ ̄`' ‐、
,/ノ ,/ ノ´ ゛゙i\ \
/ ハ,r'∨、/`レ´\ノ',iソ
|i │ l |リ ⌒ ⌒ }_}゙ 前にやった、原因結果グラフとかを使って
|i ,.| 从( ●) (●)l小!
\(,| ⊂⊃ 、_,、_,⊂⊃ 状態とその遷移のスコープを絞り込むことが
,..-ヘj ー' ノ
./::":::::::`ヽ、. __ イ 実用的なテストしては必要になるわ
/::i::::::::::::"'弋'!ー',〆>|'_ノ´`ー -,,_ _
. }:::゙|::::::::::::::::::::~゙:_戈;f" 、 イ/ `i あるいは、私みたいに要件定義や
/:::::::!;:::::::::::::::::::/',r.テ \xー.ォ、__ノ
::::::::::::ヾ!:::::::::::::l .l r' ` 、_冫y" 分析の仮説検証とレビューに用いるのも有用だわね
:::::::::::::::::\o:::::l .ト、 ヽ,_ノ"ー'
:::::::::::::::::{::::{\代 l>ー、,_ノ
____
/ \
/ ─ ─ \ (非常にイイ事言ってるんだけど
/ -=・=- -=・=- \
| (__人__) U | 相変わらず上から目線でうざい女だお…)
\ ` ⌒´ /
/ ̄ ̄\
/ _ノ \
| ( ー)(ー) 最初は阿部さん、最後にはとも子にお株を奪われてしまったが
. | (__人__)
| ` ⌒´ノ ツールも技法も適材適所で、対投資効果を考えてってことだな
. | nl^l^l
. ヽ | ノ
ヽ ヽ く
/ ヽ \
/ ̄ ̄\
/ ヽ、. _ノ \
| (●)(●) |
| (__人__) | やる夫がスーパープログラマーを目指しているなら
| ` ⌒´ |
| } 『.創造的な怠惰.』を実践する必要があるだろ
ヽ }
人_____ノ"⌒ヽ 楽にエレガントにするために、勉強し、実践していくってことだな
/ \
/ へ \
( ヽγ⌒) | \ \
 ̄ ̄ ̄\__/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
{;;;;;;;}
L;;;;」