SlideShare a Scribd company logo
1Copyright © Acroquest Technology Co., Ltd. All rights reserved.
マイクロサービスにおけるテスト自動化
with Karate
2018/12/08
Acroquest Technology Co., Ltd.
鈴木 貴典
システムテスト自動化カンファレンス 2018
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2
自己紹介
◼ 所属
• Acroquest Technology Co., Ltd.
◼ 主な業務分野
• システムアーキテクト
• IoTサービス開発
• ビッグデータ処理プラットフォーム
• サーバーレス・アーキテクチャ
◼ バックグラウンド
• エンタープライズ/ミッションクリティカル
• SEPG/開発/マネジメント
• Java/Python
鈴木 貴典
シニアテクニカルアーキテクト
Acro = 先端を
quest = 探究する
Acroquestのミッション・ビジョン
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3
テクノロジストチームとして
ビジネスの革新的価値創出に挑戦する
ビジョン
Acroquestの創り出す技術で
地球を感動で進化させる
ミッション
「働きがいのある会社(GPTW)」
ランキング(従業員25~99人部門)
1位 を 3回 受賞
1位 1位 1位
はじめに
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5
○:マイクロサービス
× :マイクロサービシズ
○:Microservices
× :Microservice
システムアーキテクチャのひとつで、ソフトウェアアプリケーションを独立して
配置可能な小さなサービスとして開発し、それらを組み合わせて、ひとつの
システムを実現する手法。もしくは、そうして開発されたシステム自体のこと。
アジェンダ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6
① What is Karate?
② なぜ Karate を導入することに至ったか?
③ Karateを採用したポイント
④ Karate の高い利便性
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
7
What is Karate?
空手?
出典:BABYMETAL - KARATE (OFFICIAL) - YouTube
KARATE?
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
10
Karate
Web-Services Testing Made Simple.
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
11
Karate
Web-Services Testing Made Simple.
• WebサービスAPIのテストを自動化する
オープンソースのテストフレームワーク
• BDD(Behavior Driven Development)に
属するもので、シナリオテストが可能
• Cucumberを元にしており、JavaVM上で
実行できるようにしたもの
(v0.9より、Cucmber依存はなくなっている)
• Garkin記法で、テストシナリオを記述
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
12
Karate テストシナリオ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
13
なぜ Karate を
導入することに至ったか?
世の中は API-First の時代へ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
14
• マルチデバイス対応への
ニーズ増加
• バックエンド側は、
REST-APIで呼び出す
アーキテクチャが
当たり前になってきた
世の中は API-First の時代へ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
15
• マイクロサービス
アーキテクチャ採用増加
• システム間連携も
REST-APIで実現
• API自体が
サービスの仕様であり
重要性が高まってきた
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
16
マイクロサービスは
開発も大変だが、テストも大変
出典:A Netflix Guide to Microservices
課題だったこと
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
17
テストは自動化もしてパスしていたのに
シナリオテストしたら、エラーが多発
サービスの依存関係が多く
テストを自動化するのが困難
テストエンジニアが
テスト自動化するのは結構大変
課題だったこと(①APIのシナリオテスト)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
18
○:API単体の
テストはPASS
テスト対象
サービス
A
×:シナリオで
実行するとERROR
テスト対象
サービス
A
B
課題だったこと(②サービスの依存関係)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
19
テスト対象
サービス
これは簡単
テスト対象
サービス
サービスA
サービスB
サービスC
実際はこうなる(大変)
課題だったこと(③テスト自動化エンジニア不足)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
20
テストスキルも
開発スキルも
ある人ってそうは
いないですよね?
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
21
APIの整合性を保つのって、
大変!
Karateを知ったキッカケ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
22
Karateを採用したポイント
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
23
③学習コストが低い • 直観的なテストケース記述
• テスト実行/エラー
確認の容易性
• 新人でもハマらず導入
①シナリオテストが可能 • 連続したテストケース
• APIの応答値の利用
②DSLで記述できる • プログラマでなくても
作成できる
• データとテストの分離
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
24
Karate の高い利便性
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
25
HTTP関連の
標準対応
負荷テスト
との連携
シンプルな
テストケース
記述
テスト
ダブル
End-to-End
テスト
プログラミング
言語拡張
①シンプルなテストケース記述
~シナリオの基本構成~
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
26
Feature: sample karate test script
Background:
* url 'https://jsonplaceholder.typicode.com'
Scenario: get all users and then get the first user by id
Given path 'users'
When method get
Then status 200
And assert response.size() === 10
And assert response[0].id == 1
And match response[0] contains { id: 1, name: "Leanne Graham" }
https://jsonplaceholder.typicode.com/users に対して
GETメソッド でコールして
HTTPステータス 200 であることをテスト
レスポンスの内容をテスト
①シンプルなテストケース記述
~テスト実行結果レポート~
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
27
ステップごとに
実行結果が分かる
実行時のデータの
内容も分かる
①シンプルなテストケース記述
~データ記述~
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
28
# MultilineでのJSON指定
* def jsonData =
"""
[
{name: 'Bob‘, age: 2},
{name: 'Wild', age: 4},
{name: 'Nyan', age: 3}
]
"""
* match jsonData == [
{name:'Bob', age:2},
{name:'Wild', age:4},
{name:'Nyan', age:3}]
# table指定
* table jsonAsTable
| name | age |
| 'Bob' | 2 |
| 'Wild' | 4 |
| 'Nyan' | 3 |
* match jsonAsTable == [
{name:'Bob', age:2},
{name:'Wild', age:4},
{name:'Nyan', age:3}]
Java開発者が
うれしいヤツ
一目で
分かりやすい
①シンプルなテストケース記述
~Fuzzy Matching~
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
29
# present / notpresent
* def test = {id: '001’,
name: 'Bob'}
* match test == {id: '001’,
name: '#present’,
age: '#notpresent'}
# number
* def test = {foo: 1}
* match test == {foo: '#number'}
# string
* def test = {foo: 'test'}
* match test == {foo: '#string'}
# boolean
* def test = {foo: true}
* match test == {foo: '#boolean'}
パラメータの有無判定 パラメータの型判定
②HTTP関連の標準対応
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
30
対象 コマンド
HTTP url
Path
method
status
Request param
header
cookie
form
multipart
Response responseStatus
responseHeaders
responseCookies
responseTime
responseTimeStamp
responseBytes
HTTP(REST)のテストで
必要となる要素には
ほとんど標準で対応している
テストケース作成の効率が良い!
* header Authorization = ‘xxxxxxxxxx’
Given path 'headers', token
③プログラミング言語拡張
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
31
* def greeter = function(name){ return 'hello ' + name }
* assert greeter('Bob') == 'hello Bob'
JavaScript が使える!
何か複雑な処理や判定が必要になる場合でも
独自関数で対応することが可能になる
③プログラミング言語拡張
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
32
* def dateStringToLong =
"""
function(s) {
var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
var sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
return sdf.parse(s).time;
}
"""
* assert dateStringToLong("2016-12-24T03:39:21.081+0000") == 1482550761081
Java のクラスも実行できる!
プロダクトコード/テストコードのクラスなども
テストで使うことができ、効率が上がる
④テストダブル
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
33
テスト対象
サービス
依存関係
サービス
自動化したいけど、よくある面倒なパターン
テスト対象のAPI これをどうするか?
④テストダブル
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
34
テスト対象
サービス
解決できます。そう、Karateならね。
テスト対象のAPI こうできるんです!
(テストダブル)
④テストダブル
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
35
@ignore
Feature:
Background:
* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
Scenario: pathMatches('/v1/cats')
* def responseStatus = 201
* def response = { id: '#(uuid())', name: 'Billie' }
Scenario: pathMatches('/v1/cats/{uuid}')
* def response = { id: '#(uuid())', name: 'Billie' }
Scenario: pathMatches('/v1/dogs')
* def responseStatus = 201
* def response = { id: '#(uuid())', name: 'Dummy' }
Scenario: pathMatches('/v1/dogs/{uuid}')
* def response = { id: '#(uuid())', name: 'Dummy' }
テストダブルとして動作させる場合のKarateシナリオ
④テストダブル
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
36
Cunsumer:
APIを呼び出す側
Provider:
APIを呼び出される側
Karateが、これらの代替、
もしくは、間に入って、
実行することができる
⑤負荷テスト連携
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
37
Karate Gatling
Gatlingと連携して
負荷テストの実行ができる
Karateの
シナリオファイルを
再利用可能
⑥E2E(End-to-End)テストでの利用
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
38
https://twitter.com/ptrthomas/status/1046459965668388866
WebDriverを
利用しての
ブラウザ実行も可能
(Se○○nium!?)
シナリオを
Karateの形式で記述
v0.9.0
New
さらに・・・
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
39
①REST-API/JSON 以外にも対応
• GraphQL
• gRPC
• WebSocket
• バイナリリクエスト/レスポンス
②Karate UI
• GUIで、ステップ実行/デバッグ可能
③JUnit5サポート
④Dynamic Scenario Outline
v0.9.0
New
Karateによるテスト自動化の変化
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
40
色々なツールを組み合わせて
使いこなす
単一のツールで
幅広く対応
Evolve the Earth with Emotion of Technology
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
41
Karate で
あたなのテストも 楽 できるのでは?
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
42
一緒に先端を追及する仲間を募集しています!

