牛尾さん、懸田さん、今日は。
平鍋さん、紹介ありがとうございます。
筆者に成り代わり、回答します。
At 午後 04:53 01/03/12 +0900, Takeshi Kakeda wrote:
snip.
まず、前提として(アンケートにも書きましたが)
この事例は、XP を実践することを目的としている訳ではなく、
短期開発で、プログラマーの生産性を最大にすることが必要となり、
XP を念頭に置きつつ、開発し、あとで XP 的に振り返ってみた、ということです。
>> ところで、上記の資料ですが、どうやらUnitTestはしてないみたい
>> ですね。UnitTestはXPの肝と思っていたので、かなり意外です。
>> #計画ゲームやオンサイト顧客までできてるのに、、。
>私も拝見しました。非常に興味深い内容でしたが、牛尾さんと同様にUnitTest
>が実現できていないという部分が気になりました。
単体テストはしていますが、(extreme な)Unit Test はしていない、ということです。
つまり、
・ 単体テストに、testing framework を利用していない。
・ 単体テストを、インテグレーション時に自動的に行なうようなことをしていない。
・ 単体テストを、コーディングより先にしていない。
ということです。
なぜか、というと、端的に言えば、アプリケーション・ロジックが単純である。
ということです。
単純なアプリケーション・ロジックである場合、コードの外側に、intention を
書く必要があると考えていません。
(オブジェクト指向言語なのですから。)
実際、JavaDoc とシナリオで十分でした。
では、例外的なこと(失敗すべきテスト)はどうなるかですが、
・J2EE 環境で開発していて、失敗すべきテストは、
基本的に環境に任せればいい。
・システム的、言語的には把握できない"失敗"は、
function test で書けばいい。
と考えました。
>UnitTestが徹底されていないが、機能テストを徹底してフィードバックする
>ということを行ったと記述してありますが、品質の上で可なのでしょうか?
で、十分な品質を持ったシステムとして、稼動しています。
(そうでない事例を、ユーザ名・システム名を明示して紹介できません(^^))
単体テストは、各自に任せましたが、一例は、
シェル+peanuts+Java
で、テスト環境を築いています。
>またUnitTestなしのRefactoringも非常に辛い気がします。このあたりをどのよう
>に回避していたのかも気になります。
まず、test first について。
難しいアプリケーションであれば、やっています。
というか、オブジェクト指向言語で書く場合、そうしないと書けない、
というのが実感です。
しかし今回のアプリケーションは単純なので、
Refactoring するというほどのプログラムではありません。
"機能を変えずに、実装を替える"という余地がほとんど無いのです。
ほんとにナイーブなプログラマーから見れば、自由度はあるのかも
知れませんが、ある程度の域に達していれば、一つの解しかない、
といような類です。
ので、辛くありませんでした。
>
>あと文中には触れられていませんが、メタファーの実践について詳しく話を
>伺いたいですね。
白板に、クラス図とシーケンス図を書いて、共有した、というのが
実践の全てのようです。
"詳しく"とは、どのようなストーリを期待していますか?
>
>私がお客さんにXP(というかJUnitによるTesting)を紹介した時に「短かい納期でテス
>ト書い
>ている時間があるのか?」と反論されたことがありますが、この記事のプロジェ
>クトも同様の理由でUnitTestをはしょったのでしょうか...
このお客さんの"時間があるのか"という質問の意図が不明ですね。
納期が、短かろうが、長かろうが、
書く必要のあるテストは書き、必要の無いテストは書かない。
仕事なのですから。
今回のシステムの特徴と、必要な品質を確保するための手段を考えた場合、
Unit Test が必要と考えなかった、ということです。
XP を前提にしても、
そもそも、プラクティスにあるのは、Testing であって、Unit Tests では
ありません。Unit test と Function(Acceptance) test の分業?は、
ケースバイケースなのではないでしょうか。
確かに、自動的なテストは役に立ちます。
しかし、残念ながら、
以前、GUI のテストで話題になったように、十分に実用的な web ベースの
testing framework が無いのが、現状(少なくとも半年前には)でしょう。
如何ですか?回答になっていますでしょうか?
はだ