「テスト」と「バリデーション」は,互いに酷似している。 単体テスト:開発者が,システムの入出力の振る舞いを検証すること。 バリデーション:システムが,ユーザの入力値を検証すること。 ユニットテストとバリデーションは本質的に同類の処理であり, その実装のために提供されるAPIも必然的に酷似するのである。*1 これら2つのコードは,工程やレイヤはまるっきり異なるが,まるで システムの同じ挙動を,2つの異なった角度・見地から見ている かのような,そっくりの類似性を持つことになる。 両者の違いは,下記のように要約される。 前者はシステム仕様を検証するためのテストケースであり,後者はシステム仕様そのものである。 検証操作を行なう主体と対象も異なる。(上図を参照) 本稿では,各種テストAPIや,各種バリデーションAPIのイディオムをさらっと概観する。 両者のAPIが確かに「共通の視点」を持っている事に