More Related Content

What's hot

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
zaki4649
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
Takuto Wada
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
Hiroyuki Wada
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
 

What's hot (20)

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 

Similar to マイクロサービスにおけるテスト自動化 with Karate

Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
Takanori Suzuki
 
20211209 lt runtime_field
20211209 lt runtime_field20211209 lt runtime_field
20211209 lt runtime_field
Nomura Yuta
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
Satoru Yoshida
 
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
 
SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみた
Takanori Suzuki
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
Shingo Sasaki
 
Ingest node scripting_deep_dive
Ingest node scripting_deep_diveIngest node scripting_deep_dive
Ingest node scripting_deep_dive
Hiroshi Yoshioka
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
 
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Shotaro Suzuki
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
Hirono Jumpei
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
 
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジーDBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
Masaya Ishikawa
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
勇 黒沢
 
Elasticsaerch Runtime Field
Elasticsaerch Runtime FieldElasticsaerch Runtime Field
Elasticsaerch Runtime Field
Nomura Yuta
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
 

Similar to マイクロサービスにおけるテスト自動化 with Karate (20)

Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
 
20211209 lt runtime_field
20211209 lt runtime_field20211209 lt runtime_field
20211209 lt runtime_field
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
 
SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみた
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Ingest node scripting_deep_dive
Ingest node scripting_deep_diveIngest node scripting_deep_dive
Ingest node scripting_deep_dive
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
 
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
 
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジーDBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
Elasticsaerch Runtime Field
Elasticsaerch Runtime FieldElasticsaerch Runtime Field
Elasticsaerch Runtime Field
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 

