負荷テストのポイント
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>テスト]]
* 目次 [#fb1e9f15]
#contents
*概要 [#ve50755d]
負荷テストをスムーズに計画・実行できるようにコンテンツを...
*負荷テストとは? [#f7f5b7d5]
**負荷テストの概要図 [#b51346de]
単純に、Webアプリケーションだけに対して負荷をかけることも...
以下のようにネットワーク機器など含めた本番稼働構成に対す...
#ref(LoadTest.png,left,nowrap,負荷テストの概要図)
この場合、単純なリクエスト-レスポンス間の時間測定だけす...
各サーバーや機器の[[パフォーマンス カウンタ]]などのパフォ...
ボトルネックが無いか?などを調査する必要がある。
**負荷テストのスクリプト作成 [#u5419763]
-負荷テストでは、以下のような実行毎に変わる可変値を~
正規表現などを使用して抜いて引き継ぐ処理が必要になるケー...
>以降コレを「可変値の追跡」と呼ぶ。
-また、ユーザ入力やユーザ操作をシミュレートする必要になる...
***可変値の場所 [#k84b0249]
post、url、htmlなどに含まれる値。
-ヘッダ部
--Cookie
---[[Session Cookie>ASP.NET Session#r1eb9f6a]]
---[[Cookie認証チケット>認証基盤#la8f4c73]]
--QueryStringコレクション
-ボディ部
--Formコレクション
--HTML
--JavaScript
***可変値のユースケース [#ddcc5b17]
-実行タイミング次第で可変となる値。
-ランダム値が使用されていて可変となる値。
--乱数
---GUID, UUID
---Temporary Password
--DBMSの
---Timestamp値
---Identity列やSequence値
-ログイン・ユーザ毎に可変となる値。
--ログイン・アカウント
--ユーザ毎の結果セット
--結果セットから選択したデータ
***スクリプトによる可変値の追跡 [#d319cdc6]
アプリケーションの仕組み次第では、データストアを初期化す...
取得した電文の再送だけで、負荷テストが可能なケースもある...
-実行タイミング次第で可変となる値がある。
-ランダム値が使用されていて可変となる値がある。
-多重ログインが不可能な仕組みがある。
のような処理がある場合、
-可変値の追跡
-ユーザ毎の入力
が必要になる。~
このため、負荷テストでは、スクリプト作成が必要になる。
このように「可変値の追跡」が必要になる負荷テストは、[[HTT...
[[バイナリ電文を使用するリッチクライアント・アプリケーシ...
(...と言うか、実質的に汎用的な負荷ツールでバイナリ電文の...
*負荷テスト・ツールの機能 [#d73084ac]
負荷テスト・ツールは、以下のような機能を持っている。
**電文のキャプチャとスクリプトの生成機能 [#d22cbd46]
-電文キャプチャとスクリプト(修正前のテンプレート)を生成...
-専用ブラウザを持つツールと、HTTPプロキシのように動作する...
***HTTPプロキシのように動作するツール [#cfc12711]
-GUIを持たないWebAPIの負荷テストの場合は、コチラを使用す...
***専用ブラウザを持つツール [#x2914726]
-レグレッション・テスト(回帰テスト)を実行可能。
--この場合、ブラウザ上の操作手順やjavascriptなどのイベン...
--ただし、レグレッション・テスト(回帰テスト)用であり、...
-また、スクリプトを再実行して~
「スクリプト(操作)の記録時」と「テスト時」の~
値の差異を検出し、追跡が必要な可変値をサジェストする。
**スクリプトの編集機能 [#edc45f2d]
***可変値の追跡 [#v8b56993]
-[[スクリプト生成時>#d22cbd46]]に自動追跡するツールもある。
-以下のケースでは自動追跡できないので、手動でスクリプトを...
--ユーザ毎に別々の入力値が必要になる場合
--JavaScriptにより複雑なパラメータを動的に生成している場合
--クライアント側で、Cookieを生成している場合
***ユーザ毎の入力 [#gb4a5222]
準備したユーザ毎の入力値を、実行時に投入する。
***デバッグ方法 [#s9cbe074]
-下記の[[仮想ユーザ毎のスクリプト実行機能>#b383f8f9]]を使...
-エラーが発生した際は、見極めが必要になる場合がある。
--アプリケーション・エラーか?
--それ以外のアプリケーション上の問題か?
-デバッグ機能が無い場合は、再生したスクリプトを、[[Fiddle...
どこに問題があるかを確認・分析する必要がある。コレを行う...
**仮想ユーザ毎のスクリプト実行機能 [#b383f8f9]
-仮想ユーザ毎にスクリプトを実行する。
-多重度を上げるため、1 Thread = 1 Userに見立てて負荷をシ...
-この際、ユーザ入力の思考遅延時間をシミュレートする。
***エージェント機能 [#y78df37a]
1つのスクリプトやシナリオを複数のマシンを使用して負荷を...
各マシンにエージェントをインストールし、~
コントローラからエージェント経由で各マシンを制御する。
**シナリオの組み立てと実行機能 [#bf364d91]
-シナリオでは、複数のスクリプトを組合せて本番環境に近い負...
-このシナリオを組み立て、シナリオに従い仮想ユーザ毎にスク...
-シナリオの作成準備として、まず、指針となる「測定モデル」...
***測定モデル [#be971455]
「測定モデル」は、下記のマトリックスのことで、
|トランザクション種別|機能名|実行ユーザ比率|スクリプト名|h
|参照系|機能A、機能B|例:70%|スクリプトA、スクリプトB|
|更新系|機能C、機能D|例:20%|スクリプトC、スクリプトD|
|追加、削除系|機能E|例:10%|スクリプトE|
-「トランザクション種別」毎に「機能」を抽出し、
-「トランザクション種別毎」の「実行ユーザ比率」を設定し、
作成する。
***機能抽出 [#od42d5a8]
-「機能」を抽出する際、負荷テストの対象となる
--「代表的なパターンの抽出」という観点だけでなく、
--「ボトルネックの発見」という観点も含めると良い。
-例えば、
--重要な機能
--複雑な機能
--その他、性能的に問題がありそうな機能
>に、「ボトルネック」がないかどうかチェックすることは重要...
***シナリオ作成 [#jeea7b9f]
-「測定モデル」を参考にして、
--「代表的なパターン」や、
--「ポイント機能を含むパターン」を、
>シナリオとして作成する。
-シナリオ作成のポイントは、
--機能(スクリプト)の
---選定
---組合せ
--仮想ユーザ数の設定
>となる。
-シナリオの編成の例
|シナリオ|>|>|仮想ユーザ数|h
|~|参照系|更新系|追加、削除系|h
|シナリオ1(10ユーザ)|7|2|1|
|シナリオ2(30ユーザ)|14|4|2|
|シナリオ3(70ユーザ)|35|10|5|
|シナリオ4(100ユーザ)|70|20|10|
※「仮想ユーザ数」が「測定モデルの実行ユーザ比率」に必ずし...
**レポーティング機能 [#r8f289a2]
-経過時間と、仮想ユーザ数/平均レスポンスタイム/スループッ...
-[[パフォーマンス カウンタ]]などのパフォーマンス情報を収集
*アーキテクチャと負荷テスト [#o40ef1cb]
**Webアプリケーション [#w9a593c8]
HTTPはHeaderからBodyまで、全てテキスト表現となっているた...
負荷テスト・ツールを用いてスクリプトを作成し負荷テスト・...
-Webアプリケーションをブラウザから操作しながら、~
HTTP電文をキャプチャしてスクリプトを生成する。
-作成したスクリプトを実行し、~
アプリケーションが動作する(負荷をシミュレートできる)か...
-アプリケーションが動作しない(負荷をシミュレートできない...
--動的に変更される可変値の追跡を行う。
--ユーザ入力をシミュレートする。~
例えば、多重ログインができないシステムであれば、~
仮想ユーザごとに使用するユーザIDを変更するようにする。
-スクリプトを実行して、サーバーに負荷をかける。
-スクリプトを組合せ負荷テスト・シナリオを作成し実行する。
**リッチクライアント(3層 C/S) [#q49fda79]
***HTTP電文 [#g5c4b21d]
HTTP電文になっていれば、サーバー側の負荷テストが可能。
-JMeterでRESTfulなAPIをテストする | ヘッドウォータース Te...
https://utage.headwaters.co.jp/blog/?p=2517
-Apache JMeter でクラウド・ベースのアプリケーションをテス...
https://www.ibm.com/developerworks/jp/cloud/library/cl-jm...
***バイナリ電文 [#pf1ea117]
-バイナリ電文を再送するだけのテストであれば、[[JMeter>Apa...
-「可変値の追跡」が必要であれば、シミュレータやスクリプト...
--バイナリ電文はC構造体や.NETオブジェクトのバイナリ表現に...
(e.g. HTTP+バイナリ、[[WCF]]-TCP/IPなど独自プロトコル+...
--このため、バイナリ電文を使用するリッチクライアント・ア...
---電文再送で負荷がかけられるような単純なサーバー機能でな...
---殆どのビジネス・アプリケーションでは、その仕組み上、単...
--結果として、バイナリ電文を使用するリッチクライアント・...
クライアントサイドのシミュレータやスクリプトなどを開発し...
**リッチクライアント(2層 C/S) [#vbe698df]
以下の様な方法で負荷テストを実行する。
***トレース ファイルの再生 [#x28ee641]
クエリを記録して再生できる。
-トレース ファイルの再生 (SQL Server Profiler)~
https://msdn.microsoft.com/ja-jp/library/ms189604.aspx
***負荷テスト・ツール [#d99ec502]
負荷テスト・ツールを使用できる。~
ただし、ワークロードの記録ができない。
→ 参考:[[Apache Jmeter > 実施 > 2層C/Sの場合>Apache Jmet...
***シミュレータやスクリプト [#f136a1e6]
また、P層 / B層(D層)が適切にクラス分割されていれば、~
[[3層C/S>#pf1ea117]]のようなシミュレータやスクリプトを作...
**[[回帰テストツール機能>#cf98b86a]] [#cac14673]
リッチクライアント系の負荷テストでは、~
回帰テストツールを利用できないか?と検討するケースは多い...
製品によっては対応していることがあるが、基本的に難しい。
-負荷テストツールを回帰テストツールとして利用することは可...
-ただし、回帰テストツールを負荷テストツールをとして利用す...
*.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 W...
-参考
--ASP.NET アプリケーションの過負荷試験を JMeter で行う。 ...
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 M...
**リッチクライアント [#b42537c8]
リッチクライアントの負荷テストは、
-Windows Forms
-WPF
-, etc.
前述の方法を参考にする。
-[[リッチクライアント(3層 C/S)>#q49fda79]]
-[[リッチクライアント(2層 C/S)>#vbe698df]]
*考慮点 [#v021badc]
**クライアントPC設定の考慮点 [#od820c25]
-ソケット枯渇を防止するために、負荷テスト・ツールのTCP/IP...
-すると多数のTCP/IP接続を使用するようになるので、以下の設...
***利用可能ポート拡張 [#ya76ffdb]
netshでdynamicport tcpの利用可能ポートを確認して拡張する...
-netsh int ipv4 show dynamicport tcp
-netsh int ipv4 set dynamicport tcp start=10000 num=55536
***TIME_WAIT状態の短縮 [#z9d46fd8]
TcpTimedWaitDelayレジストリ・パラメタを短くする。
**[[負荷分散時>NLB]]時の考慮点 [#d33e3a25]
***[[パーシステンス>NLB#i56f376b]]の考慮 [#k6633512]
-[[パーシステンス>NLB#i56f376b]]によっては偏りが生じるの...
-IPアドレスだけでの負荷分散の場合は、1台のPCに複数のIPア...
*ツール比較 [#a87c559a]
**要約 [#u8025e8b]
***[[Apache Jmeter]] [#v06d3dff]
-OSSなので
--無償である。
--公開情報が多い。
--経験者が多い。
-玄人向けのツールで、
--適切に設定しなければ、正しく負荷をかけることができない。
--また、必要に応じて「可変値の追跡」などのスクリプト修正...
HTTPとアプリケーション実装の詳細を理解している必要がある。
-逆に言えば、上記を熟知していれば、殆どのニーズに応えるこ...
***製品 [#h5551f60]
-初心者でも適用可能。
--高機能なGUIを持つ。
--可変値の追跡が自動化されている(スクリプト修正が不要)。
-ユーザ数・期間に比例して費用が発生する。
-中規模程度のテストを短期間に実施したい場合に適合。
-製品によっては、回帰テストツールの用途で利用可能な、~
UI操作の記録・再生機能を持っていることがある。
***クローズド [#v44fd2fc]
-以下のような謳い文句のものが多い。
--製品より廉価で、
--痒い所に手が届くため大規模でも適合する。
-課題は、
--結局、有償である。
--クローズドであるため、インターネット上に情報が無い。
>という点。
**回帰テストツール [#h71b8624]
***回帰テストツールの種類 [#d3546475]
以下の2つがあり、其々タイプが異なるので注意が必要。
-UI自動化による回帰テストツール
-負荷テストツール機能の延長上の回帰テストツール
***回帰テストツールでの代替 [#cf98b86a]
[[バイナリ電文を使用するリッチクライアント・アプリケーシ...
「UI自動化による回帰テストツール」を活用できないか?とい...
-マイクロフォーカス製品 - テストツール - 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/u...
しかし「UI自動化による回帰テストツール」は、多重実行など...
**参考 [#s92f654c]
***Top 5 Performance/Load Testing Tools [#if0deaa5]
Top 5 Performance/Load Testing Tools In 2017~
http://www.guru99.com/performance-testing-tools.html
-1) LoadUI Pro
-2) [[Apache Jmeter]]
-3) HP Performance Tester (LoadRunner)
-4) WebLOAD
-5) Silk Performer
-6) Rational Performance Tester
*参考 [#i2f73167]
**[[Apache Jmeter]] [#a80f2365]
**[[Azure上でのテスト]] [#o65bee5d]
**[[負荷テストのポイント - Open 棟梁 Wiki>https://opentou...
----
Tags: [[:テスト]], [[:ツール類]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>テスト]]
* 目次 [#fb1e9f15]
#contents
*概要 [#ve50755d]
負荷テストをスムーズに計画・実行できるようにコンテンツを...
*負荷テストとは? [#f7f5b7d5]
**負荷テストの概要図 [#b51346de]
単純に、Webアプリケーションだけに対して負荷をかけることも...
以下のようにネットワーク機器など含めた本番稼働構成に対す...
#ref(LoadTest.png,left,nowrap,負荷テストの概要図)
この場合、単純なリクエスト-レスポンス間の時間測定だけす...
各サーバーや機器の[[パフォーマンス カウンタ]]などのパフォ...
ボトルネックが無いか?などを調査する必要がある。
**負荷テストのスクリプト作成 [#u5419763]
-負荷テストでは、以下のような実行毎に変わる可変値を~
正規表現などを使用して抜いて引き継ぐ処理が必要になるケー...
>以降コレを「可変値の追跡」と呼ぶ。
-また、ユーザ入力やユーザ操作をシミュレートする必要になる...
***可変値の場所 [#k84b0249]
post、url、htmlなどに含まれる値。
-ヘッダ部
--Cookie
---[[Session Cookie>ASP.NET Session#r1eb9f6a]]
---[[Cookie認証チケット>認証基盤#la8f4c73]]
--QueryStringコレクション
-ボディ部
--Formコレクション
--HTML
--JavaScript
***可変値のユースケース [#ddcc5b17]
-実行タイミング次第で可変となる値。
-ランダム値が使用されていて可変となる値。
--乱数
---GUID, UUID
---Temporary Password
--DBMSの
---Timestamp値
---Identity列やSequence値
-ログイン・ユーザ毎に可変となる値。
--ログイン・アカウント
--ユーザ毎の結果セット
--結果セットから選択したデータ
***スクリプトによる可変値の追跡 [#d319cdc6]
アプリケーションの仕組み次第では、データストアを初期化す...
取得した電文の再送だけで、負荷テストが可能なケースもある...
-実行タイミング次第で可変となる値がある。
-ランダム値が使用されていて可変となる値がある。
-多重ログインが不可能な仕組みがある。
のような処理がある場合、
-可変値の追跡
-ユーザ毎の入力
が必要になる。~
このため、負荷テストでは、スクリプト作成が必要になる。
このように「可変値の追跡」が必要になる負荷テストは、[[HTT...
[[バイナリ電文を使用するリッチクライアント・アプリケーシ...
(...と言うか、実質的に汎用的な負荷ツールでバイナリ電文の...
*負荷テスト・ツールの機能 [#d73084ac]
負荷テスト・ツールは、以下のような機能を持っている。
**電文のキャプチャとスクリプトの生成機能 [#d22cbd46]
-電文キャプチャとスクリプト(修正前のテンプレート)を生成...
-専用ブラウザを持つツールと、HTTPプロキシのように動作する...
***HTTPプロキシのように動作するツール [#cfc12711]
-GUIを持たないWebAPIの負荷テストの場合は、コチラを使用す...
***専用ブラウザを持つツール [#x2914726]
-レグレッション・テスト(回帰テスト)を実行可能。
--この場合、ブラウザ上の操作手順やjavascriptなどのイベン...
--ただし、レグレッション・テスト(回帰テスト)用であり、...
-また、スクリプトを再実行して~
「スクリプト(操作)の記録時」と「テスト時」の~
値の差異を検出し、追跡が必要な可変値をサジェストする。
**スクリプトの編集機能 [#edc45f2d]
***可変値の追跡 [#v8b56993]
-[[スクリプト生成時>#d22cbd46]]に自動追跡するツールもある。
-以下のケースでは自動追跡できないので、手動でスクリプトを...
--ユーザ毎に別々の入力値が必要になる場合
--JavaScriptにより複雑なパラメータを動的に生成している場合
--クライアント側で、Cookieを生成している場合
***ユーザ毎の入力 [#gb4a5222]
準備したユーザ毎の入力値を、実行時に投入する。
***デバッグ方法 [#s9cbe074]
-下記の[[仮想ユーザ毎のスクリプト実行機能>#b383f8f9]]を使...
-エラーが発生した際は、見極めが必要になる場合がある。
--アプリケーション・エラーか?
--それ以外のアプリケーション上の問題か?
-デバッグ機能が無い場合は、再生したスクリプトを、[[Fiddle...
どこに問題があるかを確認・分析する必要がある。コレを行う...
**仮想ユーザ毎のスクリプト実行機能 [#b383f8f9]
-仮想ユーザ毎にスクリプトを実行する。
-多重度を上げるため、1 Thread = 1 Userに見立てて負荷をシ...
-この際、ユーザ入力の思考遅延時間をシミュレートする。
***エージェント機能 [#y78df37a]
1つのスクリプトやシナリオを複数のマシンを使用して負荷を...
各マシンにエージェントをインストールし、~
コントローラからエージェント経由で各マシンを制御する。
**シナリオの組み立てと実行機能 [#bf364d91]
-シナリオでは、複数のスクリプトを組合せて本番環境に近い負...
-このシナリオを組み立て、シナリオに従い仮想ユーザ毎にスク...
-シナリオの作成準備として、まず、指針となる「測定モデル」...
***測定モデル [#be971455]
「測定モデル」は、下記のマトリックスのことで、
|トランザクション種別|機能名|実行ユーザ比率|スクリプト名|h
|参照系|機能A、機能B|例:70%|スクリプトA、スクリプトB|
|更新系|機能C、機能D|例:20%|スクリプトC、スクリプトD|
|追加、削除系|機能E|例:10%|スクリプトE|
-「トランザクション種別」毎に「機能」を抽出し、
-「トランザクション種別毎」の「実行ユーザ比率」を設定し、
作成する。
***機能抽出 [#od42d5a8]
-「機能」を抽出する際、負荷テストの対象となる
--「代表的なパターンの抽出」という観点だけでなく、
--「ボトルネックの発見」という観点も含めると良い。
-例えば、
--重要な機能
--複雑な機能
--その他、性能的に問題がありそうな機能
>に、「ボトルネック」がないかどうかチェックすることは重要...
***シナリオ作成 [#jeea7b9f]
-「測定モデル」を参考にして、
--「代表的なパターン」や、
--「ポイント機能を含むパターン」を、
>シナリオとして作成する。
-シナリオ作成のポイントは、
--機能(スクリプト)の
---選定
---組合せ
--仮想ユーザ数の設定
>となる。
-シナリオの編成の例
|シナリオ|>|>|仮想ユーザ数|h
|~|参照系|更新系|追加、削除系|h
|シナリオ1(10ユーザ)|7|2|1|
|シナリオ2(30ユーザ)|14|4|2|
|シナリオ3(70ユーザ)|35|10|5|
|シナリオ4(100ユーザ)|70|20|10|
※「仮想ユーザ数」が「測定モデルの実行ユーザ比率」に必ずし...
**レポーティング機能 [#r8f289a2]
-経過時間と、仮想ユーザ数/平均レスポンスタイム/スループッ...
-[[パフォーマンス カウンタ]]などのパフォーマンス情報を収集
*アーキテクチャと負荷テスト [#o40ef1cb]
**Webアプリケーション [#w9a593c8]
HTTPはHeaderからBodyまで、全てテキスト表現となっているた...
負荷テスト・ツールを用いてスクリプトを作成し負荷テスト・...
-Webアプリケーションをブラウザから操作しながら、~
HTTP電文をキャプチャしてスクリプトを生成する。
-作成したスクリプトを実行し、~
アプリケーションが動作する(負荷をシミュレートできる)か...
-アプリケーションが動作しない(負荷をシミュレートできない...
--動的に変更される可変値の追跡を行う。
--ユーザ入力をシミュレートする。~
例えば、多重ログインができないシステムであれば、~
仮想ユーザごとに使用するユーザIDを変更するようにする。
-スクリプトを実行して、サーバーに負荷をかける。
-スクリプトを組合せ負荷テスト・シナリオを作成し実行する。
**リッチクライアント(3層 C/S) [#q49fda79]
***HTTP電文 [#g5c4b21d]
HTTP電文になっていれば、サーバー側の負荷テストが可能。
-JMeterでRESTfulなAPIをテストする | ヘッドウォータース Te...
https://utage.headwaters.co.jp/blog/?p=2517
-Apache JMeter でクラウド・ベースのアプリケーションをテス...
https://www.ibm.com/developerworks/jp/cloud/library/cl-jm...
***バイナリ電文 [#pf1ea117]
-バイナリ電文を再送するだけのテストであれば、[[JMeter>Apa...
-「可変値の追跡」が必要であれば、シミュレータやスクリプト...
--バイナリ電文はC構造体や.NETオブジェクトのバイナリ表現に...
(e.g. HTTP+バイナリ、[[WCF]]-TCP/IPなど独自プロトコル+...
--このため、バイナリ電文を使用するリッチクライアント・ア...
---電文再送で負荷がかけられるような単純なサーバー機能でな...
---殆どのビジネス・アプリケーションでは、その仕組み上、単...
--結果として、バイナリ電文を使用するリッチクライアント・...
クライアントサイドのシミュレータやスクリプトなどを開発し...
**リッチクライアント(2層 C/S) [#vbe698df]
以下の様な方法で負荷テストを実行する。
***トレース ファイルの再生 [#x28ee641]
クエリを記録して再生できる。
-トレース ファイルの再生 (SQL Server Profiler)~
https://msdn.microsoft.com/ja-jp/library/ms189604.aspx
***負荷テスト・ツール [#d99ec502]
負荷テスト・ツールを使用できる。~
ただし、ワークロードの記録ができない。
→ 参考:[[Apache Jmeter > 実施 > 2層C/Sの場合>Apache Jmet...
***シミュレータやスクリプト [#f136a1e6]
また、P層 / B層(D層)が適切にクラス分割されていれば、~
[[3層C/S>#pf1ea117]]のようなシミュレータやスクリプトを作...
**[[回帰テストツール機能>#cf98b86a]] [#cac14673]
リッチクライアント系の負荷テストでは、~
回帰テストツールを利用できないか?と検討するケースは多い...
製品によっては対応していることがあるが、基本的に難しい。
-負荷テストツールを回帰テストツールとして利用することは可...
-ただし、回帰テストツールを負荷テストツールをとして利用す...
*.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 W...
-参考
--ASP.NET アプリケーションの過負荷試験を JMeter で行う。 ...
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 M...
**リッチクライアント [#b42537c8]
リッチクライアントの負荷テストは、
-Windows Forms
-WPF
-, etc.
前述の方法を参考にする。
-[[リッチクライアント(3層 C/S)>#q49fda79]]
-[[リッチクライアント(2層 C/S)>#vbe698df]]
*考慮点 [#v021badc]
**クライアントPC設定の考慮点 [#od820c25]
-ソケット枯渇を防止するために、負荷テスト・ツールのTCP/IP...
-すると多数のTCP/IP接続を使用するようになるので、以下の設...
***利用可能ポート拡張 [#ya76ffdb]
netshでdynamicport tcpの利用可能ポートを確認して拡張する...
-netsh int ipv4 show dynamicport tcp
-netsh int ipv4 set dynamicport tcp start=10000 num=55536
***TIME_WAIT状態の短縮 [#z9d46fd8]
TcpTimedWaitDelayレジストリ・パラメタを短くする。
**[[負荷分散時>NLB]]時の考慮点 [#d33e3a25]
***[[パーシステンス>NLB#i56f376b]]の考慮 [#k6633512]
-[[パーシステンス>NLB#i56f376b]]によっては偏りが生じるの...
-IPアドレスだけでの負荷分散の場合は、1台のPCに複数のIPア...
*ツール比較 [#a87c559a]
**要約 [#u8025e8b]
***[[Apache Jmeter]] [#v06d3dff]
-OSSなので
--無償である。
--公開情報が多い。
--経験者が多い。
-玄人向けのツールで、
--適切に設定しなければ、正しく負荷をかけることができない。
--また、必要に応じて「可変値の追跡」などのスクリプト修正...
HTTPとアプリケーション実装の詳細を理解している必要がある。
-逆に言えば、上記を熟知していれば、殆どのニーズに応えるこ...
***製品 [#h5551f60]
-初心者でも適用可能。
--高機能なGUIを持つ。
--可変値の追跡が自動化されている(スクリプト修正が不要)。
-ユーザ数・期間に比例して費用が発生する。
-中規模程度のテストを短期間に実施したい場合に適合。
-製品によっては、回帰テストツールの用途で利用可能な、~
UI操作の記録・再生機能を持っていることがある。
***クローズド [#v44fd2fc]
-以下のような謳い文句のものが多い。
--製品より廉価で、
--痒い所に手が届くため大規模でも適合する。
-課題は、
--結局、有償である。
--クローズドであるため、インターネット上に情報が無い。
>という点。
**回帰テストツール [#h71b8624]
***回帰テストツールの種類 [#d3546475]
以下の2つがあり、其々タイプが異なるので注意が必要。
-UI自動化による回帰テストツール
-負荷テストツール機能の延長上の回帰テストツール
***回帰テストツールでの代替 [#cf98b86a]
[[バイナリ電文を使用するリッチクライアント・アプリケーシ...
「UI自動化による回帰テストツール」を活用できないか?とい...
-マイクロフォーカス製品 - テストツール - 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/u...
しかし「UI自動化による回帰テストツール」は、多重実行など...
**参考 [#s92f654c]
***Top 5 Performance/Load Testing Tools [#if0deaa5]
Top 5 Performance/Load Testing Tools In 2017~
http://www.guru99.com/performance-testing-tools.html
-1) LoadUI Pro
-2) [[Apache Jmeter]]
-3) HP Performance Tester (LoadRunner)
-4) WebLOAD
-5) Silk Performer
-6) Rational Performance Tester
*参考 [#i2f73167]
**[[Apache Jmeter]] [#a80f2365]
**[[Azure上でのテスト]] [#o65bee5d]
**[[負荷テストのポイント - Open 棟梁 Wiki>https://opentou...
----
Tags: [[:テスト]], [[:ツール類]]
ページ名: