合成テストのサンプル:ユーザーフローテスト、APIの検証、カスタムメトリクス、ログ収集、その他

Observability Jeremy Hicks

合成テストとは?どこから始めればよいか?

Web資産やAPIの合成テストをゼロから構築するのは難しそうだと思われる方も多いでしょう。「何をテストすればよいのか?」という漠然とした問いに始まり、その後直ちに「どうすれば実際にそれを実行できるのか?」という実践的な課題に直面することになります。それを解決するには、DOMJSONレスポンス内のさまざまな要素を精査する方法を習得する必要があるでしょう。しかし心配は無用です。このような合成テストの方法を身につけるもっと楽な方法があります。Splunkがこれまで提供してきた、ドキュメントLanternの記事ブログビデオに加えて、合成テストの構成をコードの形で共有するための場所を用意しました。それが、GitHubのObservability Content Contribオープンソースリポジトリのintegration-examplesディレクトリです。

合成テストとはどのようなテストなのでしょうか?これらのサンプルから何が得られ、それをどのように活用できるでしょうか?合成テストの実行ツールを便利なボットとしてクラウドで使用すれば、そこにあるデータをスクレイピングして検証することができます。先ほど紹介したサンプルには数多くのAPIテストやリアルブラウザテストが含まれています。これらは、任意のウェブページやAPIからデータをスクレイピングして活用するための、一般的な作業パターンのテンプレートを提供するものです。

ここに含まれるAPIテストには、GETによる情報の取得、取得したJSONデータの変換、APIテストの後続ステップへのPOSTによるデータ送信など、さまざまな処理を実行するためのサンプルが用意されています。これらのテストサンプルでどのようにJavaScriptを使用してJSONのペイロードを解析および構築しているかという点にご注目ください。リアルブラウザテストには、セレクターとJavaScriptを使ってページ間を移動したり、さまざまな要素をクリックしたり、さらにはユーザーのチェックアウトフローをエミュレートしたりできるサンプルが用意されています。ご興味のある方は、ぜひ続きをお読みください。

APIテスト:APIフローの自動化と検証

APIの健全性を継続的に監視することは重要です。エンドユーザーとバックエンドサービスは両方とも、APIの安定性と可用性に依存しているからです。APIテストを実行すると、遅延の問題、設定ミス、予期しない応答の変化を予測し、ユーザーに影響が及ぶ前に問題を見つけ出すことができます。

また、APIレスポンスには多くの場合、オブザーバビリティテレメトリとして利用できるデータがカスタムメトリクスやログの形で含まれています。APIテストからそれらのデータを監視ツールやログ収集ツールに引き渡せば、オブザーバビリティの精度とアラートの実用性を高めることができます。必要なデータを(サードパーティまたは内部の)APIエンドポイントから取得できる場合は、APIテストを使ってエンドポイントからスクレイピングし、レポートを作成することも可能です。APIテストをこのような方法で利用すれば、トークンの期限切れ、サービスの可用性、サードパーティの依存コンポーネントの状態といった必須要素など、APIのレスポンスやヘッダーに含まれている事実上あらゆる情報を追跡できます。APIテストは、オブザーバビリティツールのコンポーネントとして、思いのほか多用途に活用できるのです。

サンプルに含まれる以下の3つのAPIテストでは、APIへのクエリーを実行し、受信したJSONを解析し、特定の応答データを適切なJSONに加工して次のAPIエンドポイントに送信するというのが主な処理内容となります。ちなみにこの例では、Splunk PlatformまたはSplunk Observability Cloudへの取り込みが最終APIエンドポイントになっています。

  1. organizationエンドポイントにクエリーを実行し、トークン期限切れメトリクスを取り込むSplunk Observabilityの「/organization」APIに対してクエリーを実行し、7日または30日以内に期限切れになるトークンがあれば、Splunk Observability Cloudのメトリクスとして取り込むサンプルです。お分かりのように、このテストでは、Observability Cloudのオブザーバビリティを向上させるために、Observability CloudでObservability Cloudを監視しています。

  2. サードパーティの依存コンポーネントに関して、statusエンドポイントにクエリーを実行し、メトリクスとして取り込むCloudFlareとGitHubの両方の「status」ページに対してクエリーを実行し、JavaScriptでレスポンスを解析し、概要レベルのシステム停止メトリクスをSplunk Observability Cloudにメトリクスや属性として引き渡すサンプルです。システム停止が顧客やデプロイプロセスに影響する可能性の予測に役立てることができます。

  3. サードパーティの依存コンポーネントに関して、statusエンドポイントにクエリーを実行し、ログとして取り込むOpenAIの「status」エンドポイントへのクエリーを実行し、JavaScriptで適切なJSONペイロードを作成してSplunk HECエンドポイントに送信してログとして取り込むサンプルです。LLMの使用に影響を与える可能性のあるシステム停止や通信の問題を検出するためのデータポイントを提供できます。

さらに、GraphQLへのリクエストを作成し、GraphQLのレスポンスの出力を検証する GraphQLに特化したAPIテスト のサンプルがあります。このGraphQLサンプルは、リクエストペイロードを作成し、レスポンスの構造を検証する実例としてきわめて有用です。

