APIテストの際、テストデータを準備するか、統合テストを行うために、データベースにも接続する必要がよくありますね。それでは、汎用されるAPIテスト用のツールのPostmanを使う場合、Postmanをデータベースに接続することが可能ですか?本文では、データベースに接続して、効率的にAPIをテストする対策を皆さんに紹介します。
APIテスト中になぜかデータベースに接続?
Webアプリケーション開発においては、APIとデータベース層を含むシステム全体の統合テストを実施する必要があります。これは、エンドツーエンドテスティングまたはシステムインテグレーションテストと呼ばれ、実際の運用環境に近い状態で、APIとデータベース間の連携を検証するプロセスです。この統合テストでは、APIとデータベースの両方のコンポーネントを同時に起動し、実際のデータフローとアプリケーション挙動をシミュレートすることで、システム全体の機能的な健全性を包括的に検証することができます。
そこで、APIテスト中にデータベースに接続する必要がある主な理由は、以下のようなことが考えられます。
- データの永続化
APIが処理したデータをデータベースに保存する必要がある場合、そのデータ永続化機能をテストするためにデータベースへの接続が必要になります。 - テストデータの事前準備
APIテストを実行する前に、テスト用のデータをデータベースに投入しておく必要がある場合があります。このようなセットアップ作業にデータベース接続が必要です。 - 検証への利用
APIの処理結果を確認するために、データベースに格納されたデータを参照する必要がある場合があります。この検証ロジックにデータベース接続が関わってくるでしょう。 - 複雑なユースケースのテスト
APIの機能がデータベースを介してユーザー認証やデータ参照など、複雑なロジックを含む場合、そのユースケースをテストするにはデータベース接続が不可欠です。 - 統合テストの実施
単体テストだけでなく、システム全体の統合テストを行う場合、実際の稼働環境に近い形でデータベースを含めたテストを実施する必要があるかもしれません。
つまり、APIがデータベースと連携する機能を持つ場合、それらの機能を適切にテストするためには、テスト実行時にデータベースに接続し、データの準備や検証を行う必要があるのです。
Postmanでデータベースを接続することが可能?
PostmanでAPIをテストする際、データベースを接続する必要がある方は少なくありません。Postmanのコミュニティでは、関連の質問が様々あります:


それでは、Postmanでデータベースに接続することができませんか?
結論から言えば、Postmanを利用してAPIをテストする際、直接にデータベースに接続することができません。ただし、一部のデータベースは、独自のAPIがありますので、これらのAPIにリクエストを送信することで、SQLクエリを行うことができます。
データベースに接続してAPIをテストするには、Apidogが便利
Apidogは、API開発に必要な全機能をも提供するAPIライフサイク管理ツールとして、データベース接続機能も利用できます。そこで、API開発中に、Apidogで、データベースに接続して操作することができるので、APIテストをこれまでにないほどスムーズにすることができます。
Apidogで接続可能なデータベース
Apidogは、現在主流となっているプロバイダーのデータベースにも対応できます。次は、Apidogが対応可能なデータベース種類を皆さんに紹介します。
MySQL
オープンソースのリレーショナルデータベース。高速、負荷耐性に優れ、Webアプリケーションでの利用が多い。
SQL Server
マイクロソフトによるリレーショナルデータベース。高い安定性と可用性が特徴。Windowsシステムとの親和性が高い。
Oracle
商用のリレーショナルデータベースの老舗。高度な機能とパフォーマンスを誇る。大規模システム向け。
PostgreSQL
オープンソースのリレーショナルデータベース。標準準拠で機能が豊富。安定稼働と信頼性が特徴。
ClickHouse
列指向の高速分析データベース。リアルタイム分析に大量データを処理するのに適している。
MongoDB
ドキュメント指向のNoSQLデータベース。柔軟なスキーマと高い拡張性を持つ。Web/モバイルアプリに人気。
このように、用途や特徴に応じて適切なデータベースを選択することが大切です。システム要件に合わせて検討していく必要があります。
Apidogでデータベースに接続してAPIをテスト
それでは、Apidogを使って、APIをデータベースに接続するには、どうしたらいいですか?次は、非常に詳しい操作ガイドを解説します。
ステップ⒈APIのテスト中に、「前処理」と「後処理」の設定で、「データベース操作」を利用することができます。

