SlideShare a Scribd company logo
1 of 36
Download to read offline
Distributed  Selenium  Testing  
with  Google  Compute  Engine
Miyata Jumpei (@miyajan)
Apr 15, 2016 #gcpug
⾃自⼰己紹介
• 宮⽥田  淳平  (@miyajan)  
• サイボウズ株式会社  
• 開発基盤部⽣生産性向上チーム  
• 品質保証部テストエンジニアリングチーム  
• 最近の趣味:筋トレ  
• 5ヶ⽉月で50kg→60kg
今回の発表を三⾏行行で
• ⾃自動テストのためブラウザ⼤大量量に起動したい  
• リソースの調達とメンテナンス⼤大変  
• Google  Compute  Engine最⾼高!
Background
kintone
• B2Bの業務アプリプラットフォーム  
• Java:  26万⾏行行  
• JS:  40万⾏行行  
• PM3⼈人、プログラマ12⼈人、QA16⼈人  
• 東京、⼤大阪、松⼭山、上海
Selenium  WebDriver
• ブラウザ操作を⾃自動化するためのツール  
• E2Eテスト⾃自動化のために使っている
並列列実⾏行行
• Seleniumテストは時間がかかるので  
• Selenium  Gridというツールで複数のマシン
のブラウザを操作できるようにする
Selenium  Docker
• ブラウザ環境を構築するためのDockerイメー
ジ  
• 公式に提供されている  
• 環境の構築、メンテナンスが楽になる
Selenium  Test  in  kintone
• 1,200テストケース  
• kintoneのメインブランチに変更更が⼊入るたびに
すべて実⾏行行される  
• 1⽇日10回くらい  
• 48並列列で実⾏行行して20分
全体図
Jenkins 試験環境
Seleniumテスト実⾏行行 ブラウザからアクセス
Selenium  Grid
Problem
マシンリソースが⾜足りない!
• 48並列列でブラウザ起動するとなるとかなりのリ
ソースが必要  
• CPU16コアでも⾜足りない  
• 社内でマシンを調達&管理理するの⼤大変  
• いざほしくなったときにすぐ調達できるもので
はない
Solution
Google  Compute  Engine
• GCPで提供されているIaaS  
• 起動が早い  
• 1分はかからない
AWSは?
vs  AWS  EC2
• 最⼩小課⾦金金単位が異異なる  
• GCE  10分(以降降1分単位)  
• EC2  1時間  
• 今回のケースだとこれが最⼤大の理理由  
• 1回20分ぐらいしか使わないし、常に実⾏行行されるほど⾼高頻度度でもない  
• ケースバイケース  
• EC2の⽅方がよい点も多い(権限設定、予算上限、他サービス連携)
どうやってCIから使う?
Service  Account
• CIからGCPを操作するために個⼈人のアカウントを
使いたくない  
• Service  AccountはアプリケーションやVMに属す
る  
• keyを利利⽤用して認証する  
• json形式とp12形式
IAM  Roles
• Service  Accountに最⼩小の権限だけ持たせる  
• Primitive  role  
• Owner,  Editor,  Viewerの3種類のみ  
• GCP全体に⼀一律律で適⽤用されるので使いづらい  
• Curated  role  
• Beta  
• より粒粒度度を細かくサービスや役割ごとに権限設定できる  
• 今回はCompute  Engineの権限だけ持たせる
Snapshot
• ディスクのバックアップを取得できる  
• スナップショットからインスタンスを作成で
きる  
• 事前にテンプレートとして作成しておく
gcloud
• コマンドラインツール  
• Jenkinsからの操作をスクリプトに落落としこむ
ために使う
# スナップショットからディスク作成
$ gcloud compute --project [PROJECT NAME] 
disks create [DISK NAME] --size “10” --zone “asia-east1-b” 
--source-snapshot [SNAPSHOT NAME]
#  インスタンス作成  
$ gcloud compute --project [PROJECT NAME] 
instances create [INSTANCE NAME] --zone “asia-east1-b” 
--disk “name=[DISK NAME]” (省省略略)
全体図
Jenkins 試験環境
gcloud
instance
snapshotから作成
Seleniumテスト実⾏行行 ブラウザからアクセス
Selenium  Grid
でもお⾼高いんでしょう?
Cost
• 必要なときだけ利利⽤用すればかなり安い  
• CI開始時にインスタンス作成、終了了時に削除  
• ⽉月に1,000テストケースを300回ほど実⾏行行して
$200ぐらい  
• CPU32コア、メモリ80GB
導⼊入した効果は?
Result
• スムーズな開発  
• 必要なときに必要なだけリソースが⼿手に⼊入る!  
• 他のチームへの展開も楽  
• ⼈人がやらなくていいタスクの削減  
• マシン調達&管理理の⼿手間がなくなった!
etc.
Budget  Trouble
• インスタンスの停⽌止を忘れると⼤大変  
• スクリプトのミスやネットワークトラブルなどがありえる  
• アラート機能があるけど厳密ではないっぽいのであまりあてにならない  
• 予算の上限も設定できない  
• EC2は設定できる  
• 定期的にスクリプトを実⾏行行して回避している  
• ⻑⾧長時間残っているインスタンスを削除している  
• 標準機能として搭載されてほしい
Region
• 既存のアジアゾーンは台湾のみ  
• pingで37msくらい  
• 来年年に東京リージョンが開設されるらしい  
• https://cloudplatform.googleblog.com/2016/03/
announcing-‐‑‒two-‐‑‒new-‐‑‒Cloud-‐‑‒Platform-‐‑‒Regions-‐‑‒
and-‐‑‒10-‐‑‒more-‐‑‒to-‐‑‒come_̲22.html  
• ベータ希望者向けアンケートあり
Custom  Machine  Type
• CPUとメモリを細かく指定できる  
• 減らした分だけ安くなる  
• 定義済みのマシンタイプだと余らせやすい  
• 特に⾼高スペックマシン
Preemptive  VM  Instance
• EC2のスポットインスタンスに近い  
• 価格が固定なところが⼤大きな違い  
• 通常の1/3ぐらいの価格  
• 最⼤大で24時間まで起動  
• 任意のタイミングで停⽌止されることがある  
• 試した感じだと安定するときとしないときの差が激しい  
• 安定しないときの回避策を⽤用意しないと実⽤用化しづらい
Stackdriver  Monitoring
• Beta  
• リソースモニタリング  
• ロギング  
• アラート
まとめ
• Compute  Engineは短時間利利⽤用のコスパ最⾼高  
• CI⽤用途に向いているのでは  
• GCPどんどん進化していて楽しい
WE ARE HIRING!
クラウドを活用した開発がしたい方はぜひサイボウズへ!
http://cybozu.co.jp/company/job/recruitment/
Thanks!
Question?