これらのAPIテストでは、使用される資格情報の種類を問わずシークレットを安全に保管するために、グローバル変数を使用しています。これによって変数名を参照するテスト構成も可能になり、移植が容易になると同時に「コードとしての構成(CaC)」が実現します。資格情報が変更されてもテストを一つひとつ更新する必要はなく、1か所の更新だけで済むのも利点です。

テスト 図1-1. JSONの処理が肝心です。JavaScriptが、レスポンスデータから取り込み可能なカスタムメトリクスまたはログを取り出す処理を担います。

ブラウザテスト:ユーザーフローのシミュレーション

Web資産内のエンドツーエンドでのユーザーフローの検証は、ブラウザテストの一般的な用途の一つで、オブザーバビリティで真っ先に実現したい目標です。最も重要なフローから始めるとすると、通常は、ログイン、ページ間の移動、フォームへの入力などのユーザー操作の検証になります。こうしたブラウザテストは、破損した要素、レンダリングの遅延、不正確なデータ表示などのフロントエンドの問題を検出する助けになります。では、どこから始めればよいでしょうか?以下にいくつかのサンプルをご紹介いたします。

  1. HipsterShopでの発注完了テスト:このサンプルは、マイクロサービスを使った一般的なeコマースショップのデモで、JavaScriptを使用した実例となっています。処理の内容は、XPathセレクターでページ内の製品を選択し、カートに追加して注文し、注文確認が受信されたことを検証するという流れになります。これは、一般的なユーザーワークフローのテストを構成する際の考え方を理解する上での、優れた出発点となるでしょう。

  2. ログイン、ページへの移動、APMページのレンダリングの検証このサンプルでは、Splunk ObservabilityのUIを使用して、Webページにユーザー名とパスワード(安全のためグローバル変数に保存)を入力し、さまざまなセレクターを使用してログインボタンをクリックし、APMページへ実際に移動して、APMページでデータが正常にレンダリングされているかを検証します。このサンプルは、多様で複雑なセレクターを使いたい場合に役立ちます。

    • ご参考まで:Splunk Syntheticsのセレクターについて詳しくは、Splunk Lanternの記事をご覧になることをお勧めします。

ブラウザテストはGoogle Chrome Recorder (ビデオ)で作成することもできます。記録された複雑なワークフローを基にテストを構成する際には、上に紹介した基本的なサンプルの内容を基礎知識として理解しておけば、Chrome Recorderが出力する内容をより深く理解する助けとなるでしょう。

オブザーバビリティのさらなる向上を目指して

APIテストとブラウザテストを組み合わせれば、組織のオブザーバビリティのレベルをいくつもの方法で向上させることができます。APIテストによって、バックエンドサービスの信頼性を確認したり、エンドポイントデータを検証したりできる上に、サードパーティのエンドポイントに関する有用なデータを取り込むことさえ可能です。一方、ブラウザテストでは、ユーザーフローを隈なくたどって、ユーザーがWebサイトから期待通りの結果を得ているかどうかを検証できます。これらを組み合わせれば、あらゆるレイヤーに存在する問題を効果的に検出できます。つまり、問題がソフトウェア、ツール、サードパーティの依存コンポーネントのいずれにあるかを問わず検出できる上に、ユーザーに影響が及ぶようなページ間のナビゲーションの問題までも検出できます。問題が見つかれば、あとはコードを修正するだけです。

Splunk Observability Cloudの無料トライアル版をお申し込みください。今すぐ合成テストを実行して、その価値をお確かめいただけます。Observability Content ContribリポジトリにあるこれらのサンプルはすべてTerraformファイルとして提供されるので、他のSplunk Observabilityリソースと共にコードを使ったデプロイと管理が簡単に行えます。最も重要なエンドポイントとユーザーフローで合成テストを今すぐ構築してください。

このブログはこちらの英語ブログの翻訳、山村 悟史によるレビューです。

関連記事

AIが変えるオブザーバビリティ体験
オブザーバビリティ
9 分程度

AIが変えるオブザーバビリティ体験

Splunk Observability CloudのAI機能(Splunk MCP server、AI Assistant、AI troubleshooting agent)で、SRE・DevOpsの調査と対応はどう変わるのかを、機能概要とユースケースから解説します。
API監視:解説
オブザーバビリティ
10 分程度

API監視:解説

API監視とは、APIに接続されたリソースが利用可能か、適切に動作するか、呼び出しに応答するかチェックすることを指します。この記事では、API監視の概要と、API監視の一般的な課題とメリットについて詳しく説明します。
階層型オブザーバビリティ:オブザーバビリティ機能を優先度に沿って成熟させる方法
オブザーバビリティ
14 分程度

階層型オブザーバビリティ:オブザーバビリティ機能を優先度に沿って成熟させる方法

階層型オブザーバビリティを実践することで、特に重要なアプリケーションに対して適切なレベルで監視を行い、アラートを生成して、迅速に対応できます。この記事で詳しく説明します。