テスティングフレームワークって今どんなものがあるんでしょうか。
Microsoft純正のものってあったっけかな?
まぁとりあえずxUnitに絞って考えます。
XP(エクストリームプログラミング)という用語があります。
まぁ聞いた事がないという人は少ないと思うのですが、要はプログラミングの方法論を変えていこうっていう行動のことです。
私自身XP全体に関しては懐疑的です。
また一部の前衛派の主張には閉口する部分すらあります。
ただし、テストファーストという要素だけを取り出した場合においてはすばらしい考え方だと思います。 このサイトではテストファーストの方法なんかを述べるつもりはちっとも無いのでその辺はxUnitなり、テストファーストなんかをキーワードに探してきていただきたいのですが、こうやって賞賛する割には自分のプログラムでは利用していません。
なにが問題化というといろいろあるのですが、テストを記述する際に簡単なメソッドであれば割合すんなり飲み込めると思います。
数値検査
int a = add(2, 3);
aが5かどうか検査する。
わかりやすいですよね。
DB操作
bool b = com.execute(sql, con);
データが思った通りに変更されたかどうか調べる。
これを実行するためには事前処理で、全てのデータをクリアする。
テスト用のデータを設定する。
実行する。
検査する。
ロールバックする(ロールバックが外だし出来るのであれば)
といった作業が必要になります。
DB操作の場合やストアドプロシージャの場合全ては内部で完結して、どの値をどの値に設定したかや、IDENTITYにどのような値が設定されたかなどは感知しない場合も往々にしてあります。
DB操作への利用は出来なくは無いがかなり大変に成ります。
Web操作
Web操作の実現はかなり難しいです。
Web画面を自動で操作してくれるプログラム(VisualTestのようなもの)などもあるのですが、Javascriptの検査には使えてもサーバプログラムの検査にはつかえないという結論に至っています。
HTTP操作プログラムを作成することで、クライアントのリクエストを作成することが一番の解決策かとも思いますが、かなり難しい上メンテしていけるのかという問題があります。
#Webプログラミングをしている人でもHTTPレベルを明確に意識している人は少ないですし。
Windows画面操作
Windows画面の操作に至ってはxUnitでは出来ないと思います。
明確にやり方を紹介しているサイト教えてください。
結局テスティングフレームワークはVBでも後に導入したのですが、単体で動く範囲でなおかつ外部への接触の無いものにかぎって利用していました。
もちろんテストファーストを否定しているわけではないのですが、まだまだ不完全でこれまたJava+Webに特化した物なので、そのまま.Netにもってくるべきではないのかなと思う次第です。
皆さんの意見を拝聴したいです。
今公開しているものも徐々に検査するようにしておきます。明確なバグが見つかれば公開しますね。
#ちなみに公開していないライブラリもそこそこあるので、あまり期待しないほうがいいと思われ