Index: [Article Count Order] [Thread]

Date:  12 Sep 2002 16:48:33 +0900
From:  y-kamite@....jp
Subject:  [XP-jp:03703] TDD
To:  extremeprogramming-jp@....jp
Message-Id:  <20020912164720.F714.Y-KAMITE@....jp>
X-Mail-Count: 03703

こんにちは、上手です。

ソフトウェアテストのMLで大田さん(Oota Kenichiro)が紹介されていた記事を
読んで、Kent Beck の TDD(Test-driven Development)の資料を調べてみました。
なかなか面白そうなので内容を紹介しておきます。
#石井さんに紹介されたとか。

http://groups.yahoo.com/group/testdrivendevelopment/files/
TDD17Jul2002.pdf が最新のようです。

これから出版される本の草稿のようですが、大分進んでいます。
3部構成です。(以下、前書きより)
1部:マネーの例 ->Ward Cunnigham からずっと前に入手した「多国籍通貨の計
算」の例による、テストファーストの説明です。

2部:xUnit ->1部の例より複雑でリフレクションや例外を含んだ例を、自動
テストのフレームワークを開発しながら示します。これはxUnitアーキテクチャ
の紹介でもあります。

3部:TDDのパターン ->どんなテストを書き、どうテストするか。例の中で使
われたデザインパターンとリファクタリング。

TDDの概要は、前書きと 35章 Mastering TDD などにあります。
(前書きより)

TDDではあなたは:
・自動テストが失敗したら新しいコードを書く
・重複を取り除く

2つのルールはプログラミングのタスクへの命令を持つ:
・赤 − 動かない小さなテストを書く。最初はコンパイルもできないかもしれ
ない
・緑(青) − 必要なら(悪い)こともやって、手早くテストを通す
・リファクタ − テストが動くようにしながら、重複を取り除く

Red/Green/refactor はTDDのマントラ(呪文)です。

それでは、私(がこのコンセプトを考えたこと)の動機は? 何でプログラマは
自動テストを書くのか? ・・答えは勇気。

TDDはプログラミングの恐怖を管理する方法です。

・自信がない状態ではなく、できるだけ早く、確固とした状態から始める
・冷たい関係ではなく、よりはっきりと情報を共有する
・フィードバックを避けるのではなく、役にたつ、具体的なフィードバックを捜
す

XPとTDDは違う。
一週間設計し、コーディングをテスト駆動にしたら、それはTDDか? -> YES

34章には、KB流のリファクタリングの例が出ています。
38章には、フィボナッチの例が出ています。

では、お楽しみを!

yutaka