1

LiveServerTestCaseを使用して Django 1.4 で 1 人のユーザー/シーケンシャルに Selenium テストを正常に実行できますが、並列マルチユーザー テストをエミュレートしたいと考えています。私のアプリはほとんど中程度/低トラフィックの Web サイトと内部 Web アプリであるため、実際の負荷テストは必要ないと思います。そのため、JMeter のような追加のツールは避けたいと思います。

Selenium Gridのセットアップを開始しましたが、テストを独立した状態に保ち、複数のユーザーで複数のテストを実行する方法がわかりません。テスト ケースは、同じ DB で異なるユーザーに対して同時に実行する必要があると想定していますが、各テストは新しい DB を削除して作成するため、それがどのように可能かわかりません。

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

4

2 に答える 2

0

私はこれを理解したと思いますが、より多くの(おそらくよりエレガントな)ソリューションを歓迎します。

「クリーン」テストと「ダーティ」テストの両方を実行しています。「クリーン」テストは、すべてのテストの後にDBをセットアップおよび破棄する通常のSeleniumテストです。「ダーティ」テストは、サブクラス化されたDjangoTestSuiteRunnerにオプションを渡すことで実行されます。このオプションは、DBをセットアップまたは破棄するかどうかを指示し、次のようにユーザーIDも渡します。

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

次に、これらのコマンドのうち約10個をシェルスクリプトにまとめて、出力をログに記録します。

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

これはユニットテストのようなものではなく、機能テストでは標準的ではないかもしれませんが、テストの独立性を損なうことなく、並列マルチユーザーテストをかなりうまくエミュレートしていると思います。

于 2012-04-28T00:44:16.480 に答える
0

とにかく、いくつかの異なる理由から、JMeter のようなツールを使用することをお勧めします。

  1. 複数のユーザーが同時にサービスにアクセスしているときにバグがないことをテストしたい場合、2 つ以上の自動化された Selenium テストを同時に実行すると、バグが発生することが保証されません。リクエストが実際にサーバーに送信される前に発生するすべてのアクションを実行します。複数のリクエストを同時に送信できる jmeter のようなツールを使用すると、リクエスト間の遅延がほとんどまたはまったくない場合に、この種のバグに遭遇する可能性が高くなります。また、Selenium よりも多くのスレッドを同時に簡単に実行できます。
  2. 実際にサイトのパフォーマンスをテストしたい場合や、通常の負荷を超えた状態でのサイトの動作をテストしたい場合は、jmeter などのツールを使用するとより簡単に実行できます。

そうは言っても、本当にこれに Selenium を使用したい場合は、Selenium2/Webdriver を使用するとかなり簡単であることはわかっていますが、Selenium Grid について十分に理解していないため、そこで何が必要になるかについてのガイダンスを提供することはできません。

于 2012-04-24T20:32:58.763 に答える