2016-05-09 8 views
3

オンラインディスカッションやチュートリアルを見たことがないので、これは奇妙な質問に思えるかもしれません。だから、一般的にはこれをやっていないと思います。合格基準が特定のユーザインタラクションの結果としてウェブアプリケーションによって送信された特定のネットワーク要求である場合の自動受諾テスト最も単純な例として、ユーザーはボタンをクリックし、ページ上のJavaScriptコードはajaxリクエストを送信します。 QAチームは、リクエストが実際に送信されたことと、特定のパラメータがあることを確認したいと考えています。今、典型的なソリューションの1つは、ネットワーク要求を完全に無視して、そのような要求に起因するインタフェースの変更をチェックすることですが、要求がインタフェースの変更を直ちに生成しない場合はどうなりますか?一般的なアプローチの1つは、そのようなテストを単体テストまたは統合テストレベルに移行することですが、QAが実際のブラウザで動作するかどうかを確認する場合はどうでしょうか。発信HTTP要求に焦点を当てた受諾テスト

ブラウザでユーザーのやりとりを開始し、期待されるネットワーク要求が送信されたと主張する自動受諾テストを作成するオプションは何でしょうか?この種のテストにはどんなツールが必要でしょうか(私が理解する限り、Seleniumはこれを単独で行うことはできません)。そのような種類のテスト(それを実装したオープンソースプロジェクト、それを行う方法を説明したチュートリアルなど)の利用可能な例を知っていますか、あるいはおそらく詳細な例を提供できますか?

答えて

1

あなたのテストでフロントエンドアプリケーションからAjaxコールをモックアウトしたいと思うように聞こえます。 Sinon,Angular's httpBackend、またはjQuery Mockjax(ライブラリを維持しています)のようなライブラリでは、これはかなり簡単です。

blog post私は少し前に書きましたが、基本的な考え方は、コアJavaScript XMLHttpRequestインターフェイスに遭遇する前に(つまりネットワーク要求を送信する)Ajaxリクエストを傍受することです。 JSテストでは、インターセプタを検査して、ネットワーク要求が行われたかどうか、またそれに与えられた内容を確認できます。

技術スタック(JSフレームワーク、テストフレームワークなど)を知らなくても、これを設定する方法を正確に言うのは難しいですが、上で参照したツールを見てください。

+0

ありがとうございます。しかし、あなたがAJAX呼び出しを模擬して説明していることは、私が心に留めていたよりも少し低いレベルに聞こえる。あなたがAngularのhttpBackendを使用していれば(私が間違っていない限り)、リクエストは実際のバックエンドに到達することさえなく、モック内のすべてのバックエンドの応答を再実装する必要があります。いいえ、私が心に留めていたことは、クライアントが本物のバックエンドに夢中になったフル稼働のWebアプリケーションでしたが、クライアントから送信されたリクエストをチェックすることができました。 – azangru

+0

たとえば、ブラウザを制御するためにwebdriver.jsを使用し、ブラウザとバックエンド間のネットワークトラフィックを傍受して確認するnode-http-mitm-proxyを使用して、テストランナーにリクエストを報告します特定のパラメータを実際に送信しました。それは働いているようですが、扱いにくく壊れやすく見えるので、この種のテストにはより良いツールや戦略があるのだろうかと思っていました。 – azangru

+0

ええと...あなたの言っていることは分かりますが、なぜネットワークリクエストが実際に送信されたかテストしていますか?何らかの理由でネットワークハードウェアをテストする必要がありますか?そうでない場合は、mockingライブラリを使用してAjaxリクエストに送信されるパラメータをテストするだけです。これにより、バックエンドとのカップリングがなくなり、テストが大幅に高速化されます。はい、より多くのセットアップが必要ですが、最終的にはより安定しています。 – jakerella

関連する問題