KarateはAPI(アプリケーション・プログラミング・インターフェース)のテストを主な目的とするテスト自動化フレームワークです。
簡単に言えば、APIが正しく機能しているかをチェックするためのツールです。Karateを使用することでWebサービスやWebアプリケーションが外部からのリクエストを正確に処理できるかどうかを簡単に確認することができるようになります。
Karateの大きな特徴の1つがプログラミング言語に精通していない人でもテストを簡単に作成できるということ。テストケースは読みやすい言語(Gherkin記法)で記述され、実行するとAPIからの応答が期待通りであるかを自動的にチェック。また、JSONやXMLのようなデータ形式を簡単に扱うことができ、これらはAPIのテストで頻繁に使用されます。
このページではkarateって何?という人でも今日からkarateを使いこなせるようにするための5ステップをわかりやすく解説します。
KarateでのAPIテストの基本
まずは、karateの大まかな仕組みを解説します。Karateを使ってAPIのテストを実行するにはざっくり以下のようなステップを踏みます。
- テストの準備:
- 何をテストするか: まず、どのAPIエンドポイント(インターネット上の特定の場所)をテストするのか決めます。
- リクエストの詳細: どんな情報をAPIに送りたいか、どのように送るかを決めます。たとえば、「このURLにアクセスして、この情報をGET(取得)する」といった具体的なアクションです。
- テストの実行:
- リクエストを送る: 決めた詳細に基づいて、APIに情報を送ります。
- レスポンスを受け取る: APIから何らかの応答(レスポンス)が返ってきます。これには、データやステータスコード(成功かエラーかを示す数字)が含まれます。
- 結果の確認:
- 期待する結果と比較する: 事前に「このリクエストにはこのようなレスポンスが返ってくるはず」と定義しておいた期待値と、実際に受け取ったレスポンスを比較します。
- テストの合格/不合格を判断: 期待したレスポンスが得られたかどうかにより、テストが成功したか失敗したかを判断します。
例として、「ユーザー情報を取得するAPI」のテストを考えてみましょう。
- 準備: 「ユーザーIDが1の情報を取得する」というリクエストを用意する。
- 実行: そのリクエストをAPIに送り、レスポンスを待ちます。
- 確認: 返ってきたレスポンスに「ユーザーIDが1の詳細情報」が含まれているかを確認します。含まれていればテスト成功、そうでなければ失敗となります。
この流れをKarateでは、簡単なスクリプトの形で記述します。初心者でも見やすい形式で書けるので、テストが何をしているのか理解しやすいです。これがKarateの大きな特徴の1つです。
早速、具体的なkarateの実行方法を見ていきましょう!
ステップ1: 必要なソフトウェアのインストール
- Javaのインストール
- KarateはJavaで動作するため、まずJavaをコンピューターにインストールする必要があります。
- OracleのウェブサイトからJava Development Kit (JDK) をダウンロードしてインストールします。
- Mavenのインストール
- Mavenは、プロジェクトの依存関係(必要なライブラリやツール)を管理するためのツールです。
- Mavenの公式ウェブサイトからダウンロードしてインストールします。
ステップ2: 新しいMavenプロジェクトの作成
- プロジェクトフォルダの作成
- 任意の場所に新しいフォルダを作成します。これがこれから作成するプロジェクトの「家」のようなものです。
- Mavenプロジェクトの生成
- コマンドプロンプト(Windows)またはターミナル(Mac/Linux)を開き、作成したフォルダに移動します。
- 以下のコマンドを入力して、新しいMavenプロジェクトを生成します:
mvn archetype:generate -DgroupId=com.example -DartifactId=karate-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
↑のコマンドの各部分については以下の通りですが、知らなくても特に問題はありません。
- archetype:generate
- 新しいプロジェクトを生成するためのテンプレート(アーキタイプ)を使うことをMavenに指示。
- -DgroupId=com.example
- プロジェクトの識別子の一部。通常は会社や組織のドメイン名を逆にしたものを使います。
- -DartifactId=karate-test
- プロジェクトの名前。この名前でフォルダが作られプロジェクトのファイルが格納されます。
- -DarchetypeArtifactId=maven-archetype-quickstart
- 使用するテンプレートの種類。このテンプレートは、シンプルなJavaアプリケーションの基本的な構造を提供します。
- -DinteractiveMode=false
- コマンド実行時に追加の入力を求められないようにするオプションです。
上記のコマンドを実行すると、以下のようなファイル構造が自動的に生成されます。一度確認してみましょう。
- src/
- ソースコードを格納するためのフォルダ。ここには、実際のプログラムファイルやテストファイルが入ります。
- pom.xml
- プロジェクトの設定ファイル。依存するライブラリやビルドの設定など、プロジェクトに必要な情報が記載されています。
ステップ3: Karateの依存関係をプロジェクトに追加
ステップ3は、MavenプロジェクトにKarateフレームワークを組み込む作業です。このステップにより、Karateフレームワークがプロジェクトで使えるようになり、APIテストを書いて実行するための準備が整います。
- pom.xmlファイルの編集:
- プロジェクトフォルダ内に生成された
pom.xml
ファイルを開きます。 - 以下の依存関係を
<dependencies>
セクションに追加します:
- プロジェクトフォルダ内に生成された
<dependency> <groupId>com.intuit.karate</groupId> <artifactId>karate-core</artifactId> <version>1.3.1</version> <scope>test</scope> </dependency>
ここで指定されている情報の意味は以下の通り。
- groupId: ライブラリを提供している組織やプロジェクトの識別子。
- artifactId: ライブラリの名前。
- version: 使用するライブラリのバージョン番号。
- scope: この依存関係がテスト時にのみ必要であることを示します(
test
スコープ)。
- Q「依存関係の追加」とは?
- A
依存関係とは、プロジェクトが正しく動作するために必要となる外部ライブラリやフレームワークのことを指します。Mavenを使うと、これらの依存関係を簡単に管理し、自動でダウンロードしてプロジェクトに組み込むことができます。
依存関係をpom.xml
に追加した後、Mavenを使ってプロジェクトをビルドすると(例えばmvn clean install
というコマンドを実行すると)、Mavenは自動的に指定されたKarateフレームワークのライブラリをインターネットからダウンロードし、プロジェクトに組み込みます。これにより、Karateを使ってAPIテストを書き、実行することが可能になります。
ステップ4: テストケースの作成
ステップ4で行う「テストケースの作成」は、Karateを使ったAPIテストの中核となる部分です。ここでは、テストケースをどのように記述するかを詳しく説明し、初心者でも理解しやすい形でガイドします。
4-1:テストケースのフォーマット
Karateではテストケースは「Featureファイル」に記述します。Featureファイルは .feature
拡張子を持ち、Gherkinというシンプルな自然言語に似た構文を使用して書かれます。基本的な構造は以下の通りです:
- Feature: テスト全体の説明。何のテストかを簡潔に述べます。
- Scenario: 個々のテストケース。具体的なテストの流れを記述します。
4-2:テストケースの記述手順
- テストファイルの作成:
- まず、
src/test/java
ディレクトリ内に新しいフォルダ(例えばkarate
)を作成します。 - そのフォルダ内に
Example.feature
という名前のファイルを作成します。
- まず、
- Featureファイルの基本構造:
- ファイルを開いて、以下のように記述します:
Feature: User Information Retrieval Scenario: Retrieve user information by ID Given url 'https://jsonplaceholder.typicode.com/users/1' When method get Then status 200 And match response.name == 'Leanne Graham'
- Feature
- テストする機能の名前を記述。「ユーザー情報の取得」という機能をテストしていることを示しています。
- Scenario
- テストシナリオのタイトル。ここでは「IDによるユーザー情報の取得」を行っています。
- Given
- テストの前提条件を設定。ここではAPIのURLを指定しています。
- When
- 実行するアクションを記述。この場合はHTTPのGETメソッドを使用しています。
- Then
- 期待される結果を検証します。ここではステータスコードが200(成功)であることを確認しています。
- And
- 追加の検証を行います。レスポンスの内容が期待通りであることを確認しています。
ステップ5: テストの実行
- テストの実行:
- コマンドプロンプトまたはターミナルを開き、プロジェクトディレクトリに移動します。
- 以下のコマンドを実行してテストを開始します:
mvn test
このようにして、Karateを用いてAPIのテストケースを簡単に記述し、実行することができます。この手順を踏むことで、APIが指定された仕様通りに正しく動作するかを検証できます。