xp customer testing
DESCRIPTION
DevLove(2011/1/27) 発表資料TRANSCRIPT
XPをベースにAcceptance Testing 入門を解説するよ
2011年1月28日金曜日
自己紹介
• 家永英治 @haru01
• 所属: 永和システムマネジメント
• @t_wada,@kakutaniに感化されて、TDDファンに
2011年1月28日金曜日
自己紹介
• XP、アレグザンダー好き
• Acceptance Testing にちょっと興味があるごくごく普通のDeveloper
• テスター専門家ではありません
2011年1月28日金曜日
今日お伝えしたいこと
2011年1月28日金曜日
Customers
Testers
Developers
協力して、ぐるぐる回せばGreat Software が できるはず!
2011年1月28日金曜日
よろしくお願いします
2011年1月28日金曜日
アジェンダ
•2分でわかる反復&段階開発におけるテストの位置づけ
• 10分でわかる XPにおける Customer Tests
• 3分でわかる BDD
• みんなで Testing について話し合ってみよう
2011年1月28日金曜日
#1
WaterFall
仕様
設計
実装
テスト
時間
工程
3秒2011年1月28日金曜日
WaterFall
機能A
機能B
機能C
完了したフィーチャ
時間
テスト込み
5秒2011年1月28日金曜日
#2 #3#1
反復的な開発
時間
仕様設計実装テスト
仕様設計実装テスト
仕様設計実装テスト
工程
.....
3秒2011年1月28日金曜日
段階的な開発
機能A
機能B
機能C
完了したフィーチャ
時間
機能C
機能B
機能C
テスト込み
テスト込み
テスト込み
5秒2011年1月28日金曜日
Whole Team
Customers Developers Testers Customers Developers
Testers
モジュール型のチーム
擦り合わせ型のチーム
物理的 時間的に 疎な関係物理的 時間的な共有を多く
とり密な関係
2011年1月28日金曜日
Customers Developers
Testers
XPでは Small Relases, User Stories,
Customer Tests 等を使って,
擦り合せ型のチームを実現
2011年1月28日金曜日
2011年1月28日金曜日
アジェンダ• 2分でわかる 段階&反復開発におけるテストの位置づけ
•10分でわかる XPにおける
Customer Test• 3分でわかる BDD
• Acceptance Testの課題
2011年1月28日金曜日
Exteme Programming
外側だけ
2011年1月28日金曜日
2011年1月28日金曜日
Christopher Alexander の影響を受けた
Kent Beck と Ward Cunningham
2011年1月28日金曜日
Christopher Alexander
2011年1月28日金曜日
2011年1月28日金曜日
Customer Testを例えるなら
• Wikiが目指しているようなこと
• CRCカードが目指しているようなこと
• 建築のパタンランゲージが目指しているようなこと
2011年1月28日金曜日
アレグザンダーの「オレゴン大学の実験」の原理とCustomer Testの対応
参加の原理 Testers、Customers、Developersがテスト
(仕様の例の検討) に積極参加
パタンの原理 テスト(仕様の例)が共通の語彙
有機的秩序の原理漸進的成長の原理
少しづつテストを育てていく
診断と修復の原理Red、Greenの状態確認、Acceptance or Reject の状態確認
調整の原理 イテレーションで何をつくるか調整
2011年1月28日金曜日
生物がすこしづつ成長していくように
2011年1月28日金曜日
Customer Testが必要になる背景
2011年1月28日金曜日
Customer Tests が必要とされる 背景/課題
http://itpro.nikkeibp.co.jp/article/COLUMN/20080828/313626/
オレゴン大学の実験にも似た図が
2011年1月28日金曜日
Ward Cunningham
✓XP立ち上げのコアメンバー
✓CRC カードの発案者
✓Wiki の作者
✓Fit の作者
XP, CRC, Wikiに似た思想が Fit にも2011年1月28日金曜日
Fit
“Great software requires collaboration and communication. -- http://fit.c2.com/
2011年1月28日金曜日
Fit
“Fit is a tool for enhancing collaboration in software development. -- http://fit.c2.com/
2011年1月28日金曜日
Fit“It automatically compares customers' expectations to actual results.-- http://fit.c2.com/
2011年1月28日金曜日
Fit とは
• 仕様(Cusutomers が本当に欲しいもの)と 実装 ( 実際の実行結果)を擦り合せるための
• 双方向コミュニケーション ツール
• 自動テスティングフレームワーク
2011年1月28日金曜日
Customers, Developers, Testersの
コミュニケーションツール
2011年1月28日金曜日
自動テスティング
フレームワーク
2011年1月28日金曜日
Fit の 静的外観
Fixture
ProductionCode
Customers
Testers
Developers
2011年1月28日金曜日
Fitを使ったAcceptance Testing 例ユーザストーリーについて会話
Spec & Exampleを記述(Word)
失敗を確認
リファクタリング
受入れ確認Unit
Testing(TDD)
成功の確認
Unit Testing(TDD) Fixtrue の記述
AceptanceTDDとRSpec本を参考
2011年1月28日金曜日
✓小さく回すこと✓スムーズに回すこと✓継続的に回すこと
Conversation
describe
RedGreen
Refactor
Acceptance
ソフトウェアをすくすくと育てるには
2011年1月28日金曜日
会話Conversation
2011年1月28日金曜日
Example(表)を使ってSpecの内容確認
Customers
Testers
Developers
-- http://fit.c2.com/
詳しくは
2011年1月28日金曜日
記述describe
2011年1月28日金曜日
-- http://fit.c2.com/
Human Readable & Executable Specification
Spec(仕様)
Example(例)
(会話の中で、Example を通じてSpecを確認)
2011年1月28日金曜日
実行確認red -> green
2011年1月28日金曜日
2011年1月28日金曜日
受入れAcceptance (or Reject)
2011年1月28日金曜日
バックログ単位で確認
2011年1月28日金曜日
アジェンダ
• 3分でわかる段階&反復開発におけるテストの位置づけ
• 10分でわかる XPにおける Customer Tests
•3分でわかる BDD
• 15(分)Acceptance Testの課題 / テーブル話し合ってみよう
2011年1月28日金曜日
Behavior Driven Development
2011年1月28日金曜日
BDD
• XPの CustomerTest(Accetance TDD) や
TDDと似た特徴
• 文法(言葉)を 仕様 中心に構成
• キーワード:Given, When, Then
• ツール:Cucumber, Steak, RSpec
2011年1月28日金曜日
BDD
ATDD使っている文法(言葉)、ツールは異なるが、裏に流れている思想はよく似ている
2011年1月28日金曜日
✓小さく回すこと✓スムーズに回すこと✓継続的に回すこと
Conversation
describe
RedGreen
Refactor
Acceptance
2011年1月28日金曜日
BDDの文法
• Given(前提)
• When(もし)
• Then(ならば)
• (• Example(例)
2011年1月28日金曜日
https://github.com/ruby-no-kai/rubykaigi/blob/master/features/toppage.feature
裏には、この日本語テキストを解釈実行するためのstepファイルがある
2011年1月28日金曜日
日本語で読める!
http://tatsu-zine.com/books/cuke
2011年1月28日金曜日
定番
2011年1月28日金曜日
おすすめ学習ロードマップ
• ツールを素振り
• Fit, Cucumber, Steak, Seleniumなどなど
• 「会話」をテーマに
• 「Bridging the Communication Gap」
• 「User Stories Applied」
• Example、Given, When, Thenを開発の日常会話に
2011年1月28日金曜日
今日お伝えしたかったこと
2011年1月28日金曜日
Customers
Testers
Developers
Testing はチームで協力し合うのが大前提
2011年1月28日金曜日
“Great software requires collaboration and communication. -- http://fit.c2.com/
2011年1月28日金曜日
✓小さく回すこと✓スムーズに回すこと✓継続的に回すこと
Conversation
describe
RedGreen
Refactor
Acceptance
ソフトウェアをすくすくと育てるには
2011年1月28日金曜日
• Example(仕様の例)
Customer Test / BDDの文法
• Given
• When
• Then
2011年1月28日金曜日
• Fit
• Cucumber
Customer Test / BDDのツール
2011年1月28日金曜日
Customers
Testers
Developers
協力して、ぐるぐる回せばGreat Software が できるはず!
2011年1月28日金曜日
Happy Testing
2011年1月28日金曜日
Testing について お話してみよう
2011年1月28日金曜日
手順5-6人にわかれて
Testing について自分が連想すること一人で思い浮かべる
テストで良かった本
プロジェクト経験
今日の聞いた話で印象に残ったこと
自分が理想とする Testing 像
Testing についてお話ししてみよう(残り時間)
2011年1月28日金曜日
対話(ダイアローグ)のコツ
判断の保留して、傾聴対話のコツ
傾聴、 判断の保留、 越境2011年1月28日金曜日
http://www.flickr.com/photos/cestomano/2297242391/sizes/z/in/photostream/
対話のコツ
越境! 越境!
繋がれ、 銀河の果てまで!2011年1月28日金曜日
http://www.flickr.com/photos/cestomano/2297242391/sizes/z/in/photostream/
2011年1月28日金曜日