Java

APIのテスト自動化ツール「Karate」を使ってみる

APIメインのシステムでE2E(エンドツーエンド)テストをするにあたり、なにかいいツールはないかなと探していたら見つけました。その名も、「Karate」。押忍!

Karateとは

Karateは、APIテストの自動化、モック、パフォーマンステスト、さらにはUI自動化を単一の統合フレームワークに組み合わせる唯一のオープンソースツールです。 Cucumberによって一般化されたBDD構文は言語に依存せず、プログラマー以外でも簡単に使用できます。 強力なJSONおよびXMLアサーションが組み込まれており、テストを並行して実行して速度を上げることができます。

Karate

SeleniumCypressNightwatchなどのUIテストツールに対して、KarateはAPIテストに特化しています。APIだけでなく、UIテストにも対応しているようですね。

Karateをさわってみる

KarateのREADME.mdにしたがって動かしてみます。環境は以下のとおりです。

まずは、Karate入りのMavenプロジェクトを作成します。Gradleプロジェクトの場合、こちらのbuild.gradleが参考になります。

作成されたプロジェクトは以下のようなディレクトリ構成になっています。

ポイントは、src/test/java配下にリソースファイルを配備することです。一般的にMavenやGradleプロジェクトでは、テストに利用するリソースファイル(上でいうと、.js.xml)はsrc/test/resources配下に置くのですが、Karateではsrc/test/java配下に配備することを推奨しています。これにより、Karate以外のテストで利用するファイルとごちゃまぜにならないように管理できます。

pom.xmlsrc/test/java配下にリソースファイルを配備する設定が書かれています。

シナリオの書き方を見てみます。Karateでは、.featureにシナリオを書きます。サンプルとしてすでにusers.featureにシナリオが書かれています。

Karateを使ったことがなくても、ぱっと見てなんとなくわかる記述なのがいいですね。具体的には以下のテストシナリオが書かれています。

  • https://jsonplaceholder.typicode.com/usersGETでアクセスしたときに、ステータスコードが200であること
  • レスポンスボディをもとに(id=1)、https://jsonplaceholder.typicode.com/users/1GETでアクセスしたときに、ステータスが200であること

APIを呼び出す際、前回のAPI呼び出しの結果を利用できるのがいいですね。記述も簡潔でわかりやすいです。

最後に、テストを動かしてみます。ログも全部載せておきます。

レポートも出力してくれます。見やすいですね。

まとめ

APIのテスト自動化ツール「Karate」を使ってみました。環境構築が簡単で、学習コストも低そうです。この機会にKarateに入門します。押忍!

参考リンク


-Java

© 2020 Reasonable Code