SSブログ

Writing code without tests ... [プログラマー現役続行]

Joshua Bloch氏の今日のつぶやき(Twitter)から・・・・
Writing code without tests is like doing surgery without washing hands.

テストなしでコードを書くのは、手を洗わないで手術するようなものだ。
Joshua Bloch
あえて言えば、「自動実行可能なテストなしでコードを書くのは、・・・」ですね。

自動実行可能なテストは、ソフトウェア業界では今では常識です。しかし、昔は、『リファクタリング』の著者マーチン・ファウラー氏や『クリーンコード』の著者ロバート・マーチン氏でさえも自動実行可能なテストは書いていませんでした。

(書籍『Coders at Work』の中で)Joshua Bloch氏は、もっとも苦労したデバッグは何かと聞かれて、Transarc社に勤務していた時に自分達が開発したシステムの不具合を調査するために様々なテストコードを書いて一週間ほど費やして調査したことだと述べています。しかし、その結果は、Solaris用に会社内で作成していたmutex実装のバグだったのです。その件に関して、「そのmutexの作者は十分なテストを書いていたと思うか」という質問されて、次のように回答しています。
Bloch: I think a good automated unit test of the mutex facility could have saved me from this particular agony, but keep in mind that this was in the early 90's. It never even occurred to me to blame the engineer involved for not writing good enough unit tests. Even today, writing unit tests for concurrency utilities is an art form.

mutex機構の優れた自動テストがあれば、そのような苦労をせずに済んだと思います。しかし、 それは90年代の初めだったことを踏まえてください。関係したエンジニアが十分に良い単体テストを書かなかったことを非難することさえ私には思い付かなかったのです。今日でさえ、並列ユーティリティのために単体テストを書くことは、芸術なのです
私も90年代初めは、自動化された単体テストというのは、全然頭に無かったです。
nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

Shou Takenaka

>自動実行可能なテストは、ソフトウェア業界では今では常識
だと思うんですが、少なくとも僕の周りでは未だ常識になっていないです。
手動で画面を操作して結果を確認するのが最小粒度のテストで、xUnitで自動テストを作る文化は根付いていません。

by Shou Takenaka (2009-09-30 01:07) 

Yoshiki

Shou Takenakaさん、

現実は、常識を知らない、あるいは、試そうともしない組織が多いとは思います。しかし、90年代は誰も考えなかったということを考慮すれば、今は「常識」という意味で使っています。

で、私の新しい職場でも根付いていません。テスト駆動開発を何とか根付かせようと、小さな改善から始めているところです。


by Yoshiki (2009-09-30 04:41) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0