Index: [Article Count Order] [Thread]

Date:  Tue, 18 Nov 2003 03:37:53 +0900
From:  Takuto Wada <t-wada@....jp>
Subject:  [XP-jp:04750] Re: mock object について
To:  extremeprogramming-jp@....jp
Message-Id:  <20031118033719.9460.T-WADA@....jp>
In-Reply-To:  <20031117192756.E8C4.MLMLML@....jp>
References:  <20031117192756.E8C4.MLMLML@....jp>
X-Mail-Count: 04750

こんばんは。和田です。

On Mon, 17 Nov 2003 20:18:09 +0900
shima tetuo <mlmlml@....jp> wrote:
> tetuoです。
> 
> 先日このメーリングリストでも少し話がありましたが、mock objectを利用して
> のUnitテストについて少し皆さんの意見を聞きたい事があります。
> 
<snip />
> 
> ここまででの疑問点:
> mock objectを使用する事により、この記事で言うと実データを操作することな
> く、メソッドの挙動の正確さを確認しているだけだと思いますが、実際に実行さ
> れるべき"SQL自体"の整合性はどのようにテストすべきなのでしょうか?
> 例:本当にエラーの発生しないSQLかどうかの確認等
> 簡単に言えば、mock objectを使用する事によって確認していない"結果"は、ど
> こで確認すべきなのかと言う事です。
> 
SQL自体のテストはMock Objectでテストできることの範囲を超えていると
思います。実際にデータベースに接続してみないと分からないことがたくさん
あって、その中の一つにSQLの挙動があるのだと思います。

[XP-jp:04711][XP-jp:04714]で石井さんが仰っているように、同じ結果になる
ようなSQLは何通りも書けますし、文字列としてSQLをテストしようとすると
「実装の詳細をテストするっていうアンチパターン」になってしまうのでは
ないでしょうか。

agileDatabasesのメーリングリスト
[http://groups.yahoo.com/group/agileDatabases/]
で同様の話題が出たときにも、受け入れテストや結合テストのような形で
SQLのテストをするという意見が出ていました。

詳細までは分かりませんが、その議論の中でFIT[http://fit.c2.com/]と
Fitnesse[http://www.fitnesse.org/]を使用して受け入れテストのような形で
SQLのテストをするということを言っていた人がいました。

「このようなパラメータを与えたらこういうような結果行が返ってくること」
などというような受け入れテストを書いてからSQLを書くことによって
テストファーストでプログラムとSQL文の開発(?)を行うことができるのでは
ないでしょうか。さらに受け入れテストを自動化しておくことによって、
デグレードを恐れることなくリファクタリングをしたり、SQL文を書き換えたり、
SQL文のパフォーマンスを上げたりすることなどが可能になると思います。


以上参考になれば幸いです。

-- 
Takuto Wada <t-wada@....jp>