単体テスト(プロセスとフレームワークの設計のとっかかり)

なにげに、テストの中で一番曖昧模糊なのが「単体テスト」だと思っています。
単体の定義についてなのですが、「画面単位」「モジュール単位」「コンポーネント単位」の現場が過去ありました。もしかしたら、別の単位の「単体テスト」を経験された方もいるかも知れませんね。

まぁJavaでは当たり前のことかも知れませんけど><


Webに限らずですが、「画面単位」は正直ナンセンスだと思っています。構成する要素が多すぎるから、と以前ここで書きましたが、問題点・課題を切り分けていこうとした場合、操作画面からデータベースまでをひとくくりに「単体テスト」としてしまうと、テストケースが相当な量になってしまう、というのが、僕が一番この単位の採択を恐れる理由です。

モジュール単位、コンポーネント単位というのは、現場によって同じ意味で使われていたり、異なる意味で使われていたり、わりとはっきりしないのですが、モジュール=Method・Function、コンポーネント=幾つかのモジュールの集合、と僕は解釈しています。


という訳で、cfneoは「単体テストはMethod・Function単位で行うテスト」を単体テストと呼ぶ事にして、可能な限りcfneoの設計はこの単体テストを行うことを前提に進めていくことになります。とはいえ、好き勝手に実装されてしまう事への強制力を持たせる事がColdFusionでは難しいため、この粒度での単体テストができないコードにはなるべくしないように、という事ですね。

ちなみに、単体テストをこの粒度で行う事にきちんと意義が出るように、簡易DIのようなコンポーネントを用意しようとしています。


ここで、ちょっと深く考えてみて、「もしかして画面単位に単体テストを行う」とした方が良いのでは?と考えてみます。

業務システムの開発だと、「単体試験仕様書兼結果報告書」の類のドキュメントを求められるケースがありますが、これを上記の単体テストに沿って作成していくと結構な時間を取られるんではないか、という懸念です。そこについては「作らなくていーじゃん」という事で進めたいな、とw


という訳で、単体テストのやり方について考えた上で、上記のような妄想をcfneoに取り込みます。