Web資産やAPIの合成テストをゼロから構築するのは難しそうだと思われる方も多いでしょう。「何をテストすればよいのか?」という漠然とした問いに始まり、その後直ちに「どうすれば実際にそれを実行できるのか?」という実践的な課題に直面することになります。それを解決するには、DOMやJSONレスポンス内のさまざまな要素を精査する方法を習得する必要があるでしょう。しかし心配は無用です。このような合成テストの方法を身につけるもっと楽な方法があります。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テストは、オブザーバビリティツールのコンポーネントとして、思いのほか多用途に活用できるのです。
サンプルに含まれる以下の3つのAPIテストでは、APIへのクエリーを実行し、受信したJSONを解析し、特定の応答データを適切なJSONに加工して次のAPIエンドポイントに送信するというのが主な処理内容となります。ちなみにこの例では、Splunk PlatformまたはSplunk Observability Cloudへの取り込みが最終APIエンドポイントになっています。
さらに、GraphQLへのリクエストを作成し、GraphQLのレスポンスの出力を検証するGraphQLに特化したAPIテストのサンプルがあります。このGraphQLサンプルは、リクエストペイロードを作成し、レスポンスの構造を検証する実例としてきわめて有用です。
これらのAPIテストでは、使用される資格情報の種類を問わずシークレットを安全に保管するために、グローバル変数を使用しています。これによって変数名を参照するテスト構成も可能になり、移植が容易になると同時に「コードとしての構成(CaC)」が実現します。資格情報が変更されてもテストを一つひとつ更新する必要はなく、1か所の更新だけで済むのも利点です。
図1-1. JSONの処理が肝心です。JavaScriptが、レスポンスデータから取り込み可能なカスタムメトリクスまたはログを取り出す処理を担います。
Web資産内のエンドツーエンドでのユーザーフローの検証は、ブラウザテストの一般的な用途の一つで、オブザーバビリティで真っ先に実現したい目標です。最も重要なフローから始めるとすると、通常は、ログイン、ページ間の移動、フォームへの入力などのユーザー操作の検証になります。こうしたブラウザテストは、破損した要素、レンダリングの遅延、不正確なデータ表示などのフロントエンドの問題を検出する助けになります。では、どこから始めればよいでしょうか?以下にいくつかのサンプルをご紹介いたします。
ブラウザテストはGoogle Chrome Recorder (ビデオ)で作成することもできます。記録された複雑なワークフローを基にテストを構成する際には、上に紹介した基本的なサンプルの内容を基礎知識として理解しておけば、Chrome Recorderが出力する内容をより深く理解する助けとなるでしょう。
APIテストとブラウザテストを組み合わせれば、組織のオブザーバビリティのレベルをいくつもの方法で向上させることができます。APIテストによって、バックエンドサービスの信頼性を確認したり、エンドポイントデータを検証したりできる上に、サードパーティのエンドポイントに関する有用なデータを取り込むことさえ可能です。一方、ブラウザテストでは、ユーザーフローを隈なくたどって、ユーザーがWebサイトから期待通りの結果を得ているかどうかを検証できます。これらを組み合わせれば、あらゆるレイヤーに存在する問題を効果的に検出できます。つまり、問題がソフトウェア、ツール、サードパーティの依存コンポーネントのいずれにあるかを問わず検出できる上に、ユーザーに影響が及ぶようなページ間のナビゲーションの問題までも検出できます。問題が見つかれば、あとはコードを修正するだけです。
Splunk Observability Cloudの無料トライアル版をお申し込みください。今すぐ合成テストを実行して、その価値をお確かめいただけます。Observability Content ContribリポジトリにあるこれらのサンプルはすべてTerraformファイルとして提供されるので、他のSplunk Observabilityリソースと共にコードを使ったデプロイと管理が簡単に行えます。最も重要なエンドポイントとユーザーフローで合成テストを今すぐ構築してください。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。