devsumi 2008 developer testing

31
和田 卓人 タワーズ・クエスト株式会社 プログラマ 兼 取締役社長 14-D-5 デベロッパー テスティング・ライブ 自信を持ってコードを書くための心・技・体

Upload: takuto-wada

Post on 06-May-2015

2.559 views

Category:

Technology


1 download

DESCRIPTION

Developer Testing Live on Developer Summit 2008

TRANSCRIPT

Page 1: Devsumi 2008 Developer Testing

和田 卓人タワーズ・クエスト株式会社

プログラマ 兼 取締役社長14-D-5

デベロッパーテスティング・ライブ 自信を持ってコードを書くための心・技・体

Page 2: Devsumi 2008 Developer Testing

改め

Page 3: Devsumi 2008 Developer Testing

最もタメになる初心者用言語はxUnit

Page 4: Devsumi 2008 Developer Testing

自己紹介名前: 和田 卓人 (わだ たくと)

ブログ: http://d.hatena.ne.jp/t-wada

メール: [email protected]

Twitter: http://twitter.com/t_wada

タワーズ・クエスト株式会社 プログラマ 兼 取締役社長

Page 5: Devsumi 2008 Developer Testing

これまで書いたもの

• WEB + DB PRESS

• vol.35 「実演! テスト駆動開発」

• vol.37 「実演! リファクタリング」

• vol.42 「REST特集」

• LifeHacks PRESS

• オープンソースマガジン(リレーコラム)

• 他いろいろ

Page 6: Devsumi 2008 Developer Testing

gihyo.jpの連載• [動画で解説]和田卓人の“テスト駆動開発”講座•gihyo.jpにてWeb連載を行いました•http://gihyo.jp/dev/serial/01/tdd/

•毎回動画でも解説しています•全20回の連載を終了しました•お気軽にフィードバックください

• WEB+DB過去記事の特設サイトと動画も健在です

Page 7: Devsumi 2008 Developer Testing

Agenda• Developer Testingとテスト駆動開発(TDD)

• デモ

• リズム

• つぶやき

• 間合いと精神

Page 8: Devsumi 2008 Developer Testing

Developer TestingとTDD

Page 9: Devsumi 2008 Developer Testing

テストの分類

DeveloperTesting

開発者

開発促進

CustomerTesting

顧客(のロール)

進捗管理

QATesting

品質保証担当者(のロール)

品質保証

「テスト」

Page 10: Devsumi 2008 Developer Testing

Developer Testingとは

•プログラマの•プログラマによる•プログラマのための•プログラムとしてのテストを書きながら•開発を行っていく手法がDeveloper Testing

Page 11: Devsumi 2008 Developer Testing

動作する、きれいなコードへ

きれい

汚い

(すぐには)動かない 動作する

二つの道がある

Page 12: Devsumi 2008 Developer Testing

TDDのサイクル1. テストを書き2. そのテストを実行して失敗させ(Red)

3. 目的のコードを書き4. 1で書いたテストを成功させ(Green)

5. テストが通るままでリファクタリングを行う(Refactor)

6. 1~5を繰り返す

Page 13: Devsumi 2008 Developer Testing

TDDとコード

きれい

汚い

(すぐには)動かない 動作する

Red

Green

Refactoring

Page 14: Devsumi 2008 Developer Testing

デモ

Page 15: Devsumi 2008 Developer Testing

FizzBuzz問題Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

Page 16: Devsumi 2008 Developer Testing

ukaiさんのお題• 制限を加える(ループを使わないで書く、剰余を使わないで書く、…)

• printせず list にしてかえす

• FizzBuzzをテストするプログラムを書く

• 3とか5がパラメータ化されているとして、出力からそのパラメータを調べる

http://blogger.ukai.org/2007/09/itpro-challenge.html

Page 17: Devsumi 2008 Developer Testing

開発環境

• Eclipse 3.4(Ganymede) Milestone 4

• Subversive

• Quick-JUnit

• JUnit 4.4

Page 18: Devsumi 2008 Developer Testing

1st iteration

Page 19: Devsumi 2008 Developer Testing

掘り下げるか、積み上げるか

• 不安をテストにする

• 構成要素に不安があるのか

• 全体像に不安があるのか

Page 20: Devsumi 2008 Developer Testing

TDDの基本テクニック

• テストファースト

• アサートファースト

• 仮実装(Fake it)

• 三角測量(Triangulation)

• 明白な実装(Obvious Implementation)

Page 21: Devsumi 2008 Developer Testing

2nd iteration

Page 22: Devsumi 2008 Developer Testing

間合いを測る• 対象を見定める

• ゴールを描く

• 不安は何か

• 何なら不安でないか

• 一歩目の対象を狭める

Page 23: Devsumi 2008 Developer Testing

帽子• ロールを「帽子」だと考えてみる

• 帽子を取り替えながら開発する

• 開発者の帽子

• 顧客の帽子

• 品質の帽子

Page 24: Devsumi 2008 Developer Testing

気付きと品質• テストを書くと気付く例外条件が多い

• もしも…

• 引数が負の数だったら?

• 引数が0だったら?

• BuzzがFizzの倍数の時にはどちらを出す?

Page 25: Devsumi 2008 Developer Testing

3rd iteration

Page 26: Devsumi 2008 Developer Testing

Design for Testability

• テストしやすいコードを書くためには?

• テストから先に書く => テスト可能になる

• テストを考える = 設計を考える

Page 27: Devsumi 2008 Developer Testing

Refactoring

• 呼吸をするようにリファクタリングする

• Rename (改名)

• Extract (抽出)

• Inline (インライン化)

Page 28: Devsumi 2008 Developer Testing

おわりに

Page 29: Devsumi 2008 Developer Testing

テストはスキルです

• テストやTDDはスキルです。つまり…

• 才能ではなく、習得可能です

• 量は質に転化します

• 写経!!

Page 30: Devsumi 2008 Developer Testing

参考文献

Page 31: Devsumi 2008 Developer Testing

Thank you.