ゲームデバッグ
LABメインページに戻る
パフォーマンステストにおける機械学習の活用
パフォーマンステストの課題を克服するための機械学習技術の導入
パラメータの定義
https://www.qualitestgroup.com/white-papers/lets-perform-right-performance-testing-planning-overcoming-challenges/
謝辞:
本ホワイトペーパーで使用したMLアルゴリズムとパフォーマンステストデータについて、技術的な支援をしてくださったChristy Jacob氏とNikhil Guddati氏に感謝いたします。
要約
機械学習は、ソーシャルメディアや製品推奨など様々な分野で普及していますが、本ホワイトペーパーでは、パフォーマンステスト分野における機械学習アルゴリズムの導入に焦点を当てます。
概要:教師あり学習は機械学習の手法の1つで、トレーニングデータセットを用いて、与えられた入力に対して出力を行うことで学習したり、その入出力間の関係性を確立したりする機能があります。この学習機能はさらに、テストデータから新しい入力に対する出力予測にも用いられます。
回帰は、データセットから得られた変数間の関係に基づいて目標値を予測するために使用される教師あり学習タスクの一種です。
テスト環境は、パフォーマンステストの重要な課題の一つです。
システムの性能特性の実際の環境での使用に伴うリスクを回避するためには、パフォーマンステスト環境を本番環境と同じ容量で構成することが理想的です。しかし、予算の関係で専用の環境を用意できないことが多く、また、セキュリティ上の理由から本番環境でのテスト実施を見送る業界もあります。その結果、テスト担当者はパフォーマンステストのために縮小された環境を使用することになります。ただし、これらのテストにはリスクが伴います。
このような課題を解決するために、私たちは機械学習を活用しております。本ホワイトペーパーでは、その成果をご紹介します。
パフォーマンステストに機械学習を導入するために、MLモデルを作成し評価するまでの段階を説明します。
まず始めに、インプット(入力)を特定し、期待されるアウトプット(出力)を定義しなければなりません。応答時間は、パフォーマンステスト中に注意深く観察する必要のある重要なパラメータです。そこで、この例では、総サンプル数、送信バイト数、受信バイト数、およびリクエスト名を入力として、ページ/リクエストの応答時間を予測します。
出力(ラベル)応答時間
入力 (機能)スレッド、送信バイト数、受信バイト数、リクエスト/ページ
トレーニングデータの作成
最初にして最も重要なステップは、問題提起に対応する関連データを収集することです。入力データは、制御されたテスト環境でJMeterを使用してパフォーマンステストを実行することで作成しました(サーバーのパフォーマンスや追加のネットワークトラフィックによるノイズを排除するため)。
これらのテストから作成されたパフォーマンスレポートには、以下のデータが含まれています。送信バイト数、バイト数、スレッド数、リクエスト名、および応答時間。
以下に示すパフォーマンステストでは、各ページのリクエストに対して490の記録が作成されました。
MLモデルの選択
MLモデルの学習プロセスでは、学習データから学習するMLアルゴリズム(学習アルゴリズム)を割り当てます。MLモデルとは、その学習過程で生まれた成果のことです。
私たちは、機械学習ライブラリをインストールし、そこにパフォーマンステスト・データをアップロードしました。ライブラリは、計算量や設定を変えた様々なアルゴリズムを評価し、最も性能の高いモデルを特定しました。
今回のテストデータでは、以下のアルゴリズムが評価されています。最も高性能だったのは「FastTreeRegression」で、精度は82.3%になりました。
モデルの評価
モデル評価では、将来の(未知の/サンプル以外の)データに基づいてモデルの汎化精度を推定することを目的としています。MLモデルが決まったため、これを使って(モデルの学習には使われなかった)新しいデータセットに対する応答時間の予測を行いました。MLモデルの結果を実際のデータと比較したところ、その偏差は許容範囲内でした。
機能(入力) ラベル(出力)
アルゴリズムによる予測では、実際の値との乖離がミリ秒以内に収まっています。以上の通り、本実験では実際の運用環境のレプリカを作成することなく、アプリケーションの性能を評価することに成功しました。
アプリケーションの負荷による挙動はそれぞれ異なるため、最適なモデルを作成するにはパフォーマンステストで収集したデータが必要になります。またアプリケーションの挙動をもとに、どの部分のデータが最も正確な結果をもたらすかを推定する必要があります。そのため、より良い予測を行うためには、一連のテストデータを作成することが不可欠です。
参考文献
https://www.agileconnection.com/presentation/machine-learning-and-data-science-quality-and-performance-engineering
https://www.datasciencecentral.com/profiles/blogs/performance-testing-training
https://data-flair.training/blogs/machine-learning-applications/