「テスト」と「バリデーション」は,互いに酷似している。 単体テスト:開発者が,システムの入出力の振る舞いを検証すること。 バリデーション:システムが,ユーザの入力値を検証すること。 ユニットテストとバリデーションは本質的に同類の処理であり, その実装のために提供されるAPIも必然的に酷似するのである。*1 これら2つのコードは,工程やレイヤはまるっきり異なるが,まるで システムの同じ挙動を,2つの異なった角度・見地から見ている かのような,そっくりの類似性を持つことになる。 両者の違いは,下記のように要約される。 前者はシステム仕様を検証するためのテストケースであり,後者はシステム仕様そのものである。 検証操作を行なう主体と対象も異なる。(上図を参照) 本稿では,各種テストAPIや,各種バリデーションAPIのイディオムをさらっと概観する。 両者のAPIが確かに「共通の視点」を持っている事に
![「バリデーション」APIと「単体テスト」APIの類似性,およびそのスタイルが時代と共に洗練される過程の概観 - 主に言語とシステム開発に関して](https://cdn-ak-scissors.b.st-hatena.com/image/square/dc5964a42cd656f35d47f7a272407f92f14284d1/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fl%2Flanguage_and_engineering%2F20120319%2F20120319200923.png)