2011-12-08 3 views
2

データベースのレコードの整合性をテストするテストシステムを構築しています。データベースは絶えず成長しています。テストインフラストラクチャにどのようなデザインパターンを使用する必要がありますか

私が格納している主要な種類のレコードごとに、レコードを繰り返し処理したいのですが各レコードで一連のテストを実行します。その一連のテストは、ビジネスの進展とともに、問題の原因を特定して解決したと確信しているため、絶えず成長/変化していきます。私は、それぞれのテストを自分のファイルに入れて、追跡しやすいようにしたいと思います。

私はこれを自由にデザインしていますが、私は好きですが - どのようなデザインパターンを見ますか?

注:私がテストしているシステムはPHPです。私はPHPに対して非常に力があります。それは質問された問題については問題ではありませんが、とにかくそれを述べます。

この問題に役立つソフトウェアが存在する場合は、そのことについても聞いています。

答えて

1

拡張可能なテストではビジターパターンが不可欠です。テストフレームワーク内に収まるテストハーネスを作成し、出力などのことを心配する必要はありません。

私はphpUnitを見てみることをお勧めします。 PHPのテスト用に書かれていますが、データベースをテストするためにも使用できます。

http://www.phpunit.de/manual/current/en/

+0

訪問者のパターンがここにどのように適用されるかわかりません。何を構想していますか? – Laizer

+0

基本的に、phpUnitはリフレクションを使って訪問者のステロイド効果を少し作ります。基本クラス(テンプレートメソッドがたくさんあります)を拡張するクラスを作成します。次に、testSomeFunctionalityThatYouWantToTest、またはtestSomeOtherFunctionalityなどのメソッドを作成します。phpUnitは、オブジェクトのtest *という名前のすべてのメソッドを呼び出します。これらのメソッドでは、「この関数はこのデータを返す必要があります」などのテストアサーションを行います。 「このテーブルにはこの他のテーブルのすべての行にキーが必要です」などのアサーションを作成することもできます。 –

0

データに変化がない場合さて、あなたは変更されている行を通知するためのオブザーバーのバリデータを適用することができ、データマッパーはまた、マッピングテーブルのためにいいだろう。

armazernar行を言語のオブジェクトとして使用したい場合は、非常に簡単でマージメソッドを使用して、挿入/削除/更新をクラス自体に実装し、その使用をより実用的かつ効率的にする話して、それを見てください。

関連する問題