🗂

rest apiのe2eテストツール比較

2023/02/06に公開

色々システムを運用しているなかでデグレテストが面倒になってきたので、rest apiのe2eのツールを導入したくなった
その調査結果まとめ
正確にはテストツールじゃない気がするけどいい言葉が見つからなかったので

karate

https://github.com/karatelabs/karate
cucumberベースのテストツール
gherkinという記法でテストを記載する
javaベースでできており、gradleやmavenでのtestに簡単に組み込める
zozoとかも使ってるらしい
https://techblog.zozo.com/entry/test-api-with-karate

触った感想

ちょっと凝ったことしようとするとjsとgherkinとjavaの行ったり来たりするので、なれるまでの学習コストは高い
代わりにあまりプログラミング言語を知らない人向けにある程度単純なテストであれば最初から提供されている機能サクッとかける
レポート周りも最初から組み込まれてたり、テストの雛形を作る機能がついてたりするのもいい感じ

rest-assured

https://github.com/rest-assured/rest-assured
rubyとかのスクリプト言語ライクにrest apiのテストがかける
javaベースでできているのはkarateと同じ
ただkarateと違ってほんとにテストする機能しかないので、テストフレームワークやレポート周りなどこれ以外のライブラリが必要になる

触った感想

記法が色々と一昔っぽい
javaに組み込むのが一般的使い方っぽいがjavaを使うのであればもっと他にもいいライブラリがあるので使わなさそう
既存のコードがjavaで既存の仕組みに組み込むなら場面なら使う可能性ありそう

テストツール単体としてみたときはkarateの下位互換

postman+newman

https://www.postman.com/
https://github.com/postmanlabs/newman
有名なwebクライアントサービス+それのcli版
guiをもっており、jsベースのテストを書くことができる
CI/CDに組み込むときはguiで書いたテストコードをjsonで吐き出してcliに食わせてテストする

会社で使おうとすると金がかかる
独自の認証とかおそらく組み込めないのでセキュリティ厳しい会社とかだと色々大変そう
ちょいちょい使ってる会社がありそう
お金あって羨ましい
https://note.com/navitime_tech/n/nb9f9c96d8ab5

触った感想

Hoppscotch

https://github.com/hoppscotch/hoppscotch
postmanのoss版
金もかからないし、MITライセンスなので色々カスタマイズして使える

postmanと違いcliがまだα版なのでCI/CDに組み込むのは大変そう

触った感想

postmanに親しいUX
独自ロジック組み込んでカスタマイズしようかと思ったが、謎のapiが裏側にいたり、ストレージにfirebaseを利用することを前提としていたり、カスタマイズのハードルが高そうだった
色々考えるとお金払ってpostman使ったほうが良さそう

比較

特徴 テスト記法 環境
karate(推し) テストフレームワーク、レポート機能等テストに必要なものが一通り揃ってる
プログラミングを知らない人でもある程度のテストはかける
複雑なテストを書くのは大変
gherkin java
rest-assured rest apiを叩く機能のみ
最小構成なので既存の仕組みには組み込みやすい
DSL(スクリプト言語ライク) java
postman guiで操作できるので使える人の幅が広い
基本postmanが提供している機能+nodeの基本機能しか使えないので複雑なテスト厳しそう
saasなので本格的に使うにはお金が掛かる
js Saas
Hoppscotch guiで操作できるので使える人の幅が広い
ossなので足りない機能とかは自社化等は頑張ればできる<
js node

Discussion