最近はテスト駆動がマイトレンドです。
これは、前回参加したプロジェクトで苦い経験をしたから。
前回のプロジェクトでは、以下のようなコードを変更することになりました。
- 明確で、明瞭な仕様書/設計書が存在しない(!)
- 非常に多くの大域変数を操作しており、「誰が」「いつ」「どこで」変更しているかを完璧に
把握することが難しい
- 時間的制約から、上記内容を厳密に調査する時間もない
- プロジェクトメンバが流動的
- 単体テストをリグレッションできないか、しづらい構造
要約すると、「変更しづらいコード」になっていました。
私がソフトウェアエンジニアとして未熟なのでしょうけど、当時のプロジェクトの作業の中で
担当外の機能にヘルプに入った際、何度かデグレードを発生させてしまいました。
これはリグレッション可能な単体テストがあれば防げたと思っています。
そんなことも手伝って、テスト駆動という考え方にとても共感しているのです。
組込みでも絶対にやるべきだと思うのですが、社内では「テスト駆動」「テストファースト」で
反応してくれる人は今のところいませんでした。
(悲しい・・・)
そのため、まずは自分から、とやってみているところです。
さてさて、組込みなお話はこの辺にして、今回はそのテスト駆動をVSで機能として
組み込んでいるというので、久々にVS使ってみました。
その感想になります。ですのであまり内容はないですね(^^;
日本語だとちょっと文意が伝わりにくいかもしれませんので(少なくとも私は意味がわかりづらかった)、
英語等が読める方は英語の方がいいと思います。
で、感想なのですが、、、
なんと言ってもこれに尽きます。
遅い、遅すぎる。
「じゃあIDEでやんなよバーカ」って言われそうですが、そうではないと思います。
これではテスト駆動のサイクルを促進するどころか阻害しています。
あんなに時間掛かってたらテストを何度も実行したくなくなります。
(オライリー/テスト駆動開発による組み込みプログラミングなどを参照)
テスト駆動の基本的な精神が反映されてないのでは?と思ってしまいます。
ビルドのレポートを見ると、テストの実行時間は1msで終わってるんです。
しかし、全てのビルドプロセスが終了するまでに秒単位で時間が掛かっている。
それも高々数個のテストメソッドの実行で。
つまり、Visual Studioの内部処理の問題なのだと推測されます。
- [GOOD]Red→Green→Refactoringが可視化できる
テストエクスプローラという機能を使うことで、テスト結果がどうだったのかが視覚的に
わかりやすく表現されます。
これにより、テスト駆動でも触れられているような、Red→Greenがわかりやすくなっています。
また、リファクタリング後のテストもGreenであることを確認できるので、こちらも問題ないです。
xUnit系のGUIみたいなものでしょうか?
※ちなみにxUnitを使ったことはない
概ねこんなところでしょうか。
ちょっと触ってみただけなので、まだ依存関係を断ち切る方法の実装とかは見られていませんが、
ビルドを除いて基本的な部分は大丈夫そうです。
(ここが一番ネックだったりしますが。。。)
ご興味がお有りの方は使ってみてはいかがでしょうか?
最終更新:2014年03月09日 21:55