More Related Content

Viewers also liked

Selenium Antipatterns
Selenium AntipatternsSelenium Antipatterns
Selenium AntipatternsJumpei Miyata
 
Developers Summit 2016 kintone プラグイン開発ハンズオン
Developers Summit 2016 kintone プラグイン開発ハンズオンDevelopers Summit 2016 kintone プラグイン開発ハンズオン
Developers Summit 2016 kintone プラグイン開発ハンズオンJOYZO
 
AWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep DiveAWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep DiveKeisuke Nishitani
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jumpei Miyata
 
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズJumpei Miyata
 
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話Jumpei Miyata
 

Viewers also liked (6)

Selenium Antipatterns
Selenium AntipatternsSelenium Antipatterns
Selenium Antipatterns
 
Developers Summit 2016 kintone プラグイン開発ハンズオン
Developers Summit 2016 kintone プラグイン開発ハンズオンDevelopers Summit 2016 kintone プラグイン開発ハンズオン
Developers Summit 2016 kintone プラグイン開発ハンズオン
 
AWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep DiveAWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep Dive
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 
ハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズハイパフォーマンスSeleniumテスト@サイボウズ
ハイパフォーマンスSeleniumテスト@サイボウズ
 
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話
受入試験を自動化したらDevとQAのフィードバックループがまわりはじめた話
 

