パフォーマンステストは、それがシナリオに遭遇することも可能であるとき:セキュリティ上の懸念へのインタフェース要求を暗号化して送信する必要があります。
このシナリオでは、性能は、JMeterのテストも必要とされている使用して達成同じ符号化規則を使用して要求メッセージを送信します。
これらのパフォーマンステストを実現するために、いくつかの戦略があります。
- 暗号文ルールの直接除去は - メッセージの暗号化キーのパフォーマンスは、その後、シンプルさは、ある程度の直接的なテストが明示要求許容されないので。
- 同じ暗号化ルールを使用して暗号化されたメッセージを送信する - このプロセスは、実際のシーンに明確に近い、それは一般的に推奨されます。
この記事では、パフォーマンス・テストのための暗号化JMeterの送信要求の使用について説明します。
JMeterのを導入しましたJarパッケージ1.パッケージの暗号化方式、
まず、製品は暗号化ポリシーをテストしたことを確認してください。
このプロセスは、インタフェース定義文書を読み込むことで、パケットキャプチャ解像度と組み合わせた開発者に尋ねる必要があります。
例えば、捕捉結果の順序を作成するためのインターフェース。
Requestパケット:
POSTます。https://ops.********.cn/***-api/member/system/login HTTP / 1.1
のAccept-言語:ZH ZH-CN、; Q = 0.8
のUser-Agent:Mozillaを/5.0(Linuxの; U;アンドロイド6.0.1、ZH-CN; Redmi 4Aビルド/ MMB29M)のAppleWebKit / 534.30(ヤモリのようにKHTML、)バージョン/ 4.0モバイルサファリ/ 534.30
トークン:90e76710e105b217d185832057220cddの
appCode:******
compCode :****
のContent-Type:アプリケーション/ x-www-form-urlencodedで
のContent-Length:99
ホスト:OPS ********のcn。
接続:キープアライブが
受け入れエンコード:gzipで
アカウント= *********&パスワード= 2ac9cb7dc02b3c0083eb70898e549b63&サイン= 4b9932154067b4a35bd4c2e9eba8036f
リクエストは暗号化されたパスワードのチェックコード検査パラメータと符号の主要部分(ここでは部分暗号化パラメータの要求は、実際には、全体の暗号化されたメッセージは、より一般的であってもよい)、上記の分析であってもよいです。
その後、我々は適切な暗号化方式を準備する必要があります。
暗号化方式は、元の暗号化ルールに沿った製品の性能をテストすることを保証するために、フォームのjarパッケージをエクスポートするために、開発者が直接、元の製品の暗号化方式を与えることを可能にすることをお勧めします。
あるいは明確な暗号場合、暗号化は、サードパーティのjarパッケージを使用するか、または自分自身を書くことができます。ここで最初のお勧めよりで、コーディネートの開発を行いました。
最後に、準備されたjarファイルのパッケージ、インポートのJMeterテスト計画。
2.暗号化パラメータ
BeanShellPreProcessor、要求の暗号化を使用してください。
アイデアは次のとおりです。
- 暗号化ライブラリとしてjarファイルを使用しての最初のステップをご紹介
- 特定のキーを使用して、フィールドを暗号化されて暗号化する必要があります
- フィールドが使用インタフェースの呼び出しのための変数として暗号化して格納されます。
次のようにBeanShellのコードは次のとおりです。
インポートcn.hutool.json.JSONUtil; インポートCOM *** controller.HttpClientUtil; ... インポートCOM *** encrypt.EncryptUtil; ... インポートCOM *** encrypt.gmhelper.MD5Util; ... インポートたjava.util.HashMap ; // キー設定 文字列signkey = "47fbbbd 0b8d7378 ********" ; // 読み込んユーザーアカウント変数 文字列UserAccountの= vars.get( "ユーザー" ); 文字列のパス = vars.get(「パスを" ); // 暗号化プロセス paramMap = 新しい新しいHashMapの(); 文字列のパスワード = MD5Util.encrypt(パス); paramMap.put( "アカウント」、UserAccountの); paramMap.put("パスワード" 、パスワード); 文字列は、サイン = EncryptUtil.md5sign1(paramMap、signkey).toLowerCaseを(); // パラメータは、暗号化変数格納されてい vars.put( "パスワード" 、パスワード); vars.put(「ログイン」、サイン)
その後、限りメッセージ部分暗号化された送信要求を達成するために、送信パラメータの形で使用される変数のうち、インタフェース要求など。
コールインタフェースは、メッセージの暗号化が実装されていることを確認するための要求を送信します。
以下同様に、暗号化プロセスが、異なるインターフェイスの数で実現することができる要求し、プロジェクト全体JMeterは構成される。