テスト・ファースト開発とか、テストが書けない開発者は使えないと言われて久しい。私もテストの重要性は最近、痛感している。ソフトウェアの規模が増大すればするほど、確認すべき機能も増えるので、テストの規模も当然、増大する。
という背景は分かるんだけど、じゃあ、テストってどうやって書けばいいの、とかテストって、どうやって設計すればいいのというところにきちんと言及したところは見かけなかったので、よくわからない。
ソフトウェアテスト(software test)とは、コンピュータのプログラムを実行し、正しく動作するかどうか確認する作業のことである。ソフトウェアテストは、プログラム中の欠陥(バグ)をできる限り多く発見することを目標として行われる。ソフトウェアテストに成功するとは、欠陥を発見することである。
私の定義では、ソフトウェアテストのゴール=ある限定された入力に対して当該機能が仕様通りに動作することの保証、であって、欠陥を発見することがゴールでは断じてない。どうしたんだWikipedia。
で、じゃあ、ソフトウェアテスト、自動化するとしたら、既存のはどんなのがあるだろう、
- xUnit
- 沢山ある。
- cronと組み合わせてかなりのところまで実際できるとは思うのだけれど、あまり表に出ていない。
- 分散システムでのテスト
- xUnitは基本的にシングルプロセスでのテストなので時間がかかったりいろいろ困る
- TUT
- 分散システムのテストを自動化する - 古橋貞之の日記
こんくらい?逆に言うと、この辺り以外におっと思ったのは、テストの品質可視化というか、見える化。グラフにしやすいmetrics。
あと、大事なのは品質の指標(metrics)をきちんと提示できるようにすること。それがリアルタイムでできたらええなぁ、と思う。(品質を可視化する“テストフレームワーク”、pdf注意)