Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Distributed Selenium Testing with Google Compute Engine

3,459 views

Published on

http://gcpug-osaka.connpass.com/event/29625/
GCPUG In Tokyo & Osaka #1の発表資料です。
Google Cloud Platform上のCompute Engineを使用してSeleniumテストを並列実行する事例です。

Published in: Technology
  • Be the first to comment

Distributed Selenium Testing with Google Compute Engine

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

×