0

loadUI を使用して soapUI で作成した testCase で負荷テストを実行しようとしています。

私の soapUI testCase には、データベース オブジェクトを作成する AMF リクエストが含まれています。これを「someList」と呼びましょう。testCase のオプション メニューで、正しいエンドポイントを貼り付けた状態で [AMF セッションを有効にする] をオンにしました。

今、私は testCase のセットアップ スクリプト機能を使用して、次のように testCase AMF オプションでランダムなログインとパスワードを動的に設定しています。

def loginCreds = String.format("%04d", new Random().nextInt(999999999))

testCase.setAmfLogin( loginCreds )

testCase.setAmfPassword( loginCreds )

この testCase を soapUI で実行すると、AMF セッションのログインとパスワードが正しくランダム化され、データベースに新しいユーザーが作成され、AMF リクエストによって「someList」が正しく作成され、新しく作成されたランダム ユーザー (AMF セッションによって生成された) に所有権が割り当てられます。ログインとパスワードのオプション。)

テスト、新しいユーザー、新しい「someList」を再実行します。私が望むように動作します。

ここで、これを LoadUI で固定レートの仮想ユーザー ジェネレーターを使用して soapUI ランナーとして実行すると、新しいユーザーが 1 つだけ作成され、その後のすべての新しい "someList" がそのユーザーに割り当てられます。セットアップ スクリプトが 1 回だけ実行されているようです。

これは意図した機能ですか!?

以下は、http: //www.loadui.org/Runners/soapui-runner-component.html からの抜粋です。

「soapUI ランナーを通過する各仮想ユーザーは、soapUI テストケースの独自の分離されたコピーを取得しますが、実際には、soapUI プロジェクトの残りの部分を、同じ soapUI プロジェクトに属する soapUI テストケースを実行している他のすべての VU と共有することに注意することが重要です。これはつまり、これらはすべての VU 間で共有されており、同期されていない場合は ConcurrentModificationException が発生する可能性があるため、TestSuite またはプロジェクトのプロパティへの書き込みは避ける必要があります。」

私はこれを間違って読んでいますか?各仮想ユーザーは独自のバージョンの testCase を取得して、セットアップ スクリプトと、ランダムに生成された AMF セッション ログインとパスワードを取得するべきではありませんか?

これは、1 人のユーザーが同時に何百もの「someList」オブジェクトを作成することはないため、それぞれが独自の AMF セッション資格情報を持つ個別の仮想ユーザーをシミュレートする可能性を完全に否定するようです。

ヘルプや説明をいただければ幸いです。

前提条件のテストをいくつか行い、セットアップ スクリプトは毎回実行されますが、AMF セッション資格情報は、生成されるすべての仮想ユーザーによって共有されます。

4

1 に答える 1

0

SoapUI に組み込まれている負荷テスト機能にも同様の問題がありました (プロジェクトを LoadUI に移行することはできませんでした)。時間、定数、およびスレッド インデックス (おそらくスレッド インデックスが最も重要な部分) によって変化するランダム シードを提供することで、最終的に修正を見つけました。

def ti = context.ThreadIndex
def cal = Calendar.instance
cal.timeZone = TimeZone.getTimeZone("America/Denver")
cal.set(Calendar.MONTH, Calendar.DECEMBER)
long time = cal.time.time / 1000
def seed = time.toInteger()
Random random = new Random(123445*ti + 544321 + seed)               
def loginCreds = String.format("%04d", random.nextInt( 999999999))
于 2012-06-06T14:06:24.783 に答える