ステップ⒉データベースの設定を行います。ここで「データベース接続」で、新しいデータベースを追加することができます。下記画像のように、データベースに接続するために必要な情報を入力して、データベースを新規に追加することができます。

⒈データベースのデータを取得してレスポンスを検証
ステップ⒈どのようなデータを対象に、どのような操作を行うことを定義するために、SQLのコマンドを入力します。例えば:select * from users where id=2
というコマンドを入力して、usersというデータベースからid=2のユーザーのデータを取得できます。

ご案内:「コンソールに結果を表示する」をスイッチオンして「送信」ボタンをクリックすると、「コンソール」でデータベースから取得したデータを表示することができます。
ステップ⒉「変数に結果を抽出する」で、変数名やJSONPath式を入力することで、データベースから取得したデータをApidogの環境変数、グローバル変数とローカル変数として保存することができます。

ステップ⒊変数の設定が終わると、「送信」ボタンをクリックして、変数を保存します。ここで、右上にある環境設定のアイコンをクリックして、保存された変数を確認することができるようになります。

このように、データベースから取得したリアルなデータを変数を保存すると、今後のAPIテストのプロセスで、直接にこの変数を参照して、リアルデータを利用してAPIテストを行えるようになります。
また。Apidogのアサーション機能を使うことで、取得のAPIレスポンスがデータベースのデータに一致しているかどうかを自動的に検証することもできるので、APIの動作検証と品質確保のために、非常に便利な機能です。

アサーションを設定すると、Apidogはレスポンスで返されたデータがデータベースのデータに一致するかどうかを自動的に検証してくれます。

⒉レスポンスから情報をデータベースに新規追加
また、APIリクエストを送信して、レスポンスを取得できた場合、レスポンスで返された情報をデータベースにレコードとして保存することもできます。
例えば、ユーザー情報というAPIエンドポイントから取得できたユーザーをUsersというデータベースに保存しようとする場合、まずはレコードに保存したい情報をレスポンスから抽出する必要があります。
ステップ⒈当該APIの後処理で「抽出変数」をクリックして、抽出したい情報を定義します。ここで、ユーザーのIDとユーザーの名前を抽出する必要があるので、「抽出変数」を追加して、JSONPathを利用して、ユーザーのIDとユーザーの名前をそれぞれuser_idとnew_userといった環境変数に抽出します。

ステップ⒉そして、後処理で「データベース操作」を追加して、データベース接続でデータベースに接続してから、次のコマンドを入力して(SQLコマンドでも環境変数を適用可能)、「送信ボタン」をクリックすると、データベースに新しいレコードを作成します。
INSERT INTO users (id, name) VALUES ({{user_id}}, '{{new_user}}');

ステップ⒊上記の画像のように、APIレスポンスデータから見るユーザー名が福田になり、IDが1684になっています。そして、データベースのusersというテーブルを開くと、name=福田 id=1684というユーザーのレコードが自動的に追加されました。

このようにして、APIを呼び出すたびに自動的にデータベースのデータを変更することもできますので、非常に便利です。また、Apidogを使ってデータベースに接続すると、データの取得とデータ新規追加だけではなく、自らのニーズによってCRUD操作も全部行えるので、ぜひお試しください。
まとめ
この記事では、APIテストツールのPostmanを使ってデータベースに直接接続することはできないものの、Apidogを利用することでデータベースに接続し、APIテストをスムーズに行うことができることを説明しました。
Apidogでは、主要なリレーショナルデータベースやNoSQLデータベースに接続できます。データベース操作の機能を使えば、APIテスト中にデータベースからデータを取得したり、APIレスポンスの情報をデータベースに保存したりすることができます。さらに、Apidogのアサーション機能を組み合わせることで、APIレスポンスとデータベースのデータが一致しているかどうかを自動的に検証することもできます。
このように、Apidogを活用することで、APIとデータベースの統合テストを効率的に実施でき、システム全体の健全性を包括的に検証できます。APIの開発とテストにおいて、Apidogはデータベース接続機能を提供することで、開発チームの生産性向上に大きく貢献します。