13

コンポーネントが複数のボックスに分散している分散システムがあります。それらは、tcp またはマルチキャストを使用して相互に通信します。各コンポーネントは互いにメッセージを交換します - これらは基本的にシリアル化されるデータ構造です。

このようなシステムをテストするために、どのような統合テスト フレームワークがありますか? 私はルビーに精通しているので、ルビーベースのものが間違いなく役に立ちます。

4

4 に答える 4

5

やり方は色々あると思います。私はできる限り統合テストを避けようとしていますが、ある時点でもちろん必要です。これは私が何をするかの単なる提案です:

  1. 動作駆動型アプローチを使用して、テストするシナリオを明確に定義します。
  2. モジュールの出力を表すプロシージャに対して、単体テスト(統合なし) を実行します。
  3. 他のモジュールからの入力を使用することになっているプロシージャを単体テストしますが、モックを使用します。現在の別のモジュールのロジックをテストしています。
  4. スモーク テストを実行します。このタイプのテストは、モジュールが相互に通信できることを確認します (これは統合テストの一種です)。スモークテストで十分な統合テストだと思います。あなたがそれについて考えるならば:なぜモジュールは他のモジュールが何をするかを気にするのですか?

個人的には、テスト メソッドで 1 つの分散モジュールから別の分散モジュールにオブジェクトを呼び出すことは、良い方法ではないと思います。はい、それは統合テストになりますが、非常に簡単で信頼できると思います。

テストのピラミッドを常に念頭に置いてください。統合テストとエンド ツー エンド テストは非常に高価になる可能性があることを覚えておいてください。したがって、それらをいつ使用するかを賢く選択してください。

ここに画像の説明を入力

私はJavaの世界から来ました。これは、このトピックにも関連していると思われる追加情報であり、あなたの興味を引くかもしれません:

  • Data Transfer Objectパターンは興味深い
  • RMI vs EJB vs HTTP (リモート呼び出し技術の違いに関する興味深いコメント)
  • Java 開発者向けのBDDフレームワークを作成します (ビジネス ルールを完全に理解している場合は、テストがはるかに簡単になります)。

お役に立てば幸いです。

于 2013-02-03T15:39:31.410 に答える
1

Zopkio をチェックアウトできます: https://github.com/linkedin/Zopkio。分散システムの機能およびパフォーマンス テスト用のオープン ソース フレームワークです。

于 2015-03-15T23:40:01.547 に答える
0

クライアント サーバー、SAN などの分散テスト シナリオに適した機能/サービスを備えた STAF/STAX を使用できます。また、Luxoft の Twister という名前のフレームワークがもう 1 つあります。これまた秀逸。

于 2014-05-27T04:40:21.763 に答える