Submit Search
マイクロサービスにおけるテスト自動化 with Karate
10 likes
9,700 views
Takanori Suzuki
システムテスト自動化カンファレンス2018 マイクロサービスにおけるテスト自動化 with Karate Microservices Test Automation with Karate
Technology
Read more
1 of 42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
More Related Content
What's hot
(20)
PDF
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
PDF
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
PDF
Keycloak拡張入門
Hiroyuki Wada
PDF
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
PDF
DockerとPodmanの比較
Akihiro Suda
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PDF
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Samir Hammoudi
PPTX
Keycloakのステップアップ認証について
Hitachi, Ltd. OSS Solution Center.
PPTX
コンテナネットワーキング(CNI)最前線
Motonori Shindo
PPTX
緊急Ques - コードのメトリクスに基づくリファクタリング戦略
Tomoki Kuriyama
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
PDF
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
PDF
今こそ知りたい!Microsoft Azureの基礎
Trainocate Japan, Ltd.
PPTX
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
Hitachi, Ltd. OSS Solution Center.
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
世界一わかりやすいClean Architecture
Atsushi Nakamura
Keycloak拡張入門
Hiroyuki Wada
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
DockerとPodmanの比較
Akihiro Suda
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
Etsuji Nakai
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Samir Hammoudi
Keycloakのステップアップ認証について
Hitachi, Ltd. OSS Solution Center.
コンテナネットワーキング(CNI)最前線
Motonori Shindo
緊急Ques - コードのメトリクスに基づくリファクタリング戦略
Tomoki Kuriyama
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
今こそ知りたい!Microsoft Azureの基礎
Trainocate Japan, Ltd.
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
Hitachi, Ltd. OSS Solution Center.
Similar to マイクロサービスにおけるテスト自動化 with Karate
(20)
PDF
Karateによる UI Test Automation 革命
Takanori Suzuki
PDF
20211209 lt runtime_field
Nomura Yuta
PDF
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
PDF
SORACOM S+Cameraを利用して在庫チェックをやってみた
Takanori Suzuki
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
PDF
6万行の TypeScript 移行とその後
Shingo Sasaki
PDF
BPStudy20121221
Shinichiro Takezaki
PDF
Ingest node scripting_deep_dive
Hiroshi Yoshioka
PDF
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
PDF
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Shotaro Suzuki
PDF
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
PPTX
Microsoft AI Solution Update / DLL community Update
Hirono Jumpei
PPTX
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
PDF
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
Masaya Ishikawa
PDF
Prometheus超基礎公開用.pdf
勇 黒沢
PDF
Elasticsaerch Runtime Field
Nomura Yuta
PDF
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
PDF
Share pointを支えるsql server2014最新情報 tokyo_公開用
Yukio Kumazawa
PDF
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
Karateによる UI Test Automation 革命
Takanori Suzuki
20211209 lt runtime_field
Nomura Yuta
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
SORACOM S+Cameraを利用して在庫チェックをやってみた
Takanori Suzuki
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
6万行の TypeScript 移行とその後
Shingo Sasaki
BPStudy20121221
Shinichiro Takezaki
Ingest node scripting_deep_dive
Hiroshi Yoshioka
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Shotaro Suzuki
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
Microsoft AI Solution Update / DLL community Update
Hirono Jumpei
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
DBTS2015 Tokyo DBAが知っておくべき最新テクノロジー
Masaya Ishikawa
Prometheus超基礎公開用.pdf
勇 黒沢
Elasticsaerch Runtime Field
Nomura Yuta
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
Share pointを支えるsql server2014最新情報 tokyo_公開用
Yukio Kumazawa
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
Ad
Recently uploaded
(7)
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
PDF
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
PDF
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
Ad
マイクロサービスにおけるテスト自動化 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の創り出す技術で 地球を感動で進化させる ミッション
4.
「働きがいのある会社(GPTW)」 ランキング(従業員25~99人部門) 1位 を 3回
受賞 1位 1位 1位
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?
8.
空手?
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 一緒に先端を追及する仲間を募集しています!