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

Tadashi Nemoto

June 19, 2019
Tweet

More Decks by Tadashi Nemoto

Other Decks in Technology

Transcript

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

    View full-size slide

  2. 自己紹介 

    ● 根本 征(Nemoto Tadashi)

    ● Automation & QA (AQA) Group

    ○ テスト自動化、テスト環境(CI / CD)

    ■ Selenium, Appium, XCUITest

    ● Java 未経験

    tadashi0713 tadashi-nemoto

    View full-size slide

  3. Selenium? 

    ● 知っている方?

    ● 触ったことのある方?

    ● 実際に利用・運用している方?


    View full-size slide

  4. 伝えたいこと

    ● Selenium は進化していて、使いやすくなっている

    ● 適切なサイズの Selenium(UI/E2E)テストは

    常にテストを回す DevOps 時代には重要

    ● その上で Selenium テストの並列化・高速化は必須

    ● Kubernetes(AKS) を使うことによって、

    Selenium テストは手軽に並列化・高速化できる


    View full-size slide

  5. アジェンダ

    ● Selenium とは?・最近の傾向

    ● DevOps 時代の自動テストと Selenium

    ● メルカリWeb版で進めている Selenium on Azure
    Kubenetes Service(AKS)


    View full-size slide

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

    View full-size slide

  7. Selenium とは?

    ● Webブラウザの自動操作ツール

    ○ UI/E2E テストとして用いられる

    ● クロスブラウザ・クロスプラットフォーム

    ● Javaで実装

    ● 多言語でテストの作成が可能

    ○ Ruby, Node.js, Python, etc


    View full-size slide

  8. Selenium のアーキテクチャ

    入門、Selenium - Seleniumの仕組み | CodeGrid

    View full-size slide

  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は……

    View full-size slide

  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は……

    View full-size slide

  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は……

    View full-size slide

  12. マルチブラウザ対応の安定性
    WebDriver 標準化

    WebDriver - World Wide Web Consortium

    View full-size slide

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


    View full-size slide

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


    View full-size slide

  15. Selenium ラッパーライブラリ 

    Java
    Selenide
    Node.js
    WebdriverIO
    Groovy
    Geb

    View full-size slide

  16. コミュニティ・カンファレンス

    ● SeleniumConf

    ○ 年2回実施

    ○ 2019/04 は東京
    で実施

    https://codezine.jp/article/detail/11199 


    View full-size slide

  17. ここまでのまとめ

    マルチブラウザ

    対応言語、ラッパーライブラリ

    コミュニティの充実


    Selenium は進化していて、

    使いやすくなっている


    View full-size slide

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

    View full-size slide

  19. Shift Left Movement

    ソフトウェアテストの大規模カンファレンス「STARWEST」で学んだ3つのこと

    https://tech.mercari.com/entry/2018/11/01/124027


    View full-size slide

  20. DevOps では「常にテストする」

    アジャイル開発におけるテストとは? その未来とは何か?【Agile 2018】

    https://codezine.jp/article/detail/11033


    View full-size slide

  21. テストピラミッド

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

    View full-size slide

  22. E2E/UIテスト in マイクロサービス 

    ビッグデータ、マイクロサービスにおけるテストの変化とは【EuroSTAR 2018】 

    https://codezine.jp/article/detail/11226 


    View full-size slide

  23. テストピラミッド in マイクロサービス 

    ビッグデータ、マイクロサービスにおけるテストの変化とは【EuroSTAR 2018】 

    https://codezine.jp/article/detail/11 226


    View full-size slide

  24. ここまでのまとめ

    DevOps 時代は、常にテストするため

    自動テストは必須


    適切なサイズの UI/E2E(Selenium) テスト

    を速く回すことが重要


    View full-size slide

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

    View full-size slide

  26. メルカリ Web版・PC版

    https://mercari.com/jp

    View full-size slide

  27. Web マイクロサービス化

    MTC2018 - Web Application as a Microservice
    Single PHP Server
    Team Mercari Team Mercari Box Team Mercari Guide
    Mercari
    Mercari
    Box
    Mercari
    Guide

    View full-size slide

  28. Web マイクロサービス化

    Monolithic
    Service
    Feature



    Microservice
    Microservice
    /jp/* /jp/top
    MTC2018 - Web Application as a Microservice

    View full-size slide

  29. UIテスト
    UIテスト UIテスト UIテスト
    UI テストのタイミング


    View full-size slide



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


    View full-size slide

  31. Selenium Grid 化


    View full-size slide

  32. Selenium Grid

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

    View full-size slide

  33. Selenium Grid

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

    課題

    Selenium Grid Node の

    環境構築・メンテナンスのコスト

    → スケールしずらい


    View full-size slide

  34. コンテナ・Docker 化


    View full-size slide

  35. docker-selenium

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

    View full-size slide

  36. docker-selenium


    View full-size slide

  37. docker-selenium


    課題

    docker-selenium を動かすための

    インスタンスの管理コスト

    → スケールしずらい


    View full-size slide

  38. Kubernetes 化


    View full-size slide

  39. github.com/kubernetes/examples


    View full-size slide

  40. Kubernetes Node と Pod のスケール


    View full-size slide

  41. 結果



       2時間 → 15並列で15分


    View full-size slide

  42. AKSクラスタのCPU率


    View full-size slide

  43. AKSクラスタのCPU率


    課題

    必要なタイミングのみ

    Kubernetes Node を立ち上げたい


    View full-size slide

  44. Kubernetes Node の

    サーバーレス 化


    View full-size slide

  45. 仮想ノード(Virtual Kubelet) on AKS

    de:code 2019 基調講演

    View full-size slide

  46. ここまでのまとめ

    Selenium Grid を Kubernetes化することで、ス
    ケールする並列実行環境を作れる


    仮想ノード on AKS によって

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


    View full-size slide

  47. DevOps / Shift Left へ


    View full-size slide

  48. まとめ

    ● Selenium を取り巻くテスト自動化は進化している

    ● 適切なサイズの UI/E2E テストは常にテストを回す DevOps
    時代には重要

    ● その上で Selenium テストの並列化・高速化は必須

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


    View full-size slide

  49. [参考]少ないテストボリュームであれば
    Azure Pipelines
    Azure Pipelines で Chrome / Firefox / Safari / IE の
    Seleniumブラウザテストを実行させる
    https://tadashi0713.com/azure_pipelines_selenium

    View full-size slide

  50. [参考] Zalenium
    ライブプレビュー / 動画録画 / Selenium Node のオートスケール
    https://github.com/zalando/zalenium

    View full-size slide