APIテストとは何か?REST API テストの正攻法
REST APIのテスト手法についてご紹介する記事です。
はじめに
DXの実現などでREST APIの開発・利用が加速する中で、そもそもREST APIとは何か?REST APIの最適なテスト戦略は何なのか?ここでは、REST APIを利用してアプリケーションを開発するメリットと、REST APIの品質検証の重要性やテスト手法に関する記事をお届けします。
- これからREST APIの開発案件に関わる方
- すでにREST APIの開発案件のテスト計画や実施に携わっている方
本ページの目次 |
REST API とは何か?なぜ API を使用するのか
まず、REST API は部品であるため、システム間でのデータ連携が必要となるたびに、部品化した API を利用してあらゆる種類のデータ連携を簡単に実現できます。さらに、REST API はコントラクトに基づいて設計されるため、データ連携部分は共通の REST API のコントラクトに従って設計しつつ、それ以外の部分については好きなように開発できます。これにより、世界中のさまざまな組織の開発者が、同じ REST API を利用しながら独自の分散型アプリケーションを開発することができます。
- 開発者は、モバイルデバイスやブラウザーごとにカスタマイズされたアプリケーションを作成する必要がない
- アプリケーション全体を毎回再デプロイせずに、個々の REST API (バックエンド) を改修するだけでアプリケーションを素早くバージョンアップできる
REST API の使用例
ユーザー操作 | ユーザー操作時に利用する REST API |
|
|
|
|
|
4. cardAdd |
しかし、REST API が期待通りに動作すると仮定するのは非常に危険です。
なぜ REST API のテストを行うのか?
- UI 操作では、入力データの制限やを用意するのが難しいケースでも、 REST API なら直接テスト電文を設定して検証できる
- UIと比べてREST API は 作りが単純であるため、テスト資産のメンテナンスの容易さも含めて自動化に向いている
REST API テストへのアプローチ
REST API のコントラクトテスト
ポイント
コントラクトテストでは、Swagger、RAML、WSDL、XMLスキーマなど、APIの仕様が定義されたファイルを検証します。REST APIはコントラクトに基づいて作成されますので、コントラクトテストは最初に実施すべきテスト手法と言えます。 コントラクトテストでは、以下を検証します。- コントラクトが仕様に従って記述されている
- リクエストとレスポンスのセマンティクスが正しい(スキーマ検証)
- エンドポイントが有効である(HTTP、MQ/JMSのトピック/キューなど)
REST API のコンポーネントテスト(単機能テスト)
ポイント
コンポーネントテストは後続のテストにも影響を与えるため、十分なデータパターンでしっかりとテストを行う必要があります。APIテストではREST APIが返すレスポンス電文の検証が必須となりますが、データパターンの数だけ検証も行います。この時、レスポンス電文を目視で検証するケースが多く見られます。しかし、APIの数やテストデータのパターン、レスポンス電文の項目の数だけ検証を行う場合、検証すべき項目が増えるにつれ、目視で確認すべき項目も増えることになります。検証項目が多いと人的ミスが発生しやすくなることから、目視の検証では限界があるため自動化する必要性が出てきますが、テストを自動化する場合、設定やメンテナンスに工数が掛からない手法を採用することがテストの効率化に繋がります。また、コンポーネントテストのポイントとして、コントラクトを読み込んでテストを自動生成できるとすぐにテストに取り掛かることができます。
REST API のシナリオテスト
コンポーネントテストとして、個々の REST API のテスト結果が適切であっても、シーケンスとしてREST APIを順番に呼び出した場合に期待通りの結果とならないこともよくあります。
そのため、様々なパターンで呼び出した場合の結果を確認することが重要です。
ポイント
関連ページ
REST API のパフォーマンステスト
また、開発プロセスのより早い段階で REST API のパフォーマンステストを行うことで、早期にパフォーマンス関連の問題を発見できます。
ポイント
パフォーマンステストは専用のツールやテスト環境を用意したり、特殊なスキルセットを必要とすることから、開発プロセスの終盤にシステム全体に対して行われるケースがよくあります。一方で、問題を早期発見するためには、より早い段階で REST API に直接負荷を掛けてパフォーマンステストすることが必要になります。より早い段階からテストを実施するためには、パフォーマンステスト専用ツールを利用するのではなく、REST APIの機能テストとパフォーマンステストの両方が実施できるツールを採用し、機能テスト用のシナリオをパフォーマンステストで活用することも有効です。関連ページ
REST API のセキュリティテスト
ポイント
関連ページ
まとめ
適切な REST API のテスト戦略で開発に臨む事は、データ連携が欠かせないアプリケーションが「今日も昨日と同じように動く」ことを保証する上で非常に価値のある事です。REST API に限らず、SOAP, MQ, MQTT, Kafka, protobuf, WebSocket などを含む API のテストは、アプリケーションのレイヤー毎の品質を確保(欠陥を検出)するために欠かせません。
また、API テストは UI テストよりもはるかに変更が生じにくく、一貫性があるため、既に作成した API のテスト資産を今後も長期間にわたって利用(運用)しやすいのも特徴です。Jenkins などの CI/CD パイプラインで、これらの API テストの実行をすべて自動化し、アプリケーションの品質を継続して確保する仕組みを構築する事もよくあるテストプラクティスです。
イベント・セミナー
APIのテスト自動化とサービス仮想化を1ツールで SOAtest/Virtualizeに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp