平鍋です.
> 外部表明(Unit Test)は試験を重ねていくことで、「動いたという実績」を
> 持ってして信頼性を上げていくという、結果主義的・実証主義的な考え方です。
> 対して、内部表明は、このプログラムはこういう形で整合性を保証しているの
> だから正しい結果を出すはずだ、という理論主義的・トップダウン的な考え方
> ですね。
なるほど!面白い分析ですね.
> 内部表明(表明/アサーション/*インバリアント)は原理的により包括的・
> 演繹的であり、面的にチェックができます(もちろん、「列挙できた表明」に
> 対する保証でしかありませんが)。また、想定せぬシステム異常についての最
> 初の兆候を最初期に検出すべく設置される安全センサでもあります。
ふむふむ.演繹的と帰納的(実証的)という風にも言えますが,集合
論の外延(extension)と内包(intension)に似ている感触です.
すなわち,クラスの発見の場面でも,
外延:
オブジェクトの集合としてクラスを定義する.(帰納的)
内包:
クラスを定義してオブジェクトを規定する.(演繹的)
と言えますが,クラス(メソッド)の定義に於いても
外延:
外部表明: 通るべきテストの集合としてクラスを定義する.(帰納的)
内包:
内部表明: クラスのあるべき振るまいを宣言して定義する.(演繹的)
と言えないでしょうか....(う〜ん,トンデモ系に行きそうな勢い)
> # 両者が連動してくれるといいですね。
> # アサーションから境界値テストケースを自動生成してくれたりとか。
もしかして,iContract あたりが昨今の xUnit 流行りからすでに
考えている気がしてきました.
以上