1

Web サーバーで負荷分散テストを作成するために、Selenium を使用しています。ウェブサイトにはユーザー名/パスワードがあり、これを操作するために、ユーザー名とパスワードの組み合わせで満たされた csv ファイルがあります。

問題は、Javascript のランダム関数を使用して csv ファイルから行を選択し、ログイン機能または登録の詳細を入力していることです。

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = csv.random();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

これにより、スケジュールされた実行中に同じレコードが 2 回選択された場合、登録時に明らかに問題が発生します。登録時にレコードが選択されておらず、既存のアカウントを必要とするテストで選択された場合、明らかにログインの状況では、存在しないためにテストが失敗します。

私の質問は、browserMob に一度に 1 つずつレコードを反復処理させることは可能ですか? 明らかに、browserMob が負荷テストを開始すると、スクリプトを実行するたびに一度に 10 人のユーザーが Web サイトを使用するとします。

NUnit を使用して C# で Selenium-RC を使用してテストを作成し、csv ファイルをリストに読み取ってから、リストを反復処理しました。明らかに、これは各ユーザーを次々と実行し、一度に複数のユーザーがサイトにいることをシミュレートしません。

これに関するアドバイスは大歓迎です。

ありがとう、

ジョン

4

2 に答える 2

3

browserMob.getUserNum()一意のパラメーター化を強制するには、テストを処理しているノードのユーザー番号を取得するために呼び出す必要があります。これはヘルプで確認できます。私はあなたのコードを私が思うように更新しました。私はそれをテストしていないことを意味するべきです:)

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = browserMob.getUserNum();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);
于 2010-08-02T07:23:10.657 に答える
0

これは、負荷テスト中にユーザーごとに一意のレコードを取得する方法になる可能性があると思います。

var csv = browserMob.getCSV("pickStickEmails.csv");

var rowNumbers = new Array();
for(i = 0; i <= csv.size(); i++)
{
  rowNumbers.push(i);
}

var uniqueRowNumber = rowNumbers[browserMob.getUserNum()];
var row = csv.get(uniqueRowNumber);

var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

基本的に、csvファイルの行番号として機能する番号の配列を作成します。次に、提案から選択した一意の番号をランダムに使用するのではなく、CsvTableでget()関数を使用します。

指導ありがとうございます!

于 2010-08-04T16:36:48.177 に答える