hide's memo
6 4月, 2023

Fiddler

[English]

HTTPパケットをキャプチャできるツール。
下図のように、WEBブラウザがサーバに対してどのようなリクエストを送信し、どのようなレスポンスを受信しているのかを確認することができる。
また、HTTPリクエストおよびレスポンスを改ざんすることもできる。

 

■HTTP通信の確認

基本的な使い方は、下図の通り。
(1)画面左ペインに、HTTP通信が表示されるので、確認したい通信を選択
(2)画面右ペインで、”Inspectore”タブを選択する
(3)”Raw”を選択する
(4)画面右側上段に、HTTPリクエストの内容が表示される。
(5)画面右側下段に、HTTPレスポンスの内容が表示される。

 

 

■HTTP通信の改ざん

(1)下図のように、Rules -> Automatic Breakpoints -> Before Request を選択すると、
HTTPリクエストを送信する前に、Fiddlerが保留するようになる。
(2)ブラウザ操作で、HTTPリクエストが送信される際に、Fiddlerがリクエストを保留するので、
変更したいリクエストをリストから選択。
(3)HTTPリクエストの内容を変更する。
(4)Run to Completionボタンを押す。

全てのリクエストの送信が保留されるので、変更する必要がない通信も、上の操作で Run to Completionボタンを押す必要がある。

 

 

■Fiddlerの結果をJMeterに利用する

(1)Fiddlerでキャプチャした通信を Exportする。


(2)JMeterで、(1)のファイルをインポートする。

インポートすると、親切にも一般的なWEBアプリケーションのテストでほぼ確実に必要なCookie Managerが初めから設定される。またView Result Tree も設定されているので、すぐに確認できるのも親切。ただ、スレッドグループが初めから 10スレッドなどになっているので、動作確認には向かない。まずは、スレッドを全部1にして、インポートしたシナリオが動くことを確認するのがいいと思う。

27 2月, 2022

JMeterで大量の個別ユーザを扱う

[English]

JMeterで、下図のように大量の別々のユーザを用意し、

 

それぞれが個別のユーザIDを使って、ログイン、ページアクセスを行うようなJMeterの設定方法

 

 

1.ユーザ情報(ID/Passwd)を記載したTXTファイルを用意する

ファイルの中身は、以下のようにIDとパスワードをタブ区切りとする。

user001 passwd001
user002 passwd002
user003 passwd003

 

2. JMeterを以下のように設定する

 

(1)User Defined Variable

uid,passwd 変数を追加

(2)HTTP Cookie Managerを追加

(3)Transaction Controllerを追加

(3.1.)BeahShell PreProcessorを追加。中身を以下のように記述する。

int threadNum = ${__threadNum}; 
String filename = "users.txt"; // 必要に応じてフルパスにする

String data;
BufferedReader br = new BufferedReader(new FileReader(filename));
String uid="";
String passwd="";

// 自分のスレッド番号に一致した行を読み込む
int num=0;
while((data = br.readLine())!=null){
  String[] token = data.split("\t");
  uid = token[0];
  passwd = token[1];

  num++;
  if(num == threadNum){
    break;
  }
}
br.close();

vars.put("uid",uid);
vars.put("passwd",passwd)

 

(3.2) HTTP Requestを追加

本例では、http://localhost/cgi-bin/login.cgi というURLに、id=xxx, passwd=yyy というパラメータでPOSTするとログインするような画面を想定している。

アクセスURL:http://localhost/cgi-bin/login.cgi

HTTP Request:POST

Parametersに以下を追加

uid    ${uid}

passwd    ${passwd}

 

(4)Loop Controllerを追加

(4.1)HTTP Requestを追加し、ページ1へのアクセスを追加

(4.2)HTTP Requestを追加し、ページ2へのアクセスを追加

 

user.txtの数だけスレッド数を増やすことが可能。