Contents
比較対象
JSONを扱うWeb APIのテストを行いたい。
CIツールを利用した自動テストを行いたいので、サーバで実行できるものがよい。
テストフレームワークで使用するプログラミング言語は問わない。
画面は無いので、画面のテストは不要である。
Mocha
Node.js、ブラウザで使用できるJavaScript用テストフレームワーク。Web API用ではない。
Cucumber
ブラウザで表示するようなWeb画面用のテストフレームワーク。自然言語に近いテストケースを記述可能。
assertible
有料のSaaS型テストフレームワーク。制限付きで無料でも使用できる。
実態はデスクトップツールに近い。
コード不要でGUIでテストケースを作成可能。
- 各有料プランについて
無料プランでは2 API、各APIにつき10テストケースを作成できる。
Restfuse
https://github.com/eclipsesource/restfuse
2019年7月30日時点 最新版:1.1.1 (2012/9/10)
WebAPIテストフレームワーク。
主にアノテーションを使用したJavaコードベースのテストシナリオを記述する。
テストデータはテキストファイルに切り出してアノテーションで指定する、結果の処理方法をJavaコードで記述するといった使い方をする。
REST-assured
2019年7月30日時点 最新版:4.0.0 (2019/5/10)
WebAPIテストフレームワーク。
Javaコードベースのテストシナリオを記述する。例:https://github.com/rest-assured/rest-assured/wiki/Usage
ただし、JSONスキーマのテストでは、外部のスキーマ定義ファイルを利用できる。
Karate
https://github.com/intuit/karate
2019年7月30日時点 最新版:0.9.4 (2019/7/6) ※2017/2/12に初版(0.1.2)リリース
JSONを標準としたWebAPIテストフレームワーク。
APIを連結したモック機能がある(テストダブル)。
テストケースはGherkin形式で記述するのでビルド不要。
JVMで動作する。テストケース中でJavaコードを実行可能。
Gatlingと連携して負荷試験も可能。
WebDriverを追加すればブラウザベースでの試験も可能。
紹介参考:https://www.slideshare.net/takanorig/microservices-test-automation-with-karate
紹介参考:https://www.slideshare.net/takanorig/api-with-karate-146047857
Restlet Client
デスクトップ用テストツール
Postman
デスクトップ用テストツール
検討結果
要件を満たすWeb API用のテストフレームワークは以下があった。
- assertible
- Restfuse
- REST-assured
- Karate
この中で、Restfuseは開発が止まっているので検討から除外する。
- REST-assuredはJavaベースなので、例えばその他のシステム連携が必要などの柔軟なテストを行いたい場合は向いている
- Karateはデータパターンを変えて何度もテストを行う場合に向いている
参考資料
今回の用途として1つのAPIに複数のデータパターンのテストを行う(データドリブンテスト)を行うため、JavaコードベースのREST-assuredより、Karateの方が向いている。
assertibleはGUIベースであるので、大量のテストケース作成に向いてなさそう。