import XXXsign.Openapi2sign; ---署名メソッドをjarパッケージにインポートします String str1 = "12121"; ---署名する必要があるフィールド;開発からどのフィールドが必要かを学びます String result = ""; - 結果変数の結果を定義します= new Openapi2sign()。md5Encode(str1); ---署名メソッドを呼び出して、署名フィールド System.out.println(result);に署名します---署名済みフィールド vars.put( "sign"、result。 toString()); ----グローバルトラバーサル記号の値を、署名後の値に設定します。署名結果を実行する必要があります
基本的なスクリプトとリクエストパラメータを記述したら、デバッグスクリプトを開始します。最初の問題が発生しました。
署名検証のリクエストに失敗しました:
さまざまなオンラインで情報を検索します。最後に入手しました。手順は次のとおりです。
1.開発者からフロントエンドの署名ルールとアルゴリズムを学び、フロントエンドの署名XXXsign.jarパッケージを入手します。
2.パッケージをJmeter / libディレクトリに追加します。
3.各HTTPリクエストによって生成される署名は異なるため、署名を必要とする各HTTPリクエストにプリプロセッサを追加する必要があります。 "BeanShellサンプラー、およびデバッグサンプラー(デバッグの場合は、スクリプトを正式に実行するときに削除します) )。
4.スクリプトを記述して署名を生成し、署名変数を設定して、httpリクエストヘッダー構成要素で呼び出します。
import XXXsign.Openapi2sign; ---署名メソッドをjarパッケージにインポートします String str1 = "12121"; ---署名する必要があるフィールド;開発からどのフィールドが必要かを学びます
String token = "" ----署名定義トークン
文字列時間= $ {__時間(/ 1000)} ----署名に必要な時間パラメータ
文字列str00 =トークン+時間+ str1 ---最終的な署名フィールドに結合されます 文字列結果= ""; - 結果変数の 結果を定義します= new Openapi2sign()。md5Encode(str00); ---署名メソッドを呼び出して、署名フィールド System.out.println(result);に署名します---署名されたフィールドを出力し、正式に実行されたら、この行 vars にコメントします。 put( "sign"、result.toString()); ----グローバルトラバーサル記号の値を、署名後の値に設定します。署名結果を実行する必要があります
5.デバッグされたスクリプト。デバッグサンプラーとリクエストヘッダーの結果でリクエストの署名文字列を確認できます。
================================================
署名のデバッグ後:2番目のCookie検証エラーが発生しました。
多数のユーザーが同時にビジネステストを実行する必要がある場合、ログインインターフェースを使用してログインステータスを取得することは適切ではありません。もう一度Cookieを更新する
私が使用する方法は、開発cookie cookieを生成するためのルールを見つけることです。インターフェイスのテストに適しています。
Cookie修正のルールは次のとおりです。
sid =ユーザーID + 'sid'、uid =ユーザーID、device_id =テスト(テストに固定)
DBAを見つけて、ルールをRedisに書き込みます。
CookieマネージャーをJmeterスレッドグループに追加します。
Cookieマネージャーで:固定Cookie形式を設定します。ユーザーIDはcsvデータファイルから転送されます。マルチユーザー要求のビジネスシナリオをシミュレートするために使用されます。
テスト後:OK
================================================== ====
スループットの向上:
スクリプトのデバッグはWindows 10で実行されます。テスト中、スループットは常にアップしており、異常率は特に55%高いことがわかりました。
しばらくの間インターネット検索〜私は道具屋のような気がします。はは〜
まず、私のコンピューターのメモリに応じて、jvmメモリを増やして、4Gに直接追加しました。
そして次のように設定します:
レジストリを変更します。TCP接続ポートを増やし、TCP回復時間を減らします。
WindowsはTCP / IPリンク用に1024〜5000ポートを提供し、それらをリサイクルするのに4分かかります。これにより、短期間に大量のリクエストを実行するときにポートがいっぱいになりました。
解決策は次のとおりです。
cmdで、regeditコマンドを使用してレジストリを開きます
ステップ1:クライアントのTCP / IPソケット接続に動的に割り当てられる一時ポートの上限を増やします。
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parametersの下:
パラメータを右クリックして、MaxUserPortという名前の新しいDWORDを追加します。
次に、MaxUserPortをダブルクリックし、数値データに65534を入力し、ベースに10進数を選択します。
ステップ2:クライアントのTCP / IPソケット接続のタイムアウト値を減らす(デフォルト値は240秒)
レジストリで、次のレジストリキーを参照してクリックします。
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters
[編集]メニューの[新規]、[DWORD値]の順にクリックし、次のレジストリ値を追加して、接続が閉じたときに接続がTIME_WAIT状態になる時間を短縮します。接続がTIME_WAIT状態の場合、ソケットペアは再利用できません。
パラメータを右クリックし、TcpTimedWaitDelayという名前の新しいDWORDを追加します。
次に、TcpTimedWaitDelayをダブルクリックし、30〜240の数値として数値データを入力し、10進数を選択します。
コンピュータを再起動します
上記の手順を完了すると、スループットが大幅に向上し、異常率が大幅に減少しました。
====================================
スタンドアロンの同時パフォーマンスを改善する
メモリとTCP接続の数を改善し、TCP接続時間を変更した後。マシンのパフォーマンスは、私たちによってほとんど絞られています。次に、スクリプトをデバッグします。
1.スレッド数:各スレッド数は特定の量のメモリを占有します(私は自分で3〜4Mをテストします:推測)。スレッド数は指定されたjvmメモリを超えてはなりません。そうしないと、スタックして遅くなります。スループットが低下し、異常率が増加しました。同時実行性の低下、接続数の低下など。
2.ウォームアップ時間:通常は30秒に設定します。実際のスレッド設定が比較的大きい場合、それが500を超えると、30秒は完全に開始されません。500スレッド、30秒の時間に合わせて設定することをお勧めします。
3.応答、アサート、結果ツリーの表示。これらはオフになっています。
4.正確なスループットタイマー:これは、インターフェイス要求の数を制限する必要がある一部のシナリオで役立ちます。