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開発が行なわれています。メリット1:新しいビジネス連携を生み出す
API を公開することで企業間での連携がおこないやすくなります。同じようなサービスが複数あった場合も、APIを公開していることで連携先として選ばれやすくなります。また、API連携をおこないたいビジネスパートナーが現れることで、新たなチャネルを開拓することもできるようになります。メリット2:新しい顧客層へのアプローチ
APIを公開することで、そのAPIを利用した企業の顧客層に対してアプローチしやすくなります。これにより、API提供者側は、今までアプローチできていなかった、異なる業界や業種の顧客に対するアプローチがおこなえます。APIテストの課題
APIは、外部に提供する「パブリックAPI」、限定された範囲でのみ利用する「プライベートAPI」にかかわらず、コントラクト(インターフェース仕様)に基づいて部品として利用されることを想定しています。そのため、APIの提供者側はコントラクトに基づいてAPIを利用できるか、トランザクションの整合性は正しいか、など、しっかりとAPIの品質を確保する必要があります。しかし、API化をおこなう際にまず直面するのは、「APIテストとはなにか?APIテストをどのように、どこまで実施すべきか分からない」といった課題です。Webアプリケーションを操作してバックエンドとAPI連携すればAPIテストを実施したことになるのか、どのようにAPIにテストデータを送信し、レスポンスの検証をおこなったらよいのか、正常系・異常系の豊富なバリエーションのあるデータを使用したテストをどのように実施するのか、DB値の整合性も検証する必要があるのか、テストドライバーの作成やメンテナンスはどうすべきか、、、など、実際にはさまざまな疑問が沸き上がります。
課題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テスト自動化/仮想化ツール「Parasoft SOAtest/Virtualize」は、APIテストに必要なテストドライバーを提供し、APIのコントラクトテスト、コンポーネントテスト(API単体のテスト)、シナリオテスト、マルチチャネルテスト、セキュリティテスト、パフォーマンス・負荷テストのすべてを自動化します。
主に次の点が自作のテストドライバーとの比較ポイントになります。
ユースケース | 自作のテストドライバー | SOAtest/Virtualizeによる APIテスト自動化 |
テストドライバーの作成 | プログラミングでテストドライバーを開発 |
|
豊富なテストパターンに対応 |
|
|
豊富なテストデータに対応 |
|
|
セキュリティテストに対応 | 自作は困難であるため、専用のツールを併用することが一般的 |
|
パフォーマンス・負荷テストに対応 | 自作は困難であるため、専用のツールを併用することが一般的 |
|
メンテナンス工数 |
|
|
Parasoft SOAtest/Virtualizeでは、OpenAPI/Swaggerなどの定義ファイルからテストドライバーを自動生成するだけでなく、API連携でつながるフロントエンドとバックエンド間の通信を記録し、テストドライバーを自動生成する機能も搭載しています。また、APIのテストに加え、DB値の検証、APログの検証、エビデンスの収集、さらにバッチ/シェルなどの実行も含めた、幅広いマルチチャネルテストも自動化します。これらの設定には、コードの記述も不要で、GUI上で操作で素早くテストシナリオのメンテナンスをおこなう機能も搭載されているため、継続的なAPIの品質活動を強力にサポートします。Parasoft SOAtest/Virtualizeに関する詳細は、以下のページをご参照ください。
API テスト自動化ツール「SOAtest」
まとめ
このページでは、APIを提供する開発者の方に向けて、APIのテスト戦略についての記事をお届けしました。以下の関連記事では、APIのコントラクトテスト、コンポーネントテスト(単機能テスト)、シナリオテスト、マルチチャネルテスト、セキュリティテスト、パフォーマンス・負荷テストなど、これらの具体的なAPIテストのアプローチについて紹介していますので、こちらもご参照ください。
API テスト自動化の関連記事
- APIテストとは何か?REST API テストの正攻法 Vol.1 (Vol.3 まで続きます)
PICK UP
イベント・セミナー
APIのテスト自動化とサービス仮想化を1ツールで SOAtest/Virtualizeに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp