Index: [Article Count Order] [Thread]

Date:  Tue, 18 Mar 2003 12:01:24 +0900 (JST)
From:  UEHARA Junji <uehara@....jp>
Subject:  [XP-jp:04238] Re: 浮動小数点演算や幾何演算のテスト
To:  extremeprogramming-jp@....jp
Message-Id:  <20030318.120124.41382946.uehara@....jp>
In-Reply-To:  <20030315152136Q.hiranabe@....jp>
References:  <20030312224705.0482.TERADA@....jp>	<20030315152136Q.hiranabe@....jp>
X-Mail-Count: 04238

上原と申します。

From: Kenji Hiranabe <hiranabe@....jp>
Subject: [XP-jp:04227] Re: 浮動小数点演算や幾何演算のテスト
Date: Sat, 15 Mar 2003 15:21:36 +0900
> 私が感じているのは,多くの内部 assert は,メソッドを細かく分
> 割することで,外部表明に移行することが可能だいうことです.

外部表明(Unit Test)は試験を重ねていくことで、「動いたという実績」を
持ってして信頼性を上げていくという、結果主義的・実証主義的な考え方です。

対して、内部表明は、このプログラムはこういう形で整合性を保証しているの
だから正しい結果を出すはずだ、という理論主義的・トップダウン的な考え方
ですね。

そう考えると、前者は重要で実際的ではあるのでしょうが、根本的には移行す
る・移行しない、という問題ではなく、両者はもともと併存可能で併用すべき
でもある気がします。仮にある条件が両方でチェックできるとしても、それは
両方でチェックすべきであり、移行するものではないということです。

外部表明(UnitTest)は、あくまであるパラメータを与えたときにある正しい
結果を出した、という、点のチェックであり、列挙できたテストケースに対す
る保証でしかありません。

内部表明(表明/アサーション/*インバリアント)は原理的により包括的・
演繹的であり、面的にチェックができます(もちろん、「列挙できた表明」に
対する保証でしかありませんが)。また、想定せぬシステム異常についての最
初の兆候を最初期に検出すべく設置される安全センサでもあります。

# 両者が連動してくれるといいですね。
# アサーションから境界値テストケースを自動生成してくれたりとか。

--
§NTTS○FT 技術開発部情報流通技術センター(ITC) 上原 潤二 §
PGP Key fingerprint = B7 C0 CB 1F 1C 88 69 2A  25 36 8A EE 93 A3 61 72