背景
先日、とある開発にてWebAPIを複数作成することとなり、APIの単体テストやサブシステム間のテストをどのように進めるか考えていた際に、モックサーバーというものをご教示いただいたことで、その後のテストが大変捗ったため、個人の記録として書き記すものです。
先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが自分のメモとして、こちらへまとめておきます。
OpenAPI(Swagger)とは
API構造を記述するインターフェース記述言語です。yamlもしくはjsonで記述することで、綺麗なAPIドキュメントを作成することができたり、この記事で紹介するようにモックサーバを建てることができます。
https://swagger.io/
https://swagger.io/tools/swagger-ui/
https://swagger.io/tools/swagger-editor/
Prismとは
API設計関係のツールを提供するStoplight社によって開発されている、OSSのHTTPモックツールです。OAS2.0およびOAS3.0に準拠したドキュメントから、自動的にモックサーバを構築することができます。
https://stoplight.io/open-source/prism
https://github.com/stoplightio/prism
環境
(モックサーバー)
-AWS EC2 (Amazon Linux 2)
-Docker
(OpenAPI(実体)の技術スタック)
API
-Python 3.10.1
-toranado 6.2
DB
-Amazon Aurora/MySQL 5.7
テストツール
-Postman
サーバーの構築方法については、以下の参考記事がとてもよくまとまっていますので、そちらをご参照くださいませ。
手順に沿って進めれば簡単にモックサーバーを構築できテストも進められます。
- 【OpenAPI】Prismでモックサーバ作成
- prsim使って爆速でモックAPIサーバをセットアップする
- PrismでOpenAPIを利用したモックサーバーを作る
- OpenAPI(Swagger)からモックサーバーを作成できるPrismまとめ
特にサブシステムや、フロントエンド/バックエンドの担当がベンダーやプロジェクトチームで分かれる際は、組織も縦割りであることからコミュニケーションにも壁ができてしまったり、開発環境やテスト環境も縦割りで個別に作られてしまったりと、なかなか思うように協力し合い共同で使える環境が構築されないケースもあるかと思います。
そういった際に、APIのパラメータとレスポンス項目とそれらのサンプル情報だけでもあれば、システム間や担当間の隔たりも、こういったモックサーバーを建てることで、スムーズに開発やテストが行なえることを、今回特に実感として得ました。
今後は、さらなるテストの効率化のため、このモックサーバーをCI/CDに絡めることで、コーディング→デプロイ→自動テスト(postman+mockサーバー)→検証と自動で進められるようにしたいと考えております。