More from Jumpei Miyata

開発者の生産性向上を妨げる障壁と サイボウズの生産性向上チームの取り組み
開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み
開発者の生産性向上を妨げる障壁と サイボウズの生産性向上チームの取り組みJumpei Miyata
 
オートスケールする GitHub Actions セルフホストランナーを構築してる話
オートスケールする GitHub Actions セルフホストランナーを構築してる話オートスケールする GitHub Actions セルフホストランナーを構築してる話
オートスケールする GitHub Actions セルフホストランナーを構築してる話Jumpei Miyata
 
GitHub Actions のはじめかた
GitHub Actions のはじめかたGitHub Actions のはじめかた
GitHub Actions のはじめかたJumpei Miyata
 
サイボウズの開発を支える GitHub × CircleCI
サイボウズの開発を支える GitHub × CircleCIサイボウズの開発を支える GitHub × CircleCI
サイボウズの開発を支える GitHub × CircleCIJumpei Miyata
 
サイボウズを支えるCircleCI
サイボウズを支えるCircleCIサイボウズを支えるCircleCI
サイボウズを支えるCircleCIJumpei Miyata
 
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜Jumpei Miyata
 
組織横断でエンジニアを支援する生産性向上チームの役割
組織横断でエンジニアを支援する生産性向上チームの役割組織横断でエンジニアを支援する生産性向上チームの役割
組織横断でエンジニアを支援する生産性向上チームの役割Jumpei Miyata
 
【PR】エンジニアがkintoneを試すべき3つの理由
【PR】エンジニアがkintoneを試すべき3つの理由【PR】エンジニアがkintoneを試すべき3つの理由
【PR】エンジニアがkintoneを試すべき3つの理由Jumpei Miyata
 
Jenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJumpei Miyata
 
すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜Jumpei Miyata
 

More from Jumpei Miyata (10)

開発者の生産性向上を妨げる障壁と サイボウズの生産性向上チームの取り組み
開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み
開発者の生産性向上を妨げる障壁と サイボウズの生産性向上チームの取り組み
 
オートスケールする GitHub Actions セルフホストランナーを構築してる話
オートスケールする GitHub Actions セルフホストランナーを構築してる話オートスケールする GitHub Actions セルフホストランナーを構築してる話
オートスケールする GitHub Actions セルフホストランナーを構築してる話
 
GitHub Actions のはじめかた
GitHub Actions のはじめかたGitHub Actions のはじめかた
GitHub Actions のはじめかた
 
サイボウズの開発を支える GitHub × CircleCI
サイボウズの開発を支える GitHub × CircleCIサイボウズの開発を支える GitHub × CircleCI
サイボウズの開発を支える GitHub × CircleCI
 
サイボウズを支えるCircleCI
サイボウズを支えるCircleCIサイボウズを支えるCircleCI
サイボウズを支えるCircleCI
 
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
サイボウズの CI/CD 事情 〜Jenkins おじさんは CircleCI おじさんにしんかした!〜
 
組織横断でエンジニアを支援する生産性向上チームの役割
組織横断でエンジニアを支援する生産性向上チームの役割組織横断でエンジニアを支援する生産性向上チームの役割
組織横断でエンジニアを支援する生産性向上チームの役割
 
【PR】エンジニアがkintoneを試すべき3つの理由
【PR】エンジニアがkintoneを試すべき3つの理由【PR】エンジニアがkintoneを試すべき3つの理由
【PR】エンジニアがkintoneを試すべき3つの理由
 
Jenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命がある
 
すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (10)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

Distributed Selenium Testing with Google Compute Engine