狠狠撸

狠狠撸Share a Scribd company logo
私にとっての
テスト
和田 卓人 (a.k.a id:t-wada or @t_wada)
Jul 24, 2013 @Testing Casual #1
和田 卓人
id: t-wada
@t_wada
github: twada
#97prog_ja
#sqlap
Agenda
?「品质」について
?TDD の T について
?(TDD の) 良いテストとは
?才能と技術
?私にとって TDD とは
品质
品质とは何か
品质とは誰かにとっ
ての価値である
Accessibility
Adaptability
Administrability
Analyzability
Auditability
Availability
Calibrability
Changeability
Compatibility
Configurability
Exploitability
Extensibility
Flexibility
Functionality
Installability
Integrability
Internationalizability
Interoperability
Learnability
Maintainability
Marketability
Maturity
Modifiability
Operability
Personalizability
Portability
Recoverability
Reliability
Replaceability
Reusability
Scalability
Security
Sensitivity
Stability
Suitability
Supportability
Testability
Traceability
Transactionality
Understandability
Upgradeability
Usability
... and lots more!
「品质」は
なにやら難しそうで、
ちょっと怖そうに見えがち
「品质」っちゅうか
ら難しく聞こえてまう
んや。「質」と言えば
皆わかってくれる。
(出典失念。テレビかラジオのインタビュー番組より)
品质
私たちには、何か「良いも
の」を見抜く能力があらか
じめ備わっている
QWAN
(Quality without a name)
1. 生き生き alive
2. 全一的 whole
3. 快適 comfortable
4. 自由 free
5. 正確 exact
6. 無我 egoless
7. 永遠 eternal
http://www.itmedia.co.jp/im/articles/0610/25/news127.html
戻ります……
(??ω?`)
http://www.thomasalspaugh.org/pub/fnd/ility.html
Boehm, Brown, and Lipow's 23 Quality Characteristics (1976)
Agenda
?「品质」について
?TDD の T について
?(TDD の) 良いテストとは
?才能と技術
?私にとって TDD とは
TDDの
T について
TDDのサイクル
1. 次の目標を考える
2. その目標を示すテストを書く
3. そのテストを実行して失敗させる(Red)
4. 目的のコードを書く
5. 3で書いたテストを成功させる(Green)
6. テストが通るままでリファクタリングを行
う(Refactor)
7. 1~6を繰り返す
「動作するきれいなコード」、ロン?ジェフ
リーズのこの簡潔な言葉は、TDD(テスト駆
動開発)の目標である。動作するきれいなコー
ドは、あらゆる理由で価値がある。
─ Kent Beck
テストとは,エラーをみつ
けるつもりでプログラムを
実行する過程である
あるテストエンジニア
の思い出
テストとは
創造的破壊行為
http://www.developsense.com/blog/2009/08/testing-vs-checking/
Testing
or
Checking
TDD は
Checking
https://speakerdeck.com/everzet/bdd-in-symfony2
Checking
だけじゃダメ
http://www.exampler.com/old-blog/2003/08/21/#agile-testing-project-1
Brian Marick による四象限モデル
http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/
http://www.thomasalspaugh.org/pub/fnd/ility.html
Joseph P. Cavano and James A. McCall.A framework for the measurement of software quality. In
software quality assurance workshop on Functional and performance issues, pages 133–139, 1978.
Cavano and McCall s 11 Quality Factors (1978)
Agenda
?「品质」について
?TDD の T について
?(TDD の) 良いテストとは
?才能と技術
?私にとって TDD とは
(Checking の文脈での)
良いテストは
どんなものか
F.I.R.S.T
=> クリーンテストの5つの規則
Fast
Independent
Repeatable
Self-Validating
Timely
高速である
独立している
再現性がある
自己検証可能
適時性がある
R > S >>> I >>>>>>>>> F >>> T
再現性がある > 自己検証可能 >>> 独立している >>>>>>>>> 高速である >>> 適時性がある
A-TRIP
=> 良質なテストの特性
Automated
Thorough
Repeatable
Independent
Professional
自動
徹底
繰り返し可能
独立している
専門的
R > A >>> I > P >>>>>>>>>> T
繰り返し可能 > 自動 >>> 独立している > 専門的 >>>>>>>>>> 徹底
F.I.R.S.T
A-TRIP
共通するもの
Fast
Independent
Repeatable
Self-Validating
Timely
Automated
Thorough
Repeatable
Independent
Professional
Fast
Independent
Repeatable
Self-Validating
Timely
Automated
Thorough
Repeatable
Independent
Professional
Agenda
?「品质」について
?TDD の T について
?(TDD の) 良いテストとは
?才能と技術
?私にとって TDD とは
才能と技術に
ついて
テストでは品质は上がらない
ですよ。テストはあくまでも品
質をあげるきっかけ。品质をあ
げるのはプログラミングです。
これは大昔からそう。
私にとってのテスト
私にとってのテスト
シンプルさは信頼性の前提である
――Edsger W. Dijkstra
複雑さはシステムに損傷をもたらす
――Bertrand Meyer
Simplicity matters.
――Rich Hickey
まったく同じ予測をする2つの競
合する理論があるときは、単純な
方が優れている。
――節約の原則
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
TDDと黄金の回転
Agenda
?「品质」について
?TDD の T について
?(TDD の) 良いテストとは
?才能と技術
?私にとって TDD とは
私にとって
TDDとは
無意識
意識的
無鉄砲 用心深い
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?TechnicalDebtQuadrant
Fowler による技術的負債の四象限モデル
この象限が手強い
自動テストの良いところは、
改善を我慢しなくても良く
なったこと
全ては変化する
仕様が固まることは無い
開発が終わることは無い
理解は常に深化する
スキルも常に進化する
技術も常に進化する
私の好きなテストは
変化を妨げないテスト
変化を後押しするテスト
私にとって
TDD とは 悪あがき
あきらめずに改善したい
自分のコードを嫌いたくない
TDDはスキルです
?ひとりから始められる
?テストやTDDはスキルです。つまり…
?才能ではなく、習得可能です
?量は質に転化します
?写経しましょう!!
ご清聴ありがとうございました

More Related Content

私にとってのテスト