API連携とは?モダナイゼーションにおける最適なテスト戦略 Vol.2

API連携が活発になったいま、最適なテストソリューションについてご紹介する記事です。

はじめに

この記事は、「API連携とは?モダナイゼーションにおける最適なテスト戦略 Vol.1」の続きです。Vol.1 ではAPIを利用するアプリケーションの開発者に向けてサービス仮想化を用いたテスト戦略について紹介しましたが、Vol.2では、APIを提供する開発者に向けて、APIのテスト戦略を紹介します

次のような方におすすめです。
  • これからAPIの開発案件に関わる方
  • 現状のAPIテスト手法に課題を感じている方

API化のメリット

DX(Digital Transformation)の実現やシステムのモダナイゼーションの一環でAPI化が必須になりました。API連携を伴うシステムはさまざまで、特定の業界だけでAPI化が進んでいる訳ではなく、エンタープライズ系のシステムから組み込み系のIoTシステムに至るまで、さまざまなところでAPI開発が行なわれています。

システムのモダナイゼーションでは、API GW(ゲートウェイ)の導入やAPI基盤を開発することで、レガシー機能が提供するデータを利活用する取り組みが行われています。ビジネス要件に素早く対応するためには、各機能をAPI化することで開発を高速化できるメリットがあります。また、新しいビジネス価値の創造や開発効率化において、外部システムとの連携も活発になります。企業がAPIを外部に公開する背景には次のようなメリットがあります。

メリット1:新しいビジネス連携を生み出す

API を公開することで企業間での連携がおこないやすくなります。同じようなサービスが複数あった場合も、APIを公開していることで連携先として選ばれやすくなります。また、API連携をおこないたいビジネスパートナーが現れることで、新たなチャネルを開拓することもできるようになります。

メリット2:新しい顧客層へのアプローチ

APIを公開することで、そのAPIを利用した企業の顧客層に対してアプローチしやすくなります。これにより、API提供者側は、今までアプローチできていなかった、異なる業界や業種の顧客に対するアプローチがおこなえます。

APIテストの課題

APIは、外部に提供する「パブリックAPI」、限定された範囲でのみ利用する「プライベートAPI」にかかわらず、コントラクト(インターフェース仕様)に基づいて部品として利用されることを想定しています。そのため、APIの提供者側はコントラクトに基づいてAPIを利用できるか、トランザクションの整合性は正しいか、など、しっかりとAPIの品質を確保する必要があります。

しかし、API化をおこなう際にまず直面するのは、「APIテストとはなにか?APIテストをどのように、どこまで実施すべきか分からない」といった課題です。Webアプリケーションを操作してバックエンドとAPI連携すればAPIテストを実施したことになるのか、どのようにAPIにテストデータを送信し、レスポンスの検証をおこなったらよいのか、正常系・異常系の豊富なバリエーションのあるデータを使用したテストをどのように実施するのか、DB値の整合性も検証する必要があるのか、テストドライバーの作成やメンテナンスはどうすべきか、、、など、実際にはさまざまな疑問が沸き上がります。 

APIテストでは、主に次の課題が発生します。

課題1:どうやってAPIテストを実施すべきかわかっていない

  • Webアプリケーションを操作した結合テストが「APIテスト」になると思っている
  • APIを直接テストしていない

課題2:APIテストが不十分な状態になっている

  • APIテストを自動化する仕組みがない
  • 正常系のコンポーネントテスト(API単体のテスト)を1パターン実行するだけでテスト完了としている
  • APIのバージョンアップが頻繁にあり、回帰テストをしきれていない

課題③:APIのシナリオテストやオムニチャネルテストを実施していない

  • 検索API→更新APIのような一連の流れでAPIのシナリオテストを実施していない
  • DB値の検証やファイル比較、エビデンス収集なども含めた包括的なマルチチャネルテストを実施する仕組みがない
  • マルチチャネルテストを自動化する仕組みがない

課題④:APIのセキュリティテストを実施していない

  • そもそも何をどうすれば良いかわからない
  • セキュリティ脅威についての理解がない

課題⑤:APIのパフォーマンス・負荷テストが不十分

  • パフォーマンス・負荷テストのノウハウが無い
  • パフォーマンス・負荷テスト用のスクリプト作成や設定が手間で、気軽にテストできない
  • パフォーマンス・負荷テストの結果を集計してレポートを作成するのが大変で、気軽にテストできない

APIのテスト戦略

APIテストにおける課題を解決するためには、さまざまなユースケースに対応する幅広いAPIテストを自動化する必要があります。少なくとも、テスト対象のAPIに送信するリクエストをシミュレートするテストドライバーを用意して、APIを直接テストする仕組みが必要です。

このように、APIテストを自動化するツールを用意することは、効率的にAPIの品質を確保し、高品質なAPIを提供するうえで重要なテスト戦略と言えるでしょう。

従来、このような場合、シミュレーターとして テストドライバーを開発することが一般的ですが、自作のテストドライバーには次のような課題があります。

