Azure Load Testing で Web Driver Sampler プラグインがサポートされたので ChromeDriver で使ってみた

2024.01.30

いわさです。

先日の Azure Load Testing のアップデートで JMeter の Web Driver Sampler プラグインがサポートされました。

これまでは Azure Load Testing で JMeter プラグインをサポートしていたのですが、Web Driver の実行はサポートされておらず、実行しても Web Driver が見つからずに実行が出来ませんでした。

今回サポートされたのですが、Microsoft 公式ドキュメントでは手順が見つからず少し試行錯誤して実行出来たのでその様子を紹介します。

Web Driver Sampler プラグインとは

先に予備知識のおさらいですが、そもそも Web Driver Sampler プラグインとは何なのか整理しておきます。

JMeter の基本的な使い方としてはリクエストを送信し、レスポンスタイムやステータスを修正する形です。
一方で昨今の Web アプリケーションではアプリケーションの実行内容のうちクライアントサイドで実行される割合が増えています。
そのためバックエンド API の応答性も重要ですが、E2E での処理時間も気にする必要があります。

Web Driver Sampler プラグインは JMeter の Sampler で Web ドライバーを使えるようにして、ユーザー操作のシミュレーションを行った際の応答性を評価出来るようにしたものです。

使い方としては HTTP Request Sampler などと併用する形で、バックエンドを高負荷状態とした状態で、Web Driver Sampler でユーザー視点での応答性をチェックするような使い方をします。

ローカル JMeter で使ってみる

Azure Load Testing で使う前にローカルで使ってみます。
次の公式チュートリアルが導入の参考になります。

プラグインのインストール後、ドライバー構成と Web Driver Sampler を追加してスクリプトを記述すれば OK です。
プラグインマネージャーからインストールを行います。

Selenium/WebDriver Supportをインストール後、Sampler や Config Element に Web Driver のコンポーネントが追加されています。

あとは前述した方法で設定して実行するだけです。ローカルで実行にするにあたって事前に対象のドライバーをインストールしておく必要があります。
今回は ChromeDriver をインストールしてクラスメソッドホームページへアクセスさせてみました。(ローカルのブラウザバージョン以上のドライバーをインストールする必要があります)

Azure Load Testing で Web Driver Sampler プラグインを実行してみる

続いて、Azure Load Testing で Web Driver Sampler プラグインを使ってみましょう。
まず、Azure Load Testing では JMeter プラグインがサポートされています。

jmeter-plugins.orgのプラグインを使いたいだけであれば JMeter スクリプトをそのまま使うことが出来ます。
カスタムプラグインを使っている場合だと、JAR ファイルも併せてアップロードする必要があります。
今回は前述のタイプのプラグインになるので、先程ローカルで使った JMeter スクリプトをそのままアップロードしてみました。

ChromeDriver はどうするべ?と思ったのですが公式ドキュメントに Web Driver Sample についての記述は特にありません。まずは無視してそのまま進めめてみることにしたのですが、テスト作成時にエラーになりました。

エラーの詳細を表示してみます。

Test script is invalid. When you use a Web Driver Sampler, the uploaded JMeter script needs to contain at least one sampler of another type.

ChromeDriver がないぞオイ。と言われたのかと思いきや、Web Driver Sampler 単独だとダメで、他の Sampler と併用せよとのこと。

HTTP Request Sampler を追加して再び JMeter スクリプトを Azure Load Testing へアップロードしました。

そうするとアップロードに成功しました。
これで一旦はテスト実行が出来る状態となりました。成功するかはわからないですが実行してみましょう。。

少し待つとテストが完了しました。結果を確認してみるとなんと正常に終了しています。
結果レポートページではサンプラーごとの統計情報を確認することが出来るのですが、HTTP Request と Web Driver が実行されていることが確認出来ます。

HTTP Request では短時間でレスポンスが取得出来ていますが、Web Driver からは数秒時間がかかっていることがわかりますね。いいぞ。

Web Driver 構成なしだと無視される

ChromeDriver 周りが謎だったので試しにドライバー構成を削除してテストを更新してみることにしました。
JMeter 上だと次のような感じです。

JMeter スクリプトの検証上は正常に処理され、テストを更新することが出来ました。

しかし、テストを実行してみるとサンプラー統計で HTTP Request Sampler しか実行されていないことがわかります。
ドライバー構成が存在していない場合は Web Driver Sampler が無視されていますね。

ちなみに、ドライバー構成のドライバーパスを指定しなかった場合も同じ挙動となっています。

適当なドライバーパスを指定すると動かない

Internet Explorer のドライバー構成を追加し、それっぽいドライバーパスを指定してみました。
テストを時刻してみるとこちらもサンプラーが実行されない結果となりました。

テストのログを見てみると IE 用ドライバーが見つからないと出力されています。

おそらくですが、chromedriverはデフォルトで Azure Load Testing 上にインストールされていそうですね。
公式ドキュメント上に記述がないので推測でドライバーパスを指定して試す必要があるのですが、デフォルトのパス値で動きそうな気配を感じます。IE はダメでしたが。

さいごに

本日は Azure Load Testing で Web Driver Sampler プラグインがサポートされたので ChromeDriver で使ってみました。

ChromeDriver 動きましたね。バージョンとかまではわからないのでもう少し検証しても良さそうですが、とりあえず動いたということで一安心です。
IE はまぁいらないかなという感じなのですが、Firefox、Edge あたりも動かしたいところです。

公式ドキュメント上で既定の設定値などが紹介されていると、導入が楽になる人が多いだろうなと思いました。