技術メモブログ

技術ネタの備忘録的なブログ。技術ネタ以外にも気になったことをつらつら書きます

Visual Studio 2015 でのパフォーマンステスト

Visual Studio 自体に備わっているパフォーマンステスト機能を使用
MS 公式サイトで機能の比較を確認すると Enterprise でしか使用できない
今回は試用版をインストールして動作を確認する

f:id:mtkj:20160110145305j:plain

参考にしたのは公式のここ
こちらに従い、プロジェクトの作成とパフォーマンステストのシナリオを作成する

 
追加>Web パフォーマンステスト とするとブラウザが起動
公式サイトでは、起動したブラウザ(?)で設定をやる説明だが
試した限りだと同じようにはならないので、ブラウザを落とす。
VS 側では「記録中です...」と表示されてるので、「記録の中止」で中止する。

 
シナリオにカーソルを合わせ、右クリックから要求の追加を行う
f:id:mtkj:20160110145959p:plain

リクエストする URL が追加される
f:id:mtkj:20160110150121j:plain

追加直後は URL が http://localhost/ なので修正
f:id:mtkj:20160110150338j:plain

 
エディタ左上にある、ビーカーっぽいアイコンでテストの実行
結果が出力される
f:id:mtkj:20160110150845j:plain

要求時間が出るので、どの程度時間がかかったのかがわかる。

 
続いてロードテスト(負荷テスト)を試したが、Visual Studio Online(VSO) に接続する必要があるらしく
ローカルだけで完結はできなさそう。

 
現状やりたい内容としては、API を連続実行して、メモリが右肩上がりに増えないこと
メモリリークが発生しないことを確認したい。

公式の説明にあるような、時間経過毎にアクセスユーザを増やすといった場合は
素直に VSO を使用するか、別のテストツールを使った方が良いと思う。

 
以下代替案の説明

 
Web パフォーマンステストと同じように、要求の追加前までを実施
右クリックから、「ループの追加」を選択
画面が起動するので、規則から「For ループ」を選択し、プロパティの設定をする
設定内容は For 文と考えればいいと思う。終わったら OK で閉じる f:id:mtkj:20160110152443j:plain

エディタ部分
f:id:mtkj:20160110152717j:plain

ループ部分で右クリックし、「要求をループに追加」を選択
これは先程と同じなので、説明は割愛

 
設定したら実行する
リクエストが設定した通り 10 回実施されている f:id:mtkj:20160110152942j:plain

リクエストし続ける時間の設定は出来ないが、リクエスト回数を増やせば
メモリリーク確認くらいは出来ると思う。

 
POST 通信も可能で、エディタの要求で右クリックして
「フォームポストパラメータの追加」で、パラメータ名と値を設定すればOK。
要求のプロパティ、メソッドが POST になっているのが確認できる。

この要求を
f:id:mtkj:20160110153933j:plain
 
以下の JAX-RS に対して実行すると

@POST
@Path("/hoge")
public String hoge(@FormParam("aa") String aa, @FormParam("bb") String bb) {

    System.out.println( aa );
    System.out.println( bb );

    return "hoge";
}

 
ちゃんとパラメータが取れる

2016-01-10T15:33:16.403+0900|情報: AAA
2016-01-10T15:33:16.403+0900|情報: BBB
2016-01-10T15:33:16.446+0900|情報: AAA
2016-01-10T15:33:16.446+0900|情報: BBB