2020年1月29日2020年1月31日ThousandEyesは、アプリケーション監視向けの新しいシンセティック(合成)トランザクション機能をリリースしました。WebDriverベースのトランザクションテストは100%ネイティブのJavascript対応で、記録と実行にChromiumブラウザーを使用するため、より正確で柔軟かつ一貫性のあるアプリケーションテストを作成できます。IDEを備えた使いやすいレコーダーが利用可能で、容易に詳細なユーザーワークフローを構築できます。CDプロセスに統合できます。Sharepoint監視を例として、新しい機能を詳しく見ていきます。現在ご利用のクラウドおよびSaaSアプリケーションの可視性を高めるための強力なマルチレイヤ統合監視テストを作成するベストプラクティスをご紹介します。#1:クリックではなくワークフローを考えるまず、トランザクションテストを作成する際には、ユーザーがアプリ上で操作するワークフローに焦点を合わせます。これは「クリック確認」によるテスト手法とは対照的です。このシンセティック(合成)アプリケーション監視の目的は、すべてのリンクやボタンをクリックして、これらが機能していることを確認することではありません。(これは通常QAチームの仕事となります。CDプロセスで使用できないと言っているわけではなく、ここでの目標は、一般的な一連のユーザーワークフローを複製して、ユーザーのアプリケーションレベルの体感品質が低下している可能性があるタイミングを特定できるようにすることです。それを念頭に置いて、ターゲットとする主なユーザーワークフローを特定することから始めましょう。この例では、一般的なユーザーフロー、つまりSharepointにログインして、ファイルをダウンロードすることをターゲットにします。ユーザーフローは次のようになります。Onlineにアクセス–>ログイン–>ドキュメントページを参照–>ドキュメントを選択–>ダウンロードこのような一般的なユーザーフローの作成により、ユーザーのデジタル体感品質に影響を与える可能性のあるすべてのインフラや相互接続されたサービスを通じて確実にテストを実行できます。#2:Javascriptを恐れない-まずはレコーダーからスタート!確実で信頼性の高いトランザクションスクリプトを作成するには、ネイティブのJavaScriptベースのトランザクションエンジンの利用が最良の方法です。UIベースのソリューションの方が簡単に思えるかもしれませんが、途中の処理で何かが機能しない場合、そこで行き詰まってしまうことが多くあります。ネイティブJavascriptは、必要に応じて調整が行える柔軟性とパワーを持ち備えています。一部の人にとってJavascriptは馴染みのないものかもしれません。レコーダーを使ってまずは始めてみましょう。レコーダーは、Web上の操作に基づいて、必要なJavascriptコードを生成するスタンドアロンのトランザクション・スクリプトレコーダーおよびIDEです。Sharepoint上でのワークフローに沿って、ターゲットURL(「https://...」)を組み込みのChromiumブラウザーに貼り付け、「記録」をクリックし、Webサイトを操作することから始めます。完了したら「停止」をクリックします。レコーダーは、記録されたユーザーアクションに基づいて、Javascriptトランザクションを作成します(図1)。レコーダーは、人間が読めるテキストコメントを作成し、Javascriptの初心者でもコードの各行が実際に何をしているかを簡単に理解できるようにします。ログイン情報を入力するSharepointトランザクションスクリプトの抜粋の1つが下記になります。By.id('i0116'));また、credentials.getの利用により、パスワードを自動的にキャプチャし、組み込みの資格情報ストアに保存します。この資格情報ストア(図2)は、トランザクションのスクリプト内でパスワードの入力が必要な場合に、プレーンテキストとして使用せずに安全な秘密のリポジトリとして利用が可能です。これは、セキュリティ上とても重要なポイントとなります。レコーダーは、必要なスキャフォールディングコード(「インポート」など)と、「click」、「typeText」、「isElementClickable」、「simulateHumanDelay」などの便利な機能を生成し、信頼性の高いトランザクションスクリプトが簡単に作成されます。#3:Javascriptを採用(レコーダーを継続利用)初めての方には、レコーダーはとにかく使い易い最適なツールですが、出来れば早い段階で実際に手を動かしてJavascriptによるコーディングもお試しください。レコーダーはIDE(統合開発環境)としても機能し、構文エラーの強調表示、インテリセンスのようなヒントや入力候補を示すコード補完機能、オートコンプリート、デバッグ用のコンソール出力などの便利なツールを備えています。トランザクションコードの信頼性を高める最も効果的な方法の1つは、トランザクションスクリプトがWebページ上の要素を見つける最適な方法を選択することです。デフォルトでは、レコーダーはエレメントのIDを使用します(IDがある場合)。365用のトランザクションスクリプトからの次のコードは、idSIDButton9というIDを持つページ上の要素を識別します(図3)。通常、IDは一意であるため、このアプローチはベストプラクティスといえます。クラス、要素リンクテキスト(linkText)などの構築が含まれます。Sharepointの例では、記録されたトランザクションを定期的に実行すると、「id_354」要素([ダウンロード]ボタン)が見つからないというエラーが定期的に発生しています(図4)。これは、ページの読み込みごとに要素IDが動的に生成されるためです。組み込みのChromiumブラウザーでChrome開発ツール(「インスペクト」を右クリック)を使用して、「ダウンロード」ボタンのセレクターを探すことができます(図5)。“download”である画像が表示されています。これは、「ダウンロード」という名前が一意であり、動的に変更される可能性が低いため、信頼できる識別子の良い例です。レコーダー内で変更されたトランザクションスクリプトを再実行すると、問題は解決し、スクリプトを問題なく繰り返し実行できます。適切なCSSおよびその他のセレクターを識別することは、確実なトランザクションスクリプトを作成する最も強力な方法の1つです。Gateのシートは、一般的なセレクタレシピを覚えておくのにとても便利です。選択スクリプトを変更は、Javascriptによるコーディングの活用法の1つにすぎません。JavaScriptネイティブエンジンのパワーを活用するもう1つの例は、ThousandEyesが提供する組み込みヘルパー関数の一部を使用することです。Sharepointの例でdownloads.waitForDownload(...)関数を使用して、選択したファイルのダウンロードが実際に完了するまで待ちます。これを行うには、downloadモジュールをインポートし、スクリプトの最後に呼び出しを追加するだけです。コードスニペットは次のとおりです。1000);コードを微調整しながら改良する作業には、レコーダーからトランザクションスクリプトを直接実行できるため、すべてが期待どおりに機能するまで何度も繰り返し確認できます。他のツールとは異なり、ThousandEyesはクラウドエージェントやエンタープライズエージェントからトランザクションスクリプトをそのまま実行できるため、あらゆる監視ポイントからネイティブなJavascriptアプローチが可能です。そのため、振る舞いに一貫性があり、期待どおりの結果を得ることができるのです。#4:アプリケーションレベルの体感品質の可視性を高めるためにマーカーを活用エンドユーザーのアプリ体感品質を測定する際の課題の1つは、ユーザーが操作する一般的なワークフロー内のさまざまな場所で問題が発生する可能性があることです。マーカーは、ワークフロー内の主要なタスクを識別しその処理時間の測定が可能なため、ある特定のタスクに時間がかかりすぎる場合などの調査に有効です。driver.stopを使用して追加できます。適切なマーカーの設定は、有用なトランザクションスクリプトを作成する上で最も重要な手順の1つです。マーカーを追加しすぎると、意味のあるパフォーマンストリガーを作成できなくなり(ノイズが多すぎる)、一方少なすぎると、ユーザーワークフロー内の重要なステップを識別・測定できなくなります。作成を検討すべき基本的なマーカーは次のとおりです。driver.get呼び出しの前後にマーカーを作成して、サイトの初期ページ読み込み時間を測定できるようにします。「ログイン」-最初のページの読み込み後にマーカーを開始し、最後のログイン(パスワード)ボタンがクリックされた後にマーカーを停止します。「バックエンド」-ログインが発生した後に開始し、ページが読み込まれたとき/最終的なユーザーアクションが完了したときに終了するマーカーを作成します。アプリケーション個別の使用方法に関連するユーザーアクションのマーカーを作成します。Sharepointのダウンロード例では、Sharepointの一般的な使用方法である、ファイルを検索してダウンロードするユーザーアクションの前後にマーカーを作成します。図6:マーカーを活用して、よりきめ細かいデジタルエクスペリエンスの測定値を取得マーカーに関する役立つヒントの一つは、デフォルトのスクリプトでは、ユーザーの「クリック」などのイベントがページの読み込みにつながると、ページが読み込まれるまでイベントが返されないため、マーカーのタイミングが予期せぬものとなる可能性があることです。Sharepointログインはそのような例の1つです。Load」マーカーを開始してからclick()の呼び出しに進むようにコードを簡単に調整できます。マーカーの配置後は、特定のマーカーにアラートを作成できます。「バックエンドページの読み込み」に時間がかかりすぎた場合のアラートを作成できます。#5:トラブルシューティングを高速化するためのスクリーンショットの利用もう1つのベストプラクティスは、スクリーンショットを活用して、エンドユーザーの目に実際に見えているものを定期的にキャプチャすることです。することで、問題をより迅速に特定し、Webの動作をよりよく理解できます。driver.takeScreenshot()を呼び出すことにより(またはスクリーンショットアイコンをクリック)、トランザクションスクリプトの任意の場所でエンドユーザーに表示されるものと同じスクリーンショットを生成・取得できます。最初にページを読み込んだ直後にスクリーンショットを撮ることを強くお勧めします。これにより、エンドユーザーがログインした直後に見ているもの(つまり、サービスの最初の状態)を常に視覚的に記録できます。これは、問題を迅速に修正するのに非常に役立ちます。Webサイトの停止では、スクリーンショットを使用した簡単なトランザクションテストから、SSL設定の問題が原因でユーザーがサイトとのHTTPS接続を確立できないことがすぐにわかりました。Syntheticsエンジンは、トランザクションエラーまたはタイムアウトが発生するたびにスクリーンショットを自動的に生成します。これは、問題を迅速に解決し、トランザクションスクリプトの動作を最適化するためにとても役立ちます。「Sharepoint」向けのトランザクションスクリプトで定期的にタイムアウトが発生していた例では、自動キャプチャのスクリーンショットを見ると、既存スクリプトでは処理できなかった想定外のポップアップが表示されていることがわかりました(図7)。図7:自動的キャプチャのスクリーンショットにより、想定外のポップアップを発見これは、ウォーターフォール情報から見つけ出すことは事実上不可能な事象でした。このスクリーンショットにより、ポップアップを確認しながらトランザクションコードを更新し状況に応じて修正が可能です。スクリーンショットが単なる美しい写真ではなく、デジタルエクスペリエンス監視ツールキットの貴重なツールである理由のほんの一例です。レコーダーは、トランザクションスクリプトの作成を簡単に開始できる素晴らしいツールです。常にスクラッチからスクリプトを作成する必要はありません。トランザクションテストの構築開始後は、チーム全体で共通コードの再利用を開始することができます。チーム全体で利用可能な共通機能のライブラリを作成すると、信頼性の高い強力なトランザクションテストをより迅速に構築できます。ログイン、ホームページからサイト上のエンドユーザーポータルへのブラウジングなど、Webサイトの一般的なユーザーフロー用の関数や、クリックの再試行、ランダムなポップアップのクローズなどの基本レベルのヘルパー関数などです。GitHubのトランザクションサンプルをご参照ください。こちらでは、資格情報の利用、ファイルのダウンロードの待機、タブの切り替え、ポップアップのクローズなどの例が含まれています(図8)。図8:GitHubのThousandEyesトランザクションコードの例この種のモジュール方式を採用することにより、開発者指向のチームメンバーは再利用可能なコードの構築、テスト、最適化に専念でき、その他のメンバーは個別のアプリケーションに特化したトランザクションスクリプトの構築に専念できます。他のすべてのアプリケーションコードと同様に、GitHubなどのリポジトリでトランザクションスクリプトのバージョン管理を行うベストプラクティスの提供も可能になります。CDプロセスとすべてを統合できます。満足のゆくトランザクションスクリプトの完成後は、レコーダーからThousandEyesに直接簡単にエクスポートできます。Sharepoint向けのトランザクションテストが出来上がりました。多くの大企業の場合、何らかの形のシングルサインオン(SSO)を使用していることが多く、このSSOがトランザクションテストを実行する上で障害になる可能性があります。場合によっては、SSOプロバイダーが対話型ログインにリダイレクトし、他のログインと同様にトランザクションテストで簡単に処理することができる一方、プロバイダーがKerberosまたはNTLMを必要とする場合があります。幸いなことに、トランザクションテストのセットアップの[認証設定]セクションに資格情報を追加するだけでThousandEyesはこれらを自動的に処理できます。資格情報が追加されると、ThousandEyes合成エンジンがSSO認証を自動的に処理します。これにより、特別なSSO関連のコードを追加する必要がなくなるだけでなく、トランザクションスクリプトがエンドユーザーの実際のトランザクションステップをより適切に表すようになります。365トランザクションテストを実行すると、シンセティック(合成)テストとエンドツーエンドのネットワークおよびインターネットの可視性と関連付けることの利点がすぐにわかります。実際の例として、北米にある複数の監視ポイントからSharepointトランザクションテストを実行し、エンドユーザーアプリケーションのパフォーマンスに影響を与えた比較的切り分けが困難なネットワークの問題を迅速に特定することができました。ご覧の通り最初のページの読み込み時間には問題はありませんでしたが、Sharepointの「共有ドキュメント」ページを読み込むためのマーカー時間は、ボストンからは他の場所の2倍の長さでした(図9)。トランザクションベース以外のテストまたはウォーターフォール分析では、この問題は特定されませんでした。これは、主要なアプリケーションに対してトランザクションテストを実行することを強くお勧めする理由の良い例です。従来のシンセティック(合成)ツールでは、この時点で立ち往生し、アプリ・サーバー・ネットワークチームなどの複数部署の担当者を集めた会議を開催するしかありませんでした。ネットワーク情報とエンドツーエンドのパスの可視化と完全に相関したThousandEyesでは、ボストン地域のMicrosoftエッジネットワークのルーティングに関連するネットワーク遅延がファイルダウンロード遅延の主な原因であることがすぐにわかりました(図10)。重要なポイントとしては、ここで検出されたネットワーク遅延は、通常のネットワークテストでアラート通知されるほど大きなものではなかったという事実です。これは、今日のクラウドおよびSaaSベースのアプリケーションで最適なデジタルエクスペリエンスを確保するためには、アプリケーションとネットワークの可視性の連携が非常に重要である理由の良い例です。まとめこのブログでは、ThousandEyesレコーダーを使用してJavaScriptネイティブトランザクションテストの作成をすぐに開始できることを学びました。ベストプラクティスとしてご紹介した最適化の例でコードを調整し、組み込みライブラリの活用によりファイルのダウンロード、マーカーやスクリーンショット機能を追加、最終的に1つのテストでアプリケーションとネットワークの可視性を統合する利点を確認しました。ThousandEyesをご利用のお客様は、新しいトランザクションテストタイプがテスト設定画面に表示されますので、今すぐお試しください。ThousandEyesをまだご利用でないお客様は、是非無料トライアルにてお試しください。