Upgrade to Pro — share decks privately, control downloads, hide ads and more …

メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service

メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service

【東京】JJUG ナイトセミナー 「Java on Azure まつり@Microsoft」 6/19(水)開催
https://jjug.doorkeeper.jp/events/92835

E8aaf6f975dda96c47412cf311089243?s=128

Tadashi Nemoto

June 19, 2019
Tweet

Transcript

  1. メルカリ の開発スピードと品質を支える Selenium on Azure Kubernetes Service 2019/06/19 JJUG ナイトセミナー

    Tadashi Nemoto Automation & QA Group
  2. 自己紹介 
 • 根本 征(Nemoto Tadashi)
 • Automation & QA

    (AQA) Group
 ◦ テスト自動化、テスト環境(CI / CD)
 ▪ Selenium, Appium, XCUITest
 • Java 未経験
 tadashi0713 tadashi-nemoto
  3. Selenium? 
 • 知っている方?
 • 触ったことのある方?
 • 実際に利用・運用している方?


  4. 伝えたいこと
 • Selenium は進化していて、使いやすくなっている
 • 適切なサイズの Selenium(UI/E2E)テストは
 常にテストを回す DevOps 時代には重要


    • その上で Selenium テストの並列化・高速化は必須
 • Kubernetes(AKS) を使うことによって、
 Selenium テストは手軽に並列化・高速化できる

  5. アジェンダ
 • Selenium とは?・最近の傾向
 • DevOps 時代の自動テストと Selenium
 • メルカリWeb版で進めている

    Selenium on Azure Kubenetes Service(AKS)

  6. Selenium とは? ・最近の傾向

  7. Selenium とは?
 • Webブラウザの自動操作ツール
 ◦ UI/E2E テストとして用いられる
 • クロスブラウザ・クロスプラットフォーム
 •

    Javaで実装
 • 多言語でテストの作成が可能
 ◦ Ruby, Node.js, Python, etc

  8. Selenium のアーキテクチャ
 入門、Selenium - Seleniumの仕組み | CodeGrid

  9. Selenium は今も進化している
 • Selenium 1 (2004年 Core)
 ◦ Javascript Injection


    • Selenium 2 (WebDriver)
 ◦ Selenium WebDriver
 • Selenium 3 (2016年)
 ◦ RCのサポート終了
 • Selenium 4 (WIP)
 ◦ α版が公開済
 ◦ 新しい Grid アーキテクチャ
 SeleniumとWebDriverの最新事情~標準化が進み、 さらに強力なテストツールへ! その影でSelenium IDEは……
  10. Selenium は今も進化している
 • Selenium 1 (2004年 Core)
 ◦ Javascript Injection


    • Selenium 2 (WebDriver)
 ◦ Selenium WebDriver
 • Selenium 3 (2016年)
 ◦ RCのサポート終了
 • Selenium 4 (WIP)
 ◦ α版が公開済
 ◦ 新しい Grid アーキテクチャ
 SeleniumとWebDriverの最新事情~標準化が進み、 さらに強力なテストツールへ! その影でSelenium IDEは……
  11. Selenium は今も進化している
 • Selenium 1 (2004年 Core)
 ◦ Javascript Injection


    • Selenium 2 (WebDriver)
 ◦ Selenium WebDriver
 • Selenium 3 (2016年)
 ◦ RCのサポート終了
 • Selenium 4 (WIP)
 ◦ α版が公開済
 ◦ 新しい Grid アーキテクチャ
 SeleniumとWebDriverの最新事情~標準化が進み、 さらに強力なテストツールへ! その影でSelenium IDEは……
  12. マルチブラウザ対応の安定性 WebDriver 標準化
 WebDriver - World Wide Web Consortium

  13. https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ マルチブラウザ対応の安定性 WebDriver 標準化


  14. https://webkit.org/blog/6900/webdriver-support-in-safari-10/ マルチブラウザ対応の安定性 WebDriver 標準化


  15. Selenium ラッパーライブラリ 
 Java Selenide Node.js WebdriverIO Groovy Geb

  16. コミュニティ・カンファレンス
 • SeleniumConf
 ◦ 年2回実施
 ◦ 2019/04 は東京 で実施
 https://codezine.jp/article/detail/11199

  17. ここまでのまとめ
 マルチブラウザ 
 対応言語、ラッパーライブラリ
 コミュニティの充実
 
 Selenium は進化していて、
 使いやすくなっている


  18. DevOps 時代の自動テストと Selenium

  19. Shift Left Movement
 ソフトウェアテストの大規模カンファレンス「STARWEST」で学んだ3つのこと
 https://tech.mercari.com/entry/2018/11/01/124027


  20. DevOps では「常にテストする」
 アジャイル開発におけるテストとは? その未来とは何か?【Agile 2018】
 https://codezine.jp/article/detail/11033


  21. テストピラミッド
 事例で学ぶテストピラミッドを使ったテスト戦略 | Think IT(シンクイット)

  22. E2E/UIテスト in マイクロサービス 
 ビッグデータ、マイクロサービスにおけるテストの変化とは【EuroSTAR 2018】 
 https://codezine.jp/article/detail/11226 


  23. テストピラミッド in マイクロサービス 
 ビッグデータ、マイクロサービスにおけるテストの変化とは【EuroSTAR 2018】 
 https://codezine.jp/article/detail/11 226


  24. ここまでのまとめ
 DevOps 時代は、常にテストするため
 自動テストは必須
 
 適切なサイズの UI/E2E(Selenium) テスト
 を速く回すことが重要


  25. メルカリWeb版で進めている Selenium on Azure Kubernetes Service

  26. メルカリ Web版・PC版
 https://mercari.com/jp

  27. Web マイクロサービス化
 MTC2018 - Web Application as a Microservice Single

    PHP Server Team Mercari Team Mercari Box Team Mercari Guide Mercari Mercari Box Mercari Guide
  28. Web マイクロサービス化
 Monolithic Service Feature ・ ・ ・ Microservice Microservice

    /jp/* /jp/top MTC2018 - Web Application as a Microservice
  29. UIテスト UIテスト UIテスト UIテスト UI テストのタイミング


  30. None
  31. 
 
    1並列で実行すると約2時間


  32. Selenium Grid 化


  33. Selenium Grid
 DockerでSelenium Gridを構築して 複数マシンのブラウザ自動テストを行う

  34. Selenium Grid
 DockerでSelenium Gridを構築して 複数マシンのブラウザ自動テストを行う 
 課題
 Selenium Grid Node

    の
 環境構築・メンテナンスのコスト
 → スケールしずらい

  35. コンテナ・Docker 化


  36. docker-selenium
 https://github.com/SeleniumHQ/docker-selenium

  37. docker-selenium


  38. docker-selenium
 
 課題
 docker-selenium を動かすための
 インスタンスの管理コスト
 → スケールしずらい


  39. Kubernetes 化


  40. github.com/kubernetes/examples


  41. Kubernetes Node と Pod のスケール


  42. 結果


  43. 結果
 
 
    2時間 → 15並列で15分


  44. AKSクラスタのCPU率


  45. AKSクラスタのCPU率
 
 課題
 必要なタイミングのみ
 Kubernetes Node を立ち上げたい


  46. Kubernetes Node の
 サーバーレス 化


  47. 仮想ノード(Virtual Kubelet) on AKS
 de:code 2019 基調講演

  48. None
  49. ここまでのまとめ
 Selenium Grid を Kubernetes化することで、ス ケールする並列実行環境を作れる
 
 仮想ノード on AKS

    によって
 必要なタイミングでのみ立ち上げられる

  50. DevOps / Shift Left へ


  51. まとめ
 • Selenium を取り巻くテスト自動化は進化している
 • 適切なサイズの UI/E2E テストは常にテストを回す DevOps 時代には重要


    • その上で Selenium テストの並列化・高速化は必須
 • AKS, 特に仮想ノードを使うことによって、Selenium テストは 手軽に並列化・高速化できる

  52. [参考]少ないテストボリュームであれば Azure Pipelines Azure Pipelines で Chrome / Firefox /

    Safari / IE の Seleniumブラウザテストを実行させる https://tadashi0713.com/azure_pipelines_selenium
  53. [参考] Zalenium ライブプレビュー / 動画録画 / Selenium Node のオートスケール https://github.com/zalando/zalenium