SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
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?

Contenu connexe

En vedette

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
 

En vedette (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のフィードバックループがまわりはじめた話
 

Plus de 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
 

Plus de 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で救える命がある
 
すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜すべてを自動化せよ! 〜生産性向上チームの挑戦〜
すべてを自動化せよ! 〜生産性向上チームの挑戦〜
 

Dernier

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Dernier (8)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Distributed Selenium Testing with Google Compute Engine