コーディングができないQAがAPIのシナリオテスト自動化をしたくて「KARATE」さわってみた【準備編】


はじめに

はじめまして!私はコーディングが出来ないQAです。
会社で「テスト自動化をしていこう!!」となり、自動テストの参考書籍をよんで、「そもそもテスト自動化ってどの部分をさすの?」「E2Eの自動化はコストが高いから、統合テストやユニットテストに置き換えるべき」等など、「自動化ってどうすんねん!!どうすればいいねん!!」となっていました。

その時、JaSST'19 Tokyoに参加をして、「UX/マイクロサービスアーキテクチャー時代の自動テスト戦略」のセッションを聞いて、E2Eテストの負荷を下げるには「APIのシナリオテストをすればいいんだ!!」と思い、「テストエンジニアでも書けるAPIシナリオテストってあるのかな?」と調べた所、「KARATE」に出会いました。

Qiitaにかなり詳しい記事があったので、読んでみたのですが、わからない事が多く躓きがあったので、自分の備忘録として記事に残しておく事にしました。

注意事項

コーディングが出来ない And 英語が読めないため、自分の経験として「こうしたら出来た」を記載します。
間違っている事が多々あると思うので「ここちがうよー」 「こうすればいいよー」があったら教えてください

KARATEとは

KARATEとは、APIテストの自動化ができる、オープンソース(だれでも使ってどうぞ)のフレームワークらしいです。
Cucumberによって普及したBDD(振る舞い駆動開発)で、エンジニアではなくてもわかりやすい書き方でかけるツールです。

↓↓↓こんな感じらしいです↓↓↓
Give ◯◯というAPIに対して
When ◯◯のメソッドで
Then ◯◯が返ってくること

「エンジニアでなくても書きやすい」なんて素晴らしいんだ・・・

導入してみる

私自身の環境は「MacOS Mojave」です。
Windows環境での導入方法はわからないです。すみません。

準備

以下の環境が必要ですと書いてありました
Java 8のバーション1.8.0_112以上
Maven 3.3以上

そもそもここからハードルが高いんだよ!!!!


環境を整える

非エンジニアなので戦いは導入から始まりました
とりあえず、JavaとMavenが必要との事なので導入方法を書いて行きます。


そもそも言語をインストールってなんやねん?

私みたいなコーデングができない人は「Javaの導入のはずなのになぜ「Homebrew」?」となると思いますが、
Javaって言語じゃないの?なんでダウンロード?そしてどうすればいいの!!!!
という疑問が解消できなさそうなので、コマンドをコピペして叩けば、インストールまでしてくれちゃう素敵なツールを導入しました。
Homebrewさえ導入すればJavaの導入もMavenの導入もコマンドを叩くだけでできちゃいます!

本来はHomebrewは下記との事です!

Homebrew(ホームブルー)は、macOSオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである。
(Wikipediaより抜粋)


Homebrewを導入する

下記の手順でHomebrewを導入します。

1.ターミナルを起動する。
 ランチャー>その他の中にターミナルがあるので起動します。

2.ターミナルに下記スクリプトをコピーして実行する

terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

しばらく待てば、Homebrewのインストールが完了です!!(ブラウザからダウンロードしてインストールするよりも簡単になる!!)


Javaを導入する

ターミナルに下記スクリプトをコピーして貼り付けて実行すれば、Javaの最新バージョンが導入できるそうです!(現時点ではJavaSE12が最新版だそう)

$ brew cask install java

これで最新版のJavaの導入が完了です!
これでいろいろ迷う必要ない!!!素晴らしい!!!!


Mavenを導入する

ターミナルに以下スクリプトをコピーして貼り付けする。
これで最新バージョンのmavenがインストールされます。

$ brew install maven

これで準備は整った・・・・!!!!!

テスト実行をする

Karate Maven archetypeで空のプロジェクトを作成する

ここからどうすればいいんだって思っていたのですが、Karate Maven archetypeというのが用意されていて、ディレクトリ構造やらが自動生成されるかつ「サンプルコード」が入っているとの事!!
なんと優しい仕組み。。。。

ターミナルに以下のコマンドをコピペして実行すると、Homeディレクトリ配下に「example-karate」というディレクトリ(フォルダ)が作成されます。
※また、最後の行のmyprojectの値を書き換えれば、書き換えた名称のディレクトリが作成されます。
com.mycompanyを変える事もできるぽいですが、何につかっているかわかりませんでした
わかったら追記します。。。

$ mvn archetype:generate \
-DarchetypeGroupId=com.intuit.karate \
-DarchetypeArtifactId=karate-archetype \
-DarchetypeVersion=0.9.2 \
-DgroupId=com.mycompany \
-DartifactId=myproject

これで、ホームディレクトリの配下に、空のプロジェクトが作成されました(やっほい)
ダウンロードしたファイルについてはまた次回記載します。

サンプルファイルあるんやからとりあえず、実行したい

とりあえず、実行してみたいので、準備されているサンプルのファイの中身はおいておきます!!

1. テストを実行する為のディレクトリに移動する。
 ※myprojectの値を書き換えた人はexample-karateの所に書き換えた値をいれてください

$ cd  example-karate

2. テスト実行のコマンドをうつ

$ mvn clean test

3. 結果を待つ

︙
Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20.278 s
[INFO] Finished at: 2019-04-03T20:49:19+09:00
[INFO] ------------------------------------------------------------------------

SUCCESS!!!!!めっちゃ嬉しい!!!!!!!

結果を確認する

example-karate > target > surefire-reports の中に結果のHTMLファイルが出力されています。
こんなかんじで

見方わからないけど結果が成功しているってなんとなくわかる・・・・!!
すばらしい・・・・・

まとめ

テストコードを書くのはエンジニアでなくても書きやすいかもしれないけれど、導入するまでがしんどかった。だけどSUCCESSがみれて嬉しかった。
そして、はじめて記事を書いてみたのですが、難しいっすね。。。

参考

KarateによるAPIのシナリオテスト自動化 #01 Quick Start

@takanorig さんの記事を参考にさせていただきました。
この記事がなかったら、Javaをインストールした段階でおわっていました。

次回

次回は空のプロジェクトの構成とテストシナリオファイルについてを書いていければいいなーと思います