Recently uploaded

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

マイクロサービスにおけるテスト自動化 with Karate

  • 1. 1Copyright © Acroquest Technology Co., Ltd. All rights reserved. マイクロサービスにおけるテスト自動化 with Karate 2018/12/08 Acroquest Technology Co., Ltd. 鈴木 貴典 システムテスト自動化カンファレンス 2018
  • 2. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2 自己紹介 ◼ 所属 • Acroquest Technology Co., Ltd. ◼ 主な業務分野 • システムアーキテクト • IoTサービス開発 • ビッグデータ処理プラットフォーム • サーバーレス・アーキテクチャ ◼ バックグラウンド • エンタープライズ/ミッションクリティカル • SEPG/開発/マネジメント • Java/Python 鈴木 貴典 シニアテクニカルアーキテクト Acro = 先端を quest = 探究する
  • 3. Acroquestのミッション・ビジョン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3 テクノロジストチームとして ビジネスの革新的価値創出に挑戦する ビジョン Acroquestの創り出す技術で 地球を感動で進化させる ミッション
  • 5. はじめに Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5 ○:マイクロサービス × :マイクロサービシズ ○:Microservices × :Microservice システムアーキテクチャのひとつで、ソフトウェアアプリケーションを独立して 配置可能な小さなサービスとして開発し、それらを組み合わせて、ひとつの システムを実現する手法。もしくは、そうして開発されたシステム自体のこと。
  • 6. アジェンダ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6 ① What is Karate? ② なぜ Karate を導入することに至ったか? ③ Karateを採用したポイント ④ Karate の高い利便性
  • 7. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7 What is Karate?
  • 9. 出典:BABYMETAL - KARATE (OFFICIAL) - YouTube KARATE?
  • 10. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10 Karate Web-Services Testing Made Simple.
  • 11. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11 Karate Web-Services Testing Made Simple. • WebサービスAPIのテストを自動化する オープンソースのテストフレームワーク • BDD(Behavior Driven Development)に 属するもので、シナリオテストが可能 • Cucumberを元にしており、JavaVM上で 実行できるようにしたもの (v0.9より、Cucmber依存はなくなっている) • Garkin記法で、テストシナリオを記述
  • 12. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12 Karate テストシナリオ
  • 13. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13 なぜ Karate を 導入することに至ったか?
  • 14. 世の中は API-First の時代へ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14 • マルチデバイス対応への ニーズ増加 • バックエンド側は、 REST-APIで呼び出す アーキテクチャが 当たり前になってきた
  • 15. 世の中は API-First の時代へ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15 • マイクロサービス アーキテクチャ採用増加 • システム間連携も REST-APIで実現 • API自体が サービスの仕様であり 重要性が高まってきた
  • 16. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 16 マイクロサービスは 開発も大変だが、テストも大変 出典:A Netflix Guide to Microservices
  • 17. 課題だったこと Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17 テストは自動化もしてパスしていたのに シナリオテストしたら、エラーが多発 サービスの依存関係が多く テストを自動化するのが困難 テストエンジニアが テスト自動化するのは結構大変
  • 18. 課題だったこと(①APIのシナリオテスト) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18 ○:API単体の テストはPASS テスト対象 サービス A ×:シナリオで 実行するとERROR テスト対象 サービス A B
  • 19. 課題だったこと(②サービスの依存関係) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19 テスト対象 サービス これは簡単 テスト対象 サービス サービスA サービスB サービスC 実際はこうなる(大変)
  • 20. 課題だったこと(③テスト自動化エンジニア不足) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 20 テストスキルも 開発スキルも ある人ってそうは いないですよね?
  • 21. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21 APIの整合性を保つのって、 大変!
  • 22. Karateを知ったキッカケ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
  • 23. Karateを採用したポイント Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23 ③学習コストが低い • 直観的なテストケース記述 • テスト実行/エラー 確認の容易性 • 新人でもハマらず導入 ①シナリオテストが可能 • 連続したテストケース • APIの応答値の利用 ②DSLで記述できる • プログラマでなくても 作成できる • データとテストの分離
  • 24. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24 Karate の高い利便性
  • 25. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25 HTTP関連の 標準対応 負荷テスト との連携 シンプルな テストケース 記述 テスト ダブル End-to-End テスト プログラミング 言語拡張
  • 26. ①シンプルなテストケース記述 ~シナリオの基本構成~ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26 Feature: sample karate test script Background: * url 'https://jsonplaceholder.typicode.com' Scenario: get all users and then get the first user by id Given path 'users' When method get Then status 200 And assert response.size() === 10 And assert response[0].id == 1 And match response[0] contains { id: 1, name: "Leanne Graham" } https://jsonplaceholder.typicode.com/users に対して GETメソッド でコールして HTTPステータス 200 であることをテスト レスポンスの内容をテスト
  • 27. ①シンプルなテストケース記述 ~テスト実行結果レポート~ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27 ステップごとに 実行結果が分かる 実行時のデータの 内容も分かる
  • 28. ①シンプルなテストケース記述 ~データ記述~ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28 # MultilineでのJSON指定 * def jsonData = """ [ {name: 'Bob‘, age: 2}, {name: 'Wild', age: 4}, {name: 'Nyan', age: 3} ] """ * match jsonData == [ {name:'Bob', age:2}, {name:'Wild', age:4}, {name:'Nyan', age:3}] # table指定 * table jsonAsTable | name | age | | 'Bob' | 2 | | 'Wild' | 4 | | 'Nyan' | 3 | * match jsonAsTable == [ {name:'Bob', age:2}, {name:'Wild', age:4}, {name:'Nyan', age:3}] Java開発者が うれしいヤツ 一目で 分かりやすい
  • 29. ①シンプルなテストケース記述 ~Fuzzy Matching~ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 29 # present / notpresent * def test = {id: '001’, name: 'Bob'} * match test == {id: '001’, name: '#present’, age: '#notpresent'} # number * def test = {foo: 1} * match test == {foo: '#number'} # string * def test = {foo: 'test'} * match test == {foo: '#string'} # boolean * def test = {foo: true} * match test == {foo: '#boolean'} パラメータの有無判定 パラメータの型判定
  • 30. ②HTTP関連の標準対応 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30 対象 コマンド HTTP url Path method status Request param header cookie form multipart Response responseStatus responseHeaders responseCookies responseTime responseTimeStamp responseBytes HTTP(REST)のテストで 必要となる要素には ほとんど標準で対応している テストケース作成の効率が良い! * header Authorization = ‘xxxxxxxxxx’ Given path 'headers', token
  • 31. ③プログラミング言語拡張 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31 * def greeter = function(name){ return 'hello ' + name } * assert greeter('Bob') == 'hello Bob' JavaScript が使える! 何か複雑な処理や判定が必要になる場合でも 独自関数で対応することが可能になる
  • 32. ③プログラミング言語拡張 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 32 * def dateStringToLong = """ function(s) { var SimpleDateFormat = Java.type('java.text.SimpleDateFormat'); var sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); return sdf.parse(s).time; } """ * assert dateStringToLong("2016-12-24T03:39:21.081+0000") == 1482550761081 Java のクラスも実行できる! プロダクトコード/テストコードのクラスなども テストで使うことができ、効率が上がる
  • 33. ④テストダブル Copyright © Acroquest Technology Co., Ltd. All rights reserved. 33 テスト対象 サービス 依存関係 サービス 自動化したいけど、よくある面倒なパターン テスト対象のAPI これをどうするか?
  • 34. ④テストダブル Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34 テスト対象 サービス 解決できます。そう、Karateならね。 テスト対象のAPI こうできるんです! (テストダブル)
  • 35. ④テストダブル Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35 @ignore Feature: Background: * def uuid = function(){ return java.util.UUID.randomUUID() + '' } Scenario: pathMatches('/v1/cats') * def responseStatus = 201 * def response = { id: '#(uuid())', name: 'Billie' } Scenario: pathMatches('/v1/cats/{uuid}') * def response = { id: '#(uuid())', name: 'Billie' } Scenario: pathMatches('/v1/dogs') * def responseStatus = 201 * def response = { id: '#(uuid())', name: 'Dummy' } Scenario: pathMatches('/v1/dogs/{uuid}') * def response = { id: '#(uuid())', name: 'Dummy' } テストダブルとして動作させる場合のKarateシナリオ
  • 36. ④テストダブル Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36 Cunsumer: APIを呼び出す側 Provider: APIを呼び出される側 Karateが、これらの代替、 もしくは、間に入って、 実行することができる
  • 37. ⑤負荷テスト連携 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 37 Karate Gatling Gatlingと連携して 負荷テストの実行ができる Karateの シナリオファイルを 再利用可能
  • 38. ⑥E2E(End-to-End)テストでの利用 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 38 https://twitter.com/ptrthomas/status/1046459965668388866 WebDriverを 利用しての ブラウザ実行も可能 (Se○○nium!?) シナリオを Karateの形式で記述 v0.9.0 New
  • 39. さらに・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 39 ①REST-API/JSON 以外にも対応 • GraphQL • gRPC • WebSocket • バイナリリクエスト/レスポンス ②Karate UI • GUIで、ステップ実行/デバッグ可能 ③JUnit5サポート ④Dynamic Scenario Outline v0.9.0 New
  • 40. Karateによるテスト自動化の変化 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 40 色々なツールを組み合わせて 使いこなす 単一のツールで 幅広く対応
  • 41. Evolve the Earth with Emotion of Technology Copyright © Acroquest Technology Co., Ltd. All rights reserved. 41 Karate で あたなのテストも 楽 できるのでは?
  • 42. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 42 一緒に先端を追及する仲間を募集しています!