JMeterを使ってServiceNowでロードテスト
これはウイングアーク Agile and DevOps Stories のAdvent Calendar 2019、第7弾(2019年12月10日)の投稿です!
はじめまして!ウイングアークでSVF Cloudの検証をやっている今宿(いましく)と申します。どうぞよろしくお願いします<m(__)m>
この時期クリスマスに向けたイベントが楽しみですよね!
早速ですが本題に入りたいと思います。
今回ははじめてJMeterを使ってロードテストをやってみた体験談を書いてみます。
SVF Cloud
ウイングアークでは帳票出力のクラウドサービスとしてSVF Cloudを提供しています。SVF CloudではWebAPIを用意しているため、いろいろなサービスと連携することが可能になっています。
そんな中、クラウドプラットフォームのNow Platform(ServiceNow)との連携を強化することになりました。
Now Platformの詳しい説明はここでは省略しますが、Salesforceやkintoneのように業務用アプリケーション(特にIT部門向け)をクラウド上に構築することができるプラットフォームをSaaS またはaPaaSとして提供するクラウドサービスです。
Salesforceやkintoneとほぼ同等の機能を持ち合わせながら、より社内管理用のアプリケーションに特化した機能を持ち合わせているとのことです。
SVF Cloud for ServiceNow
SVF CloudにはWebAPIが提供されているので、そもそもNow Platform上でSVF CloudのWebAPIを呼び出すように構築することで帳票出力機能の実装は可能なのですが、より簡単にできるようにNow PlatformとSVF Cloudを繋ぐモジュール(SVF Cloud Adapter for ServiceNow)を開発し、連携を強化しています。
このモジュールはNow Platform上に入っているデータを利用してSVF Cloudへ帳票出力の指示を出すようなものです。
このウイングアークが独自開発したモジュールをNow Platformのすべてのユーザーが利用できるようにするためには、ServiceNow Storeに公開される必要があり、Storeの認定プロセスを通過する必要がありました。
※その前に、開発パートナーの契約が必要です。
Certification
認定プロセスを通過するためには、インストレーションマニュアルや広告情報、検証内容についてのドキュメントを提出する必要があります。
ここで検証内容についてのドキュメントについては、検証チームで考えることになりました。内容としては大きく3つありました。
- 機能テスト
- パフォーマンステスト
- ロードテスト
機能テストはモジュールに実装されている機能の動作を確認するテストケースを実施、記載することでOKでした。
パフォーマンステストは処理時間を計測しウイングアークが想定した処理時間以内であれば問題ないことを確認するテストケースを実施、記載しました。
最後にロードテストですが、同時に複数のユーザー(最大50ユーザー)がNow Platformにログインし帳票出力を実行するテストを実施する必要がありました。そのため、多重でログインして帳票出力の処理ができるツールJMeterを利用することを選択しました。
JMeter
JMeterを利用するのは初めてであったので、下記のページなどを参考にまずはインストールしていきました。
JMeterに関してはたくさん情報があり、スムーズにインストールし利用するところまで可能でした。ただし、Now Platformを利用した場合についてはほとんど情報がなく苦労しました。
JMeterでは処理毎にスクリプトを記載していきます。大きく下記の処理をスクリプトで記載することを考えました。
- Now Platformにログイン
↓ - データの詳細ページを表示
↓ - ボタンを押して帳票出力
いきなりつまずいたのがログインです。今回はログイン処理にフォーカスしていきたいと思います。
通常のログインURLは
https://個別の名前.service-now.com/navpage.do
のような感じです
このURLに対してログインのリクエストを送っても実際はログイン処理はされません。さあどうする!試行錯誤して原点回帰すると
https://個別の名前.service-now.com/login.do
を試すとシンプルなログイン画面が表示されます。
※今回はNewYork バージョンで実施していますが、
一つ前のMadrid バージョンでは /cms/clean+login.do を利用しました。
これだ!ラッキーでした!
さあ次の難関です。JMeterでスレッドグループの下にログイン用のHTTPリクエストのサンプラーを作成し設定しました。ログインの際にどんなパラメーターを渡すのか問題です。
Now Platformにはもちろん他のシステムとの連携を考慮しているためシングルサインオンの入り口を用意しているはずという想定で、Communityを探しまくり以下のような結論に至りました。
パラメータ:sysparm_goto_urlでログイン直後に表示されるページを指定しているのですが、今回はその時点でログインしているユーザーのセッション一覧を表示するようにしました。
また、パラメータ:user_nameとuser_passwordには、${ACCOUNTID}と${PASS}を指定しています。これは、50ユーザーがほぼ同時にログインするシナリオを考えていたので、ファイルにユーザー名とパスワードを記載しておき、読み込むように設定しています。
ファイルを読み込む方法は下記のページなどを参考にしています。
これでやっとログイン処理が問題なく動作しました。
続きは次の機会にお伝えしたいと思います!それでは!