テストドライバーの開発やメンテナンスに時間を浪費する・・・

  • テストドライバーを開発しても、固定のリクエストを送信するだけではテストのバリエーションが不十分・・・
  • バリエーション豊富なテストを可能にするテストドライバーを作るには工数がかかる。メンテナンスも大変・・・
  • テストドライバーの開発ではなく、そもそも本来の開発やテストに工数を割り当てたい・・・
APIテストの課題で説明したように、APIの品質を確保するにさまざまなテストアプローチが必要になります。コンポーネントテスト(API単体のテスト)、シナリオテスト、オムニチャネルテスト、セキュリティテスト、パフォーマンス・負荷テストなど、どのテストも重要です。さまざまなユースケースでの利用が想定されるAPIにおいては、複数のAPIを一連の順番で実行するシナリオテストやオムニチャネルテストが特に重要です。

API単体をテストするだけでなく、さまざまなユースケースに対応するテストドライバーを作り込み、テストの実行とアサーション(期待通りにAPIが動作しているかの検証)を自動化するには多くの工数を必要とします。またメンテナンスも大変になります。

これらの手間をなくして、豊富なテストパターンやデータのバリエーションに対応可能なテストドライバーを、簡単に、素早く作成し、尚且つ、効率的にメンテナンスする方法はないのでしょうか?

APIテストに最適なソリューション

APIテスト自動化/仮想化ツール「Parasoft SOAtest/Virtualize」は、APIテストに必要なテストドライバーを提供し、APIのコントラクトテスト、コンポーネントテスト(API単体のテスト)、シナリオテスト、マルチチャネルテスト、セキュリティテスト、パフォーマンス・負荷テストのすべてを自動化します。

主に次の点が自作のテストドライバーとの比較ポイントになります。
 

ユースケース 自作のテストドライバー SOAtest/Virtualizeによる
APIテスト自動化
テストドライバーの作成 プログラミングでテストドライバーを開発
  • OpenAPI/Swagger、RAML、WSDL、XMLスキーマなどのIF定義ファイルからテストドライバーを自動生成
  • トラフィックを記録し、テストドライバーを自動生成
豊富なテストパターンに対応

 

  • バリエーション豊富なシナリオテストに対応させるためには多くの工数がかかる
  • バリエーション豊富なマルチチャネルテストに対応させるためには多くの工数がかかる
  • アサーションの作り込みに工数がかかる
  • 各APIに対するテストドライバーを組み合わせて、複数の種類のAPIコール(例:検索API、更新APIなど)を行うシナリオパターンに対応
  • DB値の検証(CRUD操作)、ファイル比較、エビデンス収集などを含めたテスト自動化が可能
  • コーディングすることなく、シナリオの実行条件やループ設定が可能
豊富なテストデータに対応
  • 予めExcelやCSVで用意したデータをコーディングすることなく、一括投入し、データ駆動型のテストドライバーへと素早く拡張。
  • アサーションの値の自動設定・更新も可能
セキュリティテストに対応 自作は困難であるため、専用のツールを併用することが一般的
  • 作成済みのテスト資産をそのまま使ってセキュリティテストが可能
  • セキュリティ脅威のレポートを出力
パフォーマンス・負荷テストに対応 自作は困難であるため、専用のツールを併用することが一般的
  • 作成済みのテスト資産をそのまま使ってパフォーマンス・負荷テストが可能
  • リッチなレポートを出力
メンテナンス工数
  • 作り込んだテストドライバーは複雑であるため、メンテナンスが大変
  • テストドライバーの設計書が無いため、後任者に引継ぎが困難。
  • 複雑に作り込まなくても豊富なテストパターンとテストデータのパターンに対応したテストドライバーを作成できるので、メンテナンスが簡単
  • アサーションの値を自動更新する仕組みがあるためテストのメンテナンスが非常に簡単


Parasoft SOAtest/Virtualizeでは、OpenAPI/Swaggerなどの定義ファイルからテストドライバーを自動生成するだけでなく、API連携でつながるフロントエンドとバックエンド間の通信を記録し、テストドライバーを自動生成する機能も搭載しています。また、APIのテストに加え、DB値の検証、APログの検証、エビデンスの収集、さらにバッチ/シェルなどの実行も含めた、幅広いマルチチャネルテストも自動化します。これらの設定には、コードの記述も不要で、GUI上で操作で素早くテストシナリオのメンテナンスをおこなう機能も搭載されているため、継続的なAPIの品質活動を強力にサポートします。Parasoft SOAtest/Virtualizeに関する詳細は、以下のページをご参照ください。

API テスト自動化ツール「SOAtest」
 

まとめ

このページでは、APIを提供する開発者の方に向けて、APIのテスト戦略についての記事をお届けしました。

以下の関連記事では、APIのコントラクトテスト、コンポーネントテスト(単機能テスト)、シナリオテスト、マルチチャネルテスト、セキュリティテスト、パフォーマンス・負荷テストなど、これらの具体的なAPIテストのアプローチについて紹介していますので、こちらもご参照ください。

API テスト自動化の関連記事
APIテストまるわかりガイドダウンロード

APIのテスト自動化とサービス仮想化を1ツールで SOAtest/Virtualizeに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
parasoft-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。