3

XMPPおよびRailsアプリケーションとともに多くのJavaScriptを使用する複雑なWebアプリケーションがあります。システム全体をエンドツーエンドでテストする必要があるところまで来ています。さまざまなタスクをエラーなしで完了できるようにする必要があります。そのようなタスクの1つは、システム上の別のパーティと1対1のチャットセッションをネゴシエートすることです。私たちのアプリケーションのすべてのタスクはユーザー間の相互作用を伴うため、Webアプリケーションを介して通信する2つのブラウザーを同時に駆動することにより、これをシミュレートできるようにしたいと考えています。私は、セレンまたはワティルとそれらの待機機能を使用して、特定のことが起こるのを待ってから先に進むことを考えていました。例えば:

  1. 当サイトで2つのブラウザを開きます
  2. ブラウザ1は質問が公開されるのを待ちます
  3. ブラウザ2は質問を公開し、オファーが受信されるのを待ちます
  4. ブラウザ1は質問を確認し、オファーを送信して、それが受け入れられるのを待ちます
  5. ブラウザ2はオファーを確認して受け入れ、チャットセッションの開始を待ちます
  6. 等...

この種のテストは、作成と保守がかなり難しいものになっていることがわかります。ページの特定の要素に依存するため、これらを変更する場合は、テストを変更する必要があります。また、アプリケーションのフローを少しでも変更する場合は、スーツをかなり大幅に変更する必要があります。

だから私の質問は、誰かがこの種のテストをしたことがありますか?もしそうなら、どのツールを使用することを提案しますか、そしてテストを書くためのヒントはありますか?

ヘッドレスではなく実際のブラウザを駆動する必要があり、これをCIと統合できる必要があります。現在、CIセットアップの一部としてSauceLabsとseleniumを使用しています。

4

1 に答える 1

2

正直なところ、これは「自動化すべきでないもの」のカテゴリに属しているように聞こえます。

予見可能な問題:

  • ブラウザの 1 つが適切にスピンアップせず、他のブラウザがタイムアウトになるまでデッドロック状態になる可能性があります

  • なんらかの理由で、Web サーバーが単に遅いと判断したためにテストが完全に完了しなかった場合、タイムアウトの状況まで別のデッドロックが発生します。

  • テストを更新する必要があることが発生した場合、両方のブラウザー インスタンスが動作することを確認する必要があるため、保守性は非常に困難です。

もっと問題があると確信していますが、今は思いつきません。

システムに新しい質問を追加できるようにするためのテストを作成します。テストデータベースには、いつでも読み取って回答できる少なくとも1つのテストがあります(おそらく、ロールバックできるトランザクション内で)。

チャット システムでは、これを手動でテストします。ここで、アプリのドッグフーディングが真価を発揮します。社内の全員 (開発者から運用担当者まで) にチャットをテストしてもらいます。あなたはすでに何らかの IM を行っているはずだからです。

于 2010-09-21T06:18:53.363 に答える