2012-04-24 8 views
1

LiveServerTestCaseを使用して、Django 1.4でSereniumテストを1人のユーザーに対して順番に実行することはできますが、私は並列ユーザーテストをエミュレートしたいと思います。私のアプリは主に中程度/低トラフィックのWebサイトや内部Webアプリケーションなので、実際の負荷テストが必要ないと思うので、JMeterのような余計なツールを避けることをお勧めします。djangoとselenium/gridで並列マルチユーザユーザビリティテストをエミュレートする方法はありますか?

私はSelenium Gridの設定を始めましたが、私のテストを独立させて、複数のユーザーで複数のテストを実行する方法はわかりません。私はテストケースが同じDB上の異なるユーザーに対して同時に実行されるべきだと仮定していますが、各テストが新しいDBを作成して作成するので、その可能性はわかりません。

そして、私はBrowserMobのようなサービスにサインアップしたくありません。

答えて

0

私はカップルのさまざまな理由でとにかくJMeterのようなツールを使用することをお勧めします:あなたは、複数のユーザーが同時にサービスをヒットしている何のバグが存在しないことをテストしたい場合は、」勝った

  1. 2つ以上の自動セレンテストを同時に実行することが保証されます。これは、要求が実際にサーバーに送信される前に何らかのアクションが実行されるまでにかなりの時間がかかる可能性があるからです。 jmeterのようなツールを使用すると、要求間で少しでも遅れずに複数の要求を同時に送信できるツールを使用すると、これらの種類のバグにぶつかる可能性が非常に高くなります。また、Seleniumのできるだけ多くのスレッドをjmeterで簡単に実行することもできます。
  2. 実際にサイトのパフォーマンスをテストしたい場合や、通常の負荷よりも大きくてもサイトの動作をテストする場合は、jmeterなどのツールを使用すると簡単にテストできます。それと

は、しかし、私はそこに必要とされるものについてのガイダンスを提供するために、セレングリッドに十分慣れていないよ、あなたは本当にこのためにセレンを使用したい場合は、私はそれがSelenium2/webdriverを持つ非常に単純であることを知っている、と述べました。

+0

私はSelenium2/Webdriverを使用していますが、同じデータベース上の複数のユーザーに使用する方法を理解できません。それがSelenium Gridの目的だと思っていましたが、それも分かりません。これが簡単な場合は、サンプルコードまたはチュートリアル(esp)を知っていますか? Django 1.4では、新しいSelenium/LiveServerTestCaseの統合を活用したいと考えています。 – Tony

+0

私はSelenium Gridを使用していませんが、nunitや何か他のものを使って、並行して動作するSelenium/Webdriverの複数のプロセスを起動することができます。 –

+0

Fyi、私はかなり信頼できる同時リクエストを同時に得ることができるようです。私は10回のセレンテストでこれを試して、ブラウザーでユーザーの動作が重なって見えるようにしました。 – Tony

0

私はこれを理解したと思いますが、(よりエレガントな)解決策を歓迎します。

「きれいな」テストと「汚い」テストの両方を実行しています。 「クリーン」テストは、通常のセレンテストで、テストごとにDBを設定し、分解します。

python manage.py test myapp --testrunner=testrunner.MySeleniumTestRunner \ 
    --no_setup_db --no_teardown_db --user=1234 --liveserver=localhost:8081 

私は、文字列:「汚い」テストはセットアップやDBを取り壊し、また、ユーザIDを渡し、そのようにするかどうか、それを教えてくれた私のサブクラスDjangoTestSuiteRunnerにオプションを渡すことで実行されていますこれらのコマンドの約10をシェルスクリプトにまとめ、出力をログに記録します。

唯一の難しい部分は、両方の種類のテストを考慮してテストを書くことです。たとえば、クリーンなテストでショッピングカートに商品を追加してカートを確認して成功を示している場合は、商品の在庫状況などをチェックする条件を追加する必要があります。したがって、私が汚れたテストを実行すると、4つの製品しか利用できない場合、最初の4人のユーザーは製品が利用可能であり、製品がカートに追加されたことを確認して成功しました。 - 第5ユーザーは、製品が利用できないときは、適切なエラー処理などを確認するためです。

これは単体テストのようなものではなく、むしろ機能テストのための非標準的なものかもしれませんが、テストの独立性を犠牲にすることなく、マルチユーザのテストを行うことができます。

関連する問題