- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>テスト]]
* 目次 [#fb1e9f15]
#contents
*概要 [#ve50755d]
*負荷テストとは? [#f7f5b7d5]
**負荷テストの概要図 [#b51346de]
単純に、Webアプリケーションだけに対して負荷をかけることもできるが、~
以下のようにネットワーク機器など含めた本番稼働構成に対する性能検証も可能。
#ref(LoadTest.png,left,nowrap,負荷テストの概要図)
この場合、単純なリクエスト-レスポンス間の時間測定だけするのではなく、~
各サーバーや機器の[[パフォーマンス カウンタ]]などのパフォーマンス情報を収集し、~
ボトルネックが無いか?などを調査する必要がある。
**負荷テストのスクリプト作成 [#u5419763]
負荷テストでは、以下のような実行毎に変わる値を
-実行タイミング次第で可変となる値。
-ランダム値が使用されていて可変となる値。
-ログインユーザ毎に可変となる値。
正規表現などを使用して抜いて引き継ぐ必要がある。
このような処理が必要になるため、負荷テストでは、スクリプト作成が必要になる。
このような負荷テストは、[[HTTPを使用するWebアプリケーション>#w9a593c8]]では容易であるが、~
[[バイナリ電文を使用するリッチクライアント>#q49fda79]]の場合、型情報を取り込む必要があるので、容易ではない。~
(...と言うか、実質的に汎用的な負荷ツールでの実行はサポートされていないことが殆どである)。
**Webアプリケーション(+HTTP) [#w9a593c8]
HTTPはHeaderからBodyまで、全てテキスト表現となっているため、以下手順に従い、~
負荷テスト・ツールを用いてスクリプトを作成し負荷テスト・シナリオを作成しやすい。
-Webアプリケーションをブラウザから操作しながら、~
HTTP電文をキャプチャしてスクリプトを生成する。
-作成したスクリプトを実行し、~
アプリケーションが動作する(負荷をシミュレートできる)かを確認する。
-アプリケーションが動作しない(負荷をシミュレートできない)部分を確認し、スクリプトの修正を行う。
--動的に変更される値の追跡を行う。
--ユーザ入力をシミュレートする。~
例えば、多重ログインができないシステムであれば、~
仮想ユーザごとに使用するユーザIDを変更するようにする。
-スクリプトを実行して、サーバーに負荷をかける。
-スクリプトを組合せ負荷テスト・シナリオを作成し実行する。
**リッチクライアント(+バイナリ電文) [#q49fda79]
***バイナリ電文 [#pf1ea117]
-バイナリ電文はC構造体や.NETオブジェクトのバイナリ表現になっている事が多い。
-このため、バイナリ電文を使用するリッチクライアントの負荷テストは、~
HTTPに特化した負荷テストツールでは実行が困難である。
-バイナリ電文の負荷テストが困難な理由は、
--電文再送で負荷がかけられるような単純なサーバー機能でない限り、バイナリ電文は型情報が無いと上手く処理できない。
--殆どのビジネス・アプリケーションでは、その仕組み上、単純なバイナリの電文再送では負荷をシミュレートできない事が多い。
>等である。
-結果として、バイナリ電文を使用するリッチクライアントの負荷テストは、~
クライアントサイドのシミュレータやスクリプトなどを開発して負荷をシミュレートする事が多い。
***回帰テストツール [#cf98b86a]
以下のような、回帰テストツールもあるが、
-マイクロフォーカス製品 - テストツール - Silk Test : マイクロフォーカス~
https://www.microfocus.co.jp/products/silk/silktest/
-HP Unified Functional Testing 12 | HPE 日本(UFT, 旧QTP)~
http://h22242.www2.hpe.com/products/software/hpsoftware/uft12.html
負荷テストは、多重実行など、回帰テストツールでの代替が難しいため、~
同様にクライアントサイドのシミュレータやスクリプトを作成して再生することが多い。
***3層 C/S、2層 C/S [#nf6d8cf7]
-3層 C/Sの場合、
>基本的にシミュレータやスクリプトを作成して負荷テストを実行する。
-2層 C/Sの場合、
--以下を使用してもイイかもしれない。
---トレース ファイルの再生 (SQL Server Profiler)~
https://msdn.microsoft.com/ja-jp/library/ms189604.aspx
--P層 / B層(D層)が適切にクラス分割されていれば、~
3層C/Sのようなシミュレータやスクリプトを作成しやすい。
*.NETの場合 [#u03a749c]
**Webアプリケーション [#zeca1ef1]
***[[ASP.NET Web Forms]] [#mad7663c]
以下がポイントのもよう。
-HTTPクッキーマネージャを設定(Session利用時)
-VIEWSTATEの引継を設定
-EVENTVALIDATIONの引継を設定
>EVENTVALIDATIONは、EnableEventValidation = true の際に~
生成され、PostBackおよびCallbackイベントを検証するための情報。~
これにより、Response・PostBack間で保存 → 復元される値が、~
改ざんされていないかどうかをチェックするようになるので、~
Response・PostBack間で保存 → 復元される値が、~
動的に変更になるような場合は、追跡する必要がある。
-CSRF(XSRF)対策用のTokenの引継を設定
--[[CSRF(XSRF)対策の実装方針 - 対応方針の材料 - ASP.NET Web Forms>脆弱性対策のポイント#z96a6a63]]
-参考
--ASP.NET アプリケーションの過負荷試験を JMeter で行う。 - dunno logs~
http://d.hatena.ne.jp/dany1468/20101209/1291906047
--JMeter で ASP.NET の負荷試験検証した - minato128 blog~
http://minato128.hateblo.jp/entry/2013/05/24/212016
***[[ASP.NET MVC]] [#i76a8281]
-CSRF(XSRF)対策用のTokenの引継を設定
--[[CSRF(XSRF)対策の実装方針 - 対応方針の材料 - ASP.NET MVC>脆弱性対策のポイント#z96a6a63]]
**リッチクライアン [#b42537c8]
-Windows Forms
-WPF
-,etc.
は、[[前述>#q49fda79]]の方法を参考にする。
----
Tags: [[:テスト]]