この記事は、API のパフォーマンステストに関するシリーズの一部です。このシリーズの他の投稿は以下の通りです。
他のアプリケーションを動かすために API を開発している場合でも、自社のインフラ内で API を構築している場合でも、信頼できるテストプロセスを確立する必要があります。つまり、適切なツールを使用して API の脆弱性を把握し、問題を未然に防いだり、障害シナリオに備えたりすることができるのです。
幸いなことに、ReadyAPI Performance (旧名称 LoadUI Pro)を使用すれば、負荷テストによって API テストの作業負荷に大量の帯域幅を追加する必要はありません。このツールでは、マウスを数回クリックするだけで機能テストスクリプトを再利用できるため、既存の機能テストプロセスに負荷テストをシームレスに追加することができます。それでは、いくつかのベストプラクティスと、ReadyAPI Performance がアプリケーションだけでなく、パフォーマンステストの手順をどのように高速化するかをご紹介しましょう。
開発と並行して進める
皆さんも聞いたことがあるでしょう。「ソフトウェア開発はよりアジャイルになりました。」 「テストは左にシフトしました。」 実際のところ、機能テストのツールやプロセスはアジャイルに対応するように進化してきましたが、パフォーマンステストは依然としてモノシリックで集中的な機能です。この時代遅れの方法論は、よりアジャイルなワークフローを可能にするツールを作成していない市場が主な原因です。しかし、機能テストへの移行は、テストプロセスの早い段階でパフォーマンステストのシナリオを導入するチャンスでもあります。
ここでは、アジャイルな負荷テストプロセスを開発するための 4 つの便利な提案を紹介します。
1. インクリメンタル API テスト
インクリメンタル API テストは、最も低い機能レベルから始まります。小さな機能をテストして、そこから構築していきます。個々のコンポーネントが正しく機能していれば、それらが連携して動作する可能性があり、将来的なボトルネックの特定とデバッグに役立ちます。その後、開発プロセスの早い段階で、パフォーマンステストをより小さなタスクに分割して導入することができます。
2. パフォーマンス目標の設定
ユーザーストーリーを作成するときは、パフォーマンス目標を設定することが重要です。例えば、Eコマースサイトの API を作成する場合、カートに商品を追加する機能を盛り込みたいとします。この作業にかかる時間は 0.5 秒以内でなければなりません。期待されるパフォーマンスを明確に定義すれば、テストプロセスもより明確になります。
3. ビルドプロセスに API パフォーマンステストを含める
ビルドプロセスに負荷テストを含めて、各ビルドがある程度のパフォーマンステストを経るようにします。そうすることで、アプリケーションのパフォーマンスが低下した原因を突き止めることができます。また、以前のビルドにロールバックする必要がある場合、そのビルドのパフォーマンスがどの程度かを知ることができます。
4. 機能テストの再利用
可能な限り機能テストを再利用することは、アジャイル パフォーマンス テストの重要なアンカーの 1 つです。そのため、既存または将来の API 機能テストをパフォーマンステストとして再利用できるかどうかを常にチェックしてください。アプリケーションがどのように反応しているかを知るために、自動テストにタイマーを組み込むことも可能かもしれません。指定されたパフォーマンスの専門家と一緒に機能テストをレビューし、再利用できるものとできないものを判断してください。あるいは、ReadyAPI Performance を利用するのもよいでしょう。以下でさらに深く掘り下げてみましょう。
機能テストの再利用でパフォーマンステストの効率化を図る
API テストツールを評価する際に最も重要な要素を尋ねたところ、多くのチームは既存のシステムと簡単に統合でき、使いやすいツールを求めていることが分かりました。また、テストやスクリプト、リソースを再利用することで効率化を図るツールも求められています。機能テストをパフォーマンステストに再利用することで、以下のことが可能になります。
- API への新たな変更のスピードとスケーラビリティを数日ではなく数分でテスト可能
- 本番環境にリリースする前に、API のパフォーマンス動作をプレビュー
- 開発者がより信頼性の高いコードを構築できるように、パフォーマンスに関する洞察を左にシフト(前倒し)
ReadyAPI Performance で新規プロジェクトを開始する際には、負荷テストの設定が可能なテンプレートを選択することができます。テンプレートは、一般的な負荷テストのシナリオに基づいており、これらのシナリオに適合する基本的な設定が用意されています。
ここで、[Create Load Test]ウィザードが開き、ReadyAPI Test (SoapUI) で作成した機能テストスクリプトが自動的に入力されます。以下では、以前に実行した Google maps API のテストがありますので、それをストレステストに選択します。
そこからは、ウィザードに従って、デフォルトのパラメータでテストを実行するだけです。
テンプレートを選択し、ReadyAPI Test (SoapUI) から以前に使用したテストを選択して、実行を押すだけの簡単な作業です。
機能テストを API の負荷テストとして再利用することがいかに簡単であるかをご理解いただけたと思いますので、テストする適切なシナリオと作成するレポートを決定していきましょう。これらのことは、パフォーマンス テスト ブログ シリーズの第 3 回 (最終回) で説明します。
それでは、楽しいテストを!
製品紹介:
ReadyAPI Performance – REST & SOAP API, データベース, マイクロサービスの負荷テストツール
この資料は、SmartBear の Blog で公開されている「API Performance Testing with LoadUI Pro: The Why, the How, and the Measures of Success [Part 2]」の日本語参考訳です。