2013-03-19 7 views
5

異なるコンポーネントで作られたかなり複雑なサービス指向アーキテクチャーを想像してみてください。コンポーネントはさまざまな言語(Java、PHP、Ruby)で書かれ、さまざまな方法(UI、REST API、場合によってはいくつかのDBテーブルの共有など)で互いに通信します。多言語統合テストフレームワーク

エンドツーエンドのテストのために統合テストフレームワークを設計しようとしています。 単一のコンポーネントのユニットテスト/統合テストはすでに完了していますが、展開されたシステムを(実際の環境で)完全にテストしてエンドツーエンドの機能を確実に構築したいと考えています。個々のコンポーネント)が正しく提供され、アーキテクチャも正しく構成されていることを確認します。

私が直面している最初の問題は、私たちのUIのほとんどがPHPで書かれており、UIの統合テストにはキュウリと2つのプラグインがすでに書かれているということです。 私が書いているテストフレームワーク(Javaで)は、これらの機能テストを起動し、その後、関連コンポーネントの動作が期待どおりであることを確認する必要があります。

明らかに、私はSeleniumのようなJavaフレンドリーなコンポーネントを使ってUIテストを書き直すことができましたが、努力を複製することは意味がありません。

もう一つの解決策は、Java内でexec()を呼び出して既存のテストを実行し、それらが戻るまで待ちます。

Java内に既存のPHPコードを埋め込むことは、プロジェクトの作成方法を考えると実行可能な解決策ではありません。

説明された解決策のどれも私に納得できるものではありません。理想的には、異なる言語で書かれた同じテストスイートテスト内でプラグインできる多言語(およびマルチテクノロジ)統合フレームワークをいくつか用意しておくことは理想的です。

誰かがこの方向に進むツールやフレームワークを知っていますか?もしそうでなければ、この種の問題に対する良いアプローチは何でしょうか?

答えて

0

Jmeterのようなもので完全なスタックテストを検討しましたか?あなたは完全に展開ソフトウェア

  • に対して実行構築されたテストは、ユーザー
  • を作成することができます

    は成功したがscreeenが

  • を示している作成するユーザーが削除
  • 予想通り、ユーザがデータベース内にあることを確認することを確認しますユーザー
  • ユーザーを削除しました

あなたは、あなたのUI、ビジネスロジック、およびデータストアを一度にテストします。負荷テストにも使用できます。これは助けるが、多分https://github.com/nablex/glueを見ていることができれば

Jmeter

+0

おかげで、しかし、JMeterのでしょうを採用既存のテストを一から書き直すことを意味します。 また、JMeterはJavascriptを解釈しないので、UIテストに大きな制限があります。 – kappolo

+0

私はちょっと混乱しています。既存のユニットテストを呼び出すテストスイートフレームワークを構築したいと思いますか?これはあなたの既存のテストの情報を超えていますか? – mconlin

+0

申し訳ありませんが私は明確でない場合。完全な統合テスト(つまり、私のシステムのすべてのコンポーネントを統合する)を作成したいので、既存の統合テストの一部を再利用し、それらを新しいテストと結合/統合したいと考えています。 – kappolo

1

わかりません。これは私が(統合)テストに焦点を当てて開発したスクリプト言語です。

https://github.com/nablex/glue-seleneseを接続すると、すぐにセレンスクリプトをサポートし、非常に拡張可能です。彼らは唯一のために有効になっているので、

私は現在、キツネのプロで書かれたレガシースクリプトを実行するにはいくつかのカスタム拡張子を持つ顧客にそれを使用していますし、レガシーモード(私は実際に... 震えをキツネプロメソッドを再実装します)従来のスクリプトではなく、新しいものです。また、カスタムSOAPベースのWebサービスをプラグインしました。その1つはリモートシステム上でデータベース呼び出しを行うために使用でき、統合レベルのテストのための幅広いツールを提供します。

スクリプト言語は完全に機能していますが、私はデフォルトで利用可能であり、まだ統合テストツールとして位置づけようとしているメソッドの要約をまだ洗い出しています。それが役立つかどうか、あるいはそれがあなたのニーズを満たしていない理由、常にフィードバックに満足していることを教えてください! :)

PS:(!ブレークポイントをサポートして)アイデアのための「メイン」クラスは、それが働いてCLIクライアントが含まれているとして、それを起動して実行するために開始するには良い場所です