Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
小泉政権は空前の大勝利を収めたらしい。 だが、すぐに明日から何もかもパラダイスに変わると期待しない方が良いでしょう。 物事は日々の一歩ずつの改善の積み重ねによってのみ良くなっていくのですから。
郵政を民営化しなければならないのは、一歩一歩の改善ができずに、 溜まりに溜まった付けを支払うようなものであります。 その上、ドサクサ紛れにしかできないのは、日本の政治が、政治体制がいかに長期的視野を持たずに、 やってきた証拠です。そしてそれはソフトウェア開発にも言えることではないでしょうか?
今回も、私がXP実践の中でのもう一つの体験について書かせて頂いて、 ユニットテストの真のパワー、意義に迫りたいと思います。
1.Nullと比較したら、何が返ってくる??
- Call AssertEquals( "Nullと比較したら、何が帰ってくる??", Null, Empty = Null )
- Call AssertEquals( "テスト趣旨", 期待値, テスト )
- これはASPunitのテストコードです。
- VBScriptでは、なんとNullと比較すると、Nullが返ってくるのです。 ある時、コードがどうしても正常に動かないので、このテストコードを書いてみました。 「なんてやねん、VBScript!」と突っ込みを入れそうになりました。 まさかNullが返ってくるなんて。。。
- これを知らないと、思わぬところで、思わぬバグが発生しそうですよね。 しかし、こんなことはヘルプファイルのどこにも書かれていません。 だが、ユニットテストを書いて動かせば、ものの2,3分で判明することです。 自分の手で知りたいことを知ることができるのです。
2.15桁以上の整数の文字列はどんな形??
- $this->assertEquals( "1E+14", ( string )100000000000000, "15桁以上の整数の文字列はどんな形??" );
- $this->assertEquals( 期待値, テスト, "テスト趣旨" );
- これはPhpUnitのテストコードです。
- phpで、ログインID自動生成のコードを作成するとき、 果たして、何桁までの整数が文字列として表せるのかと疑問に思い、調べてみました。 なんと、15桁以上の整数は実数形式で表現されてしまうのです。 もしこのまま使用していたら、15桁以上になったとき、 ログインIDは同じものになってしまい、バッティングして、意味を持たなくなるのです。
- 15桁以上になるには、相当な時間がかかります。 テストすることが難しい。 また、実際の結合テスト、総合テストでもそこまではしないと思います。 しかし、これはまさに、時限爆弾であります。 まさしく、ユニットテスト様々です。
3.既存のログインコードを改修
- あるとき、ログインIDを取得した部分をユニットテストつきで新規に作成しました。 それをログインコードに適用して、 さらに、その既存のログインコードを改修したのです。 既存の処理をも網羅して、ユニットテストをしました。 昔であれば、改修することは思い切ったことで、 相当な自信がなければ、既存コードに触るなという常識を私は守ってきたと思います。 しかし、このときは、ユニットテストがあったから、自信を持って改修することができました。
- この改修に際して、実は私は、全パターンを網羅できなかった場合を心配していました。 そこを、ますくは、ユニットテストがあるから、問題が起こった場合、 私たちには、ユニットテストがあるのだから、 またテストを追加して、徐々に良くしていけばいいよと言ってくれました。
今までとは違い、ユニットテストという動く確証を私たちは持てるようになり、 開発の可能性を拡がってきたと思います。
P.S.ますくは、1,2番のテストをprimitive testと言っています。 私はこのテストが大好きです。ヘルプファイルの絵空事で騙されたと悔しがることはないです。 言語の癖までも垣間見ることができるのです。 自分の幸せを自分でつかむことができるのです。
There is no comment.