Submit Search
Upload
API通信周りの継続的なテストの仕組み~SideCIでの実践~
•
1 like
•
614 views
Koichiro Sumi
Follow
API通信周りの継続的なテストの仕組みについて、DevOps懇親会というイベントでLTした際の資料です。
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 24
Download now
Download to read offline
Recommended
Amazon AlexaとServerless
Amazon AlexaとServerless
Jun Ichikawa
WebAPIのバリデーションを、型の力でいい感じにする
WebAPIのバリデーションを、型の力でいい感じにする
Takuya Kikuchi
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
Masayuki KaToH
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Yasuhiro Araki, Ph.D
FIWARE Context Information Management
FIWARE Context Information Management
fisuda
Recommended
Amazon AlexaとServerless
Amazon AlexaとServerless
Jun Ichikawa
WebAPIのバリデーションを、型の力でいい感じにする
WebAPIのバリデーションを、型の力でいい感じにする
Takuya Kikuchi
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
Masayuki KaToH
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Yasuhiro Araki, Ph.D
FIWARE Context Information Management
FIWARE Context Information Management
fisuda
OpenStack API
OpenStack API
Akira Yoshiyama
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
fisuda
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
fisuda
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
コンテナで作れるFaaS
コンテナで作れるFaaS
真吾 吉田
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
fisuda
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
fisuda
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
Keisuke Nishitani
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
About SideCI
About SideCI
Koichiro Sumi
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
Koichiro Sumi
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
Koichiro Sumi
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったこと
Koichiro Sumi
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Koichiro Sumi
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
Koichiro Sumi
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
Koichiro Sumi
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
Tetsuya Mase
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
Koichiro Sumi
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERN
Koichiro Sumi
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
Koichiro Sumi
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERN
Koichiro Sumi
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
Koichiro Sumi
More Related Content
What's hot
OpenStack API
OpenStack API
Akira Yoshiyama
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
fisuda
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
fisuda
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
コンテナで作れるFaaS
コンテナで作れるFaaS
真吾 吉田
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
fisuda
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
fisuda
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
Keisuke Nishitani
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
What's hot
(9)
OpenStack API
OpenStack API
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.1.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
コンテナで作れるFaaS
コンテナで作れるFaaS
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.15.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.4.0対応)
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Viewers also liked
About SideCI
About SideCI
Koichiro Sumi
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
Koichiro Sumi
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
Koichiro Sumi
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったこと
Koichiro Sumi
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Koichiro Sumi
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
Koichiro Sumi
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
Koichiro Sumi
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
Tetsuya Mase
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
Koichiro Sumi
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERN
Koichiro Sumi
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
Koichiro Sumi
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERN
Koichiro Sumi
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
Koichiro Sumi
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Koichiro Sumi
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡
Koichiro Sumi
Viewers also liked
(15)
About SideCI
About SideCI
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったこと
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERN
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERN
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡
Similar to API通信周りの継続的なテストの仕組み~SideCIでの実践~
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
DevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めて
Atsushi Kojima
進化する Web ~ Progressive Web Apps の実装と応用 ~
進化する Web ~ Progressive Web Apps の実装と応用 ~
Microsoft Azure Japan
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
akira6592
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
SORACOM, INC
クラウドネイティブ化する未来
クラウドネイティブ化する未来
Keisuke Nishitani
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
Eiji KOMINAMI
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
Kazuhiro Sera
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
本気で使うStack storm
本気で使うStack storm
tyamane
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
Uehara Junji
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
Takanori Suzuki
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
Ryuji TAKEHARA
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
Amazon Web Services Japan
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Shotaro Suzuki
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
Masanobu Sato
AWS SDK for Smalltalk
AWS SDK for Smalltalk
Sho Yoshida
20120402 aws meister-reloaded-cloud-formation
20120402 aws meister-reloaded-cloud-formation
Amazon Web Services Japan
AWSマイスターシリーズReloaded(AWS Cloudformation)
AWSマイスターシリーズReloaded(AWS Cloudformation)
Akio Katayama
Similar to API通信周りの継続的なテストの仕組み~SideCIでの実践~
(20)
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
DevOps on azure 高品質クラウドデザインを求めて
DevOps on azure 高品質クラウドデザインを求めて
進化する Web ~ Progressive Web Apps の実装と応用 ~
進化する Web ~ Progressive Web Apps の実装と応用 ~
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
クラウドネイティブ化する未来
クラウドネイティブ化する未来
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
本気で使うStack storm
本気で使うStack storm
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
AWS SDK for Smalltalk
AWS SDK for Smalltalk
20120402 aws meister-reloaded-cloud-formation
20120402 aws meister-reloaded-cloud-formation
AWSマイスターシリーズReloaded(AWS Cloudformation)
AWSマイスターシリーズReloaded(AWS Cloudformation)
More from Koichiro Sumi
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Koichiro Sumi
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
Koichiro Sumi
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
Koichiro Sumi
IVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCI
Koichiro Sumi
開発メンバーを増やすときの秩序だったプラクティス with SideCI
開発メンバーを増やすときの秩序だったプラクティス with SideCI
Koichiro Sumi
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなす
Koichiro Sumi
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
Koichiro Sumi
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Koichiro Sumi
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Koichiro Sumi
Spath for enterprise
Spath for enterprise
Koichiro Sumi
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
Koichiro Sumi
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
Koichiro Sumi
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
Koichiro Sumi
Smadd概要資料
Smadd概要資料
Koichiro Sumi
More from Koichiro Sumi
(15)
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
IVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCI
開発メンバーを増やすときの秩序だったプラクティス with SideCI
開発メンバーを増やすときの秩序だったプラクティス with SideCI
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなす
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath for enterprise
Spath for enterprise
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
Smadd概要資料
Smadd概要資料
API通信周りの継続的なテストの仕組み~SideCIでの実践~
1.
© 2015 Actcat,
Inc. 1 API通信周りの継続的なテストの仕組み SideCIでの実践 β
2.
[Confidential] © 2013
Actcat, Inc. 軽く自己紹介 すみ です n 「SideCI」というサービスを 開発しているエンジニアです。 言語歴: Ruby > Obj-‐C > Java > PHP, etc… n Twitter: @sumyapp Facebook: sumyapp 2
3.
[Confidential] © 2013
Actcat, Inc. What is SideCI? Integration: Open Source Software + Docker + GitHub > Automated Code Review and Test and Delivery 3
4.
[Confidential] © 2013
Actcat, Inc. How does it works? 4 hook
5.
[Confidential] © 2013
Actcat, Inc. 5 GitHub上にSideCIがインラインコメント プログラムとコラボした開発が出来る
6.
[Confidential] © 2013
Actcat, Inc. Jenkinsなどを使っている方に朗報! 6 Test and Deploy
7.
[Confidential] © 2013
Actcat, Inc. 7 使ってみてね!
8.
[Confidential] © 2013
Actcat, Inc. 8 本題 API通信周りの継続的なテストの仕組み
9.
[Confidential] © 2013
Actcat, Inc. サービス構築にはAPIを作るのが一般的 9 API API { "properties": { "age": { "description": "Age in years", "minimum": 0, "type": "integer" }, "firstName": { "type": "string” 役割毎にサーバ 分離パターン Server-‐Client パターン { "properties": { "age": { "description": "Age in years", "minimum": 0, "type": "integer" }, "firstName": { "type": "string”
10.
[Confidential] © 2013
Actcat, Inc. APIのレスポンス値を変更すると… 10 API API { "properties": { "age": { "description": "Age in years", "minimum": 0, “min”:9, "type": "integer" }, "firstName": { "type": "string” 役割毎にサーバ 分離パターン Server-‐Client パターン { "properties": { "age": { "description": "Age in years", "minimum": 0, “min”:9, "type": "integer" }, "firstName": { "type": "string” APIのデータ のkeyを変更。 短い方が良い よね!
11.
[Confidential] © 2013
Actcat, Inc. APIのレスポンス値を変更すると… 11 API API { "properties": { "age": { "description": "Age in years", "minimum": 0, “min”:9, "type": "integer" }, "firstName": { "type": "string” 役割毎にサーバ 分離パターン Server-‐Client パターン { "properties": { "age": { "description": "Age in years", "minimum": 0, “min”:9, "type": "integer" }, "firstName": { "type": "string” え、いきなり 動かなくなっ たんだけど…
12.
[Confidential] © 2013
Actcat, Inc. 12 SOLUTION
13.
[Confidential] © 2013
Actcat, Inc. 簡単な3 Step と CI で問題発生を防止 1. API仕様を固める(JSONも) 2. サーバとアプリでテスト通信、 通信時のリクエスト・レスポンスを ファイルに記録する 3. 記録したファイルを使った テストコードをサーバ側に書く + 上記のテストをCIでまわす 13
14.
[Confidential] © 2013
Actcat, Inc. 1. API仕様を固める(JSONも) SideCI内での一例: n URL: l POST "/task/register" n Header: l 指定なし n Body: l JSONで下記を送付する l id: タスクID(タスク識別用) l type: タスクタイプ(rubocop, rails_best_practice, brakeman, bundle_outdated) 14
15.
[Confidential] © 2013
Actcat, Inc. 2. サーバとアプリでテスト通信、 通信時のリクエスト・レスポンスを ファイルに記録する 1. サーバをローカルで起動(本番でも可) 2. アプリからのリクエストをログ等で確認 3. Header, Request Bodyなどを記録 4. Responseなどを記録 15
16.
[Confidential] © 2013
Actcat, Inc. 記録した一例 (SideCI<-GitHub) { "sha": "4e73f2ef6d3534b45bbdf220f060d2628c5952e5", "commit": { "author": { "name": ”Koichiro Sumi", "email": ”koichiro.sumi@actcat.co.jp", "date": "2014-‐02-‐14T09:46:50Z" }, "committer": { "name": "Koichiro Sumi", "email": "koichiro.sumi@actcat.co.jp", "date": "2014-‐02-‐14T09:46:50Z”, 16 JSONファイルとして保存
17.
[Confidential] © 2013
Actcat, Inc. 記録した一例 (SideCI<-GitHub) request.url "/api/v1/github_repositories/hook/” request.headers['X-‐GitHub-‐Event'] = 'pull_request’ request.headers['X-‐GitHub-‐Delivery'] = 'cd36a080-‐ b5a8-‐11e4-‐9e0d-‐q1024663ce0’ request.headers['User-‐Agent'] = 'GitHub-‐Hookshot/e9dfd89’ request.headers['content-‐type'] = 'application/x-‐www-‐form-‐ urlencoded’ 17 Requestをメモしておく。Responseも
18.
[Confidential] © 2013
Actcat, Inc. 記録したファイルを使った テストコードをサーバ側に書く n APIはおそらくController?なので、その Controllerのテストコードを書こう n リクエストに先ほどメモしたリクエストヘッ ダーやボディを設定、クライアントを装って Controllerにリクエストを送るコード n そのレスポンスが、サーバ・アプリ間で動作 確認を行った、正しく動作するレスポンスと 同一であることを確認する 18
19.
[Confidential] © 2013
Actcat, Inc. Rspecでどう書くか? SideCIの一例 let(:params) { { "payload" => payload_basic } } let(:headers) { { "User-‐Agent" => "GitHub-‐Hookshot/2e7s9", "Content-‐Type" => "application/x-‐www-‐form-‐urlencoded", "Content-‐Length" => "10163", "X-‐GitHub-‐Event" => "push" } } let(:payload_basic ) { File.open('spec/basic.json').read } describe "POST 'hook'" do …(一部省略)… 19
20.
[Confidential] © 2013
Actcat, Inc. テストをCIでまわす n 作ったテストはデプロイ前にかならずテ スト実行。面倒だったらCIで回しましょう n CIサービスの一例 l Jenkins…はセットアップが面倒なので, l SideCI, CircleCI, Wercker, Shippable, CodeShip, TravisCI, etc… 20
21.
© 2015 Actcat,
Inc. 21 CIサービスならGitHub上でテストステータスを確 認、安心してマージ出来ます
22.
© 2015 Actcat,
Inc. + 可能ならコードレビューも 最後に頼りになるのは人力 n API変更時にはコードをプルリクエストでAPI 通信を行う先の担当のエンジニアにもレ ビューして貰いましょう n うかつなAPI変更による障害防止には l 仕様をしっかり決めて、APIを変えられなく する l 変えるとテストがFailedして気づくようにす る l テスト・実装共変えた場合は人力レビュー この3つの手段がおすすめだと思います 22
23.
© 2015 Actcat,
Inc. SideCI Customers GitHub + Railsな開発体制のプロジェクトで ご利用頂いております n 50以上のプロジェクトが毎週ご利用 n 1週間に500~1000回、SideCIがユーザの プロジェクトのコードにコメント 23
24.
© 2015 Actcat,
Inc. 24 https://www.sideci.com/
Download now