ReadyAPI Performance を使用した API パフォーマンステスト:成功の理由、方法、および測定 [パート 3]

この記事は、API のパフォーマンス テストに関するシリーズの一部です。このシリーズの他の投稿は以下の通りです。

Part 1

Part 2

このシリーズのパート 2 では、ReadyAPI Performance (旧名称 LoadUI Pro) を使用すれば、負荷テストによって API テストの作業負荷に大量の帯域幅を追加する必要はないことを説明しました。

ReadyAPI Performance で新規プロジェクトを開始する際には、負荷テストを簡単に設定できるテンプレートを選択することができるので、パフォーマンス テストをすぐに始めることができます。テンプレートは、一般的な負荷テスト シナリオに基づいており、これらのシナリオに適合する基本的な設定を提供します。

このテンプレートは、パフォーマンス テストが特定のタイプのテストではなく、異なる条件下で API がどのように動作するかについての情報を提供するテスト タイプの集合体であることを強調しています。では、どのようなタイプのテストを実行すればよいのでしょうか。ここでは、API パフォーマンス テストを成功させるために、最も一般的なタイプをいくつか紹介します。

ベースライン プロファイル

もしあなたが API プロバイダーで、誰かがあなたの API と対話したい場合、彼らはこう言うかもしれません。「サービス レベル アグリーメント (SLA) はどの程度まで約束してくれるのか?」 頭の中で数字を思い浮かべるだけでは、明らかに正しいアプローチではありません。契約違反になり、せっかくの関係が台無しになってしまうかもしれません。従って、「3 秒以内だと思います。」と言ってはいけないのです。ReadyAPI Performance に搭載されているベースライン シナリオを使えば、これを正確に計算することができます。

ベースライン負荷テストのテンプレートを使用し、テストを行うことで、サーバーにとってどのようなレスポンスが正常であるかを判断することができます。実際の数字を見て、サーバーのパフォーマンスを確認し、SLA を決定することができるようになります。

ピーク プロファイル

ピーク テストとは、簡単に言えば、最も忙しい時期にサーバーがどのように動作するかをチェックするためのものです。しかし、実のところ、このシナリオはテスト担当者を混乱させることがよくあります。彼らは、「ブラック フライデーのラッシュのような状況になり、1万人のユーザーがいるので、1 万人のユーザーでベースライン シナリオを作成しよう。」と言うのです。しかし、ブラック フライデーであってもそうはなりません。人々は一斉にショッピング サイトにアクセスするわけではありません。朝、徐々に目が覚めて、それから買い物に出かけるのです。確かに負荷は重くなりますが、それは積み重ねの結果です。

ReadyAPI Performance では、ピーク シナリオは文字通りゼロから始まり、システムはどんどん使用量をシミュレートしていき、ピーク時のスループット (この例では 1 万ユーザー) に到達するまでの間、使用量を増やしていきます。数千人になると、徐々に成長していきます。これは、最初の 1 秒間は誰もいないのに、突然 1 万件のリクエストが殺到してシステムに押し寄せてくるベースラインのシナリオとは根本的に異なります。

ピーク時のシナリオはより現実的であり、API がそれだけの数のトランザクションを処理できるように成長できるという安心感を得ることができます。一方、ベースライン テストとして実行した場合は、実際には 1 万人のユーザーに耐えられる能力があっても、すぐにクラッシュしてしまう可能性があります。

ストレス プロファイル

ピーク時の負荷テストの話になると、多くの人が尋ねる質問があります。「API が壊れるほどの負荷を加える負荷テストを設定できますか? 」このようなシナリオをストレス テストと呼びます。

ストレス テストとは、サーバーに大きな負荷をかけるシミュレーションを行い、そのサーバーが処理できる最大のユーザー数を調べることです。この数字は、クラッシュ ポイントとも呼ばれます。クラッシュ ポイントは、必ずしもサーバーがクラッシュしたりハングアップしたりすることを意味するわけではありません。エラーが発生し始めているか、サーバーのパフォーマンスまたは応答時間が SLA で定義されているレベルを下回っていることを意味している可能性があります。

例えば、SLA が 300 ミリ秒だとします。ストレス テストでは、ユーザーがいない状態から、定義されていない無制限の量まで、プロファイルを増やしていきます。ユーザーが応答時間 300 ミリ秒を超えるポイントに近づくと、そこでテストを中止します。そこから、テストが終了する前の同時接続ユーザー数を確認することができます。

ソーク プロファイル

一時的に大量のトラフィックが発生したときには、すべてが機能し、すべてが適切に設定されている可能性がありますが、長時間の使用に耐えうるシステム設定になっているでしょうか? このような状況下でシステムをテストすることは重要です。なぜなら、長時間のトラフィックにさらされたときに初めて明らかになる、メモリの問題があるかもしれないからです。ソーク負荷テストでは、ユーザー数は少ないものの、12 時間から 24 時間といった長時間の負荷テストを行います。数時間から 1 日程度の負荷テストを実施した後、メモリ消費量の増加があったかどうかを確認することができます。理想的には、テストの終了時に、サーバーのパフォーマンスがテスト開始時と同じであることが望ましいです。パフォーマンスが低下するということは、サーバー コードに何らかの問題があることを示しています。

全体として、これらは最も一般的な負荷テストです。SLA を確立するためのベースライン、大容量を管理するためのピーク、定義された SLA でサービスを提供できる境界の数を見つけるためのストレス、そしてハードウェアのメモリ リークを特定するためのソーク。また、ユース ケースに特化した戦略が必要な場合は、異なる時間帯に異なる山や谷、異なる測定方法でカスタム グラフを作成することもできます。

今すぐ、API ロードテストを始めよう

API パフォーマンス テストについて詳しく知りたい方は、関連するウェビナー「API パフォーマンステスト: The Why, The How, and the Measures of Success」をご覧ください。

あなたの組織の成功に役立つ API パフォーマンス テストのガイドを提供し、API テストをあなたの SDLC の最前線に導くのに役立ちます。

ストレス テストやソーク テストを始める準備ができたら、ここから ReadyAPI Performance の無料トライアルをダウンロードしてください。

それでは、楽しい「ロード」テストを。

製品紹介:
ReadyAPI Performance – REST & SOAP API, データベース, マイクロサービスの負荷テストツール

この資料は、SmartBear の Blog で公開されている「API Performance Testing with LoadUI Pro: The Why, the How, and the Measures of Success [Part 3]」の日本語参考訳です。