3

統合テストを自動化する最善の方法を検討しています(つまり、完全にアプリケーション内の完全なユースケースを意味します)

質問

「なぜ」と「何」の側面を非常によくカバーします。

データベースを使用したC++アプリの自動統合テストという質問は、xUnitフレームワークが統合テストを作成および実行するための優れた方法であることを意味します。xUnitはそのタスクに本当に適していますか?知っておくべき一般的な落とし穴はありますか?従うべき良いアプローチ?

より良いアプローチはありますか(おそらくHP /以前のMercuryツールスイートを購入する以外に)?

このプロジェクトの私の特定の環境はJava/SpringSource / Hibernateですが、.Netプラットフォームの提案にも興味があります。

4

3 に答える 3

3

データベースを使用した C++ アプリの自動統合テストという質問は、xUnit フレームワークが統合テストを作成および実行するための優れた方法であることを意味します。xUnit はそのタスクに本当に適していますか? 注意すべき一般的な落とし穴はありますか? 従うべき良いアプローチですか?

JUnit と TestNG は、最初は単体テスト フレームワークですが、統合テストにも使用できます。私にとっては、答えはイエスです。これらは統合テストに適しています。たとえば、サービスのテスト --> ドメイン > 永続性 --> データベース層 (統合テストについては後で説明します)。データベースを含む統合テストを行う際に注意が必要なことの 1 つは、データです。DbUnitなどのツールが役立ち、通常は、各テストを実行する (およびデータベース コンテンツに対してアサートを実行する) 前に、データベースを既知の状態にするために使用されます。もう 1 つの方法は、トランザクションでテストを実行し、テストの最後にトランザクションをロールバックすることです。Spring ではそれを非常に簡単に行うことができます図書館。いずれにせよ、ベストプラクティスは相互依存のテストをできるだけ避けることです (あなたが提供したリンクに記載されているように)。それらは単なる悪夢です。

より良いアプローチはありますか (HP / 以前の Mercury ツール スイートを購入する可能性を除いて)?

私の知る限り、そのようなツールはエンドツーエンドのテスト ツール、つまり機能テスト ツールです。したがって、統合テスト(私にとっては複数のコンポーネントを一緒にテストすることを意味します)が実際に機能テストを意味する場合(これは完全なユースケースの私の理解です)、次のようなものを見ることをお勧めします:

太字のものに特に注意してください (すべて実際には優れたツールですが、太字のものは優れた自動化機能を提供していると確信しています)。また、HTTP と SOAP は標準であるため (これはもちろん Swing UI テスト ツールには当てはまりません)、これらのツールは実際には Java 固有のものではありません (たとえテスト自体が SoapUI 用に Java/Groovy で記述されていたとしても)。ところで、Selenium は多くのプログラミング言語をサポートしています)。

于 2009-11-04T20:48:41.293 に答える
1

JUnit は他のスレッドで例外を検出しないため、マルチスレッドは問題になる可能性があります。それについては、Java Puzzlers がいくつかあります。また、統計テストを行う独自の方法を発明する必要があり、assert メソッドは少し大雑把になる可能性があります。また、JUnit のセマンティクスが少し不明確だと思います (たとえば、JUnit はテスト メソッドごとに 1 つの個別のインスタンスを使用します)。これらの理由から、私は TestNG に切り替えました。これは、私の意見では、より優れた設計のフレームワークです。JUnit が極端なプログラミングを使用して設計されたという事実が時々示されます。

于 2009-11-04T20:07:48.927 に答える