
@t_wada 実証(正常に動く)を幾ら積み重ねても信頼度は上がらないことは同意して頂けると思いますが、「反証」は1つあればその動作は間違っていると証明できます。ゆえに、反証テストを多様に積み上げることで信頼性が上がっていくということが導かれます。
2010-02-22 23:05:24
@t_wada そして、TDDは反証テストも含むので信頼度が上がるのは間違いありません。ゆえに、テスト手法も含んでいると見るのが妥当でしょう。従って @yoshiori の「テスト手法ではない」という断言は間違いです。
2010-02-22 23:12:13
@babie 「信頼度が上がる」という実感を(私たち)プログラマは持っていますよね。で、問題は「テスト手法」という言葉ですね。曖昧で広いんですかね…
2010-02-22 23:17:02
@t_wada ただ、TDDで信頼度が上がるのは一定レベルまで、充分ではないと思います。システムを破壊してバグを見つけるテストなどは外部化せざるを得ません。
2010-02-22 23:13:26
@t_wada 例えば「このパラメーターを与えたらエラーになるだろう」というようなテストです。エラーが起こったら、テスト対象にフィードバックされ、信頼度が上がるというわけです。
2010-02-22 23:15:37
@t_wada あまり語義論にはつっこみたくないんですが、「テスト手法」は「テストをするやり方」ぐらいの捉え方でいいと思います。この捉え方でしたら、TDDは「テスト手法」を含みます。
2010-02-22 23:21:47
@t_wada @yoshiori さんのように、TDDは「テスト手法ではない」と言いたいなら、BDDという言葉を使うべきだと私は思います。
2010-02-22 23:23:16
@babie なるほど、結局みんな理解は近くて、表現の違いなんですね。「TDDはテスト手法でもあり、(略) テスト手法としては不十分だ」の「不十分だ」をもって、テスト手法ではない、と言うか、テスト手法でもある、と言うか。皆不十分であることはわかっていると思うんです。
2010-02-22 23:21:49
@t_wada これらのことは、私が独自に考えぬいたわけではなくて、私が最近ハマっている、カール・ポパーという現代思想家の科学哲学から引いてきたものです。「反証主義」でググってみると、そのエッセンスは読み取れると思います.
2010-02-22 23:34:46
@babie 懐かしいです。大学のときに科学哲学をやったので、ポパーとかファイヤアーベントも読みました。(復習しないと怪しいですが…)
2010-02-22 23:36:55
2年くらい昔のことだけど,TDDワークショップで @moro が僕とペアプロ中に, Coin.new(50, 2) の戻り値 Coin.new(100,1) になって欲しいんですよねって,ささっとコードを書いた時に, TDD について衝撃を受けた.
2010-02-22 23:27:35
@babie ちょっと話はそれるかもですが、「テスト手法ではない」という言説の素をたどると『テスト駆動開発入門』の p199 にたどりつきます。
2010-02-22 23:33:42
@babie "TDD の皮肉の1つは、 TDD がテスト技法ではない(カニンガムの考案)ことである。TDD は分析手法および設計手法であり、実際には開発のすべてのアクティビティを構造化するための技法である" 『テスト駆動開発入門』p199 というところです。
2010-02-22 23:35:44
@t_wada 私は『テスト駆動開発入門』 p. iv の「コードの欠陥密度を劇的に低下させ」という文から、反証主義的には、信頼度を上げる「テスト手法」とみても間違いないと思います。
2010-02-22 23:45:16
@babie なるほど。 TDD はテストを設計する/データを選ぶ/書く段階でテスト技法を内部に含むのはそのとおりです。で、不完全であれ含むのだから、テスト技法ではない、という言説は正確ではないということですね。(ここまで書いて @babie さんのまとめとほぼ同じことに気づく)
2010-02-22 23:42:50