マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

負荷テストをスムーズに計画・実行できるようにコンテンツを作成してみました。

負荷テストとは?

負荷テストの概要図

単純に、Webアプリケーションだけに対して負荷をかけることもできるが、
以下のようにネットワーク機器など含めた本番稼働構成に対する性能検証も可能。

負荷テストの概要図

この場合、単純なリクエスト-レスポンス間の時間測定だけするのではなく、
各サーバーや機器のパフォーマンス カウンタなどのパフォーマンス情報を収集し、
ボトルネックが無いか?などを調査する必要がある。

負荷テストのスクリプト作成

可変値の場所

post、url、htmlなどに含まれる値。

可変値のユースケース

スクリプトによる可変値の追跡

アプリケーションの仕組み次第では、データストアを初期化すれば、
取得した電文の再送だけで、負荷テストが可能なケースもあるが、

のような処理がある場合、

が必要になる。

このため、負荷テストでは、スクリプト作成が必要になる。

このように「可変値の追跡」が必要になる負荷テストは、HTTPを使用するWebアプリケーションでは容易であるが、
バイナリ電文を使用するリッチクライアント・アプリケーションの場合、型情報を取り込む必要があるので、容易ではない。

(...と言うか、実質的に汎用的な負荷ツールでバイナリ電文の実行で負荷をシミュレートできないことが殆どである)。

負荷テスト・ツールの機能

負荷テスト・ツールは、以下のような機能を持っている。

電文のキャプチャとスクリプトの生成機能

HTTPプロキシのように動作するツール

専用ブラウザを持つツール

スクリプトの編集機能

可変値の追跡

ユーザ毎の入力

準備したユーザ毎の入力値を、実行時に投入する。

デバッグ方法

仮想ユーザ毎のスクリプト実行機能

エージェント機能

1つのスクリプトやシナリオを複数のマシンを使用して負荷を書ける場合、

各マシンにエージェントをインストールし、
コントローラからエージェント経由で各マシンを制御する。

シナリオの組み立てと実行機能

測定モデル

「測定モデル」は、下記のマトリックスのことで、

トランザクション種別機能名実行ユーザ比率スクリプト名
参照系機能A、機能B例:70%スクリプトA、スクリプトB
更新系機能C、機能D例:20%スクリプトC、スクリプトD
追加、削除系機能E例:10%スクリプトE

作成する。

機能抽出

に、「ボトルネック」がないかどうかチェックすることは重要である。

シナリオ作成

シナリオとして作成する。

となる。

※「仮想ユーザ数」が「測定モデルの実行ユーザ比率」に必ずしも準拠する必要はない。

レポーティング機能

アーキテクチャと負荷テスト

Webアプリケーション

HTTPはHeaderからBodyまで、全てテキスト表現となっているため、以下手順に従い、
負荷テスト・ツールを用いてスクリプトを作成し負荷テスト・シナリオを作成しやすい。

リッチクライアント(3層 C/S)

HTTP電文

HTTP電文になっていれば、サーバー側の負荷テストが可能。

バイナリ電文

リッチクライアント(2層 C/S)

以下の様な方法で負荷テストを実行する。

トレース ファイルの再生

クエリを記録して再生できる。

負荷テスト・ツール

負荷テスト・ツールを使用できる。
ただし、ワークロードの記録ができない。

シミュレータやスクリプト

また、P層 / B層(D層)が適切にクラス分割されていれば、
3層C/Sのようなシミュレータやスクリプトを作成しやすい。

.NETの場合

Webアプリケーション

ASP.NET Web Forms

以下がポイントのもよう。

ASP.NET MVC

リッチクライアント

リッチクライアントの負荷テストは、

前述の方法を参考にする。

考慮点

クライアントPC設定の考慮点

利用可能ポート拡張

netshでdynamicport tcpの利用可能ポートを確認して拡張する(10000-65535)。

TIME_WAIT状態の短縮

TcpTimedWaitDelay?レジストリ・パラメタを短くする。

負荷分散時時の考慮点

パーシステンスの考慮

ツール比較

要約

Apache Jmeter

製品

クローズド

という点。

回帰テストツール

回帰テストツールの種類

以下の2つがあり、其々タイプが異なるので注意が必要。

回帰テストツールでの代替

バイナリ電文を使用するリッチクライアント・アプリケーションの負荷テスト用途に、
「UI自動化による回帰テストツール」を活用できないか?という話がよく上がる。

しかし「UI自動化による回帰テストツール」は、多重実行など、代替が難しい事がある。

参考

Top 5 Performance/Load Testing Tools

Top 5 Performance/Load Testing Tools In 2017
http://www.guru99.com/performance-testing-tools.html

参考

Apache Jmeter

Azure上でのテスト

負荷テストのポイント - Open 棟梁 Wiki


Tags: :テスト, :ツール類


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS