2011-10-27 18 views
1

非同期コールバックが関与しているときに統合テストを自動化する最良の方法は何ですか?コールバックによる統合テスト

たとえば、私はモジュールAを持っており、そのモジュールで何かを呼び出すとすぐにテストの一部として検証できる応答が返されます。しかし、その即時の応答に加えて、テストのために評価する必要のある追加情報を提供する一定の時間(例えば5分)以内にコールバックが発生するはずです。

本質的には、レスポンスを直ちにテストしてから、ある一定の時間内にコールバックを期待してテストするように指示し、それを検証します。タイムフレームにコールバックが発生しない場合、またはコールバックが予期しない応答を返す場合、テストは失敗します。

このようなテストを実行するために使用できる、継続的な統合ツールまたはその他のツールはありますか?

答えて

0

私はジェンキンスを使用してソリューションを持っていると思う:

  • 最終的にいくつかの非同期コールバックになります呼び出しを行うテストの全体の束を実行します。
  • テストが完了した後、N秒(処理に要する最大時間)だけ遅延した別のコールバックジョブのビルドを起動します。
  • コールバックはどこかのサーバーで発生し、遅れた 'コールバック'ジョブによって再検討のためログに記録されます。
  • コールバックジョブが実行され、ログに記録されたコールバックが検証されます。ログに、ジョブが期待するコールバックへの参照がない場合は、この場合に失敗するテストを書き込むことができます。

それは実行時にチェックするためにログインする何のコールバックを知る必要があり、これは最も可能性の高い疲れの

種類(すなわち、通常のビルド90のコールバックログを確認してください)、コールバックのパラメータ化ジョブの作成が含まれます現時点では理にかなっていないかもしれませんが、必要であれば明確にすることができれば幸いです。

0

可能であれば、コールバックの時刻を設定できるようにコールバックを変更します。テストでは、それを1秒にしてモックコールバックを渡して、コールバックが正しい時刻に呼び出されたことを自動的に確認します。

+0

申し訳ありませんが、これをより明確にしてください。 「コールバック」はHTTPリクエストであり、オブジェクトまたはメソッドの呼び出しではありません。さらに、処理が含まれるため、コールバックが発生するまでにかかる時間は決して決めることはできませんが、特定の時間枠(5分未満)内に発生すると想定できます。 –