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 Slide

  2. 自己紹介 

    ● 根本 征(Nemoto Tadashi)

    ● Automation & QA (AQA) Group

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

    ■ Selenium, Appium, XCUITest

    ● Java 未経験

    tadashi0713 tadashi-nemoto

    View Slide

  3. Selenium? 

    ● 知っている方?

    ● 触ったことのある方?

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


    View Slide

  4. 伝えたいこと

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

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

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

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

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

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


    View Slide

  5. アジェンダ

    ● Selenium とは?・最近の傾向

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

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


    View Slide

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

    View Slide

  7. Selenium とは?

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

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

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

    ● Javaで実装

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

    ○ Ruby, Node.js, Python, etc


    View Slide

  8. Selenium のアーキテクチャ

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

    View 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 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 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 Slide

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

    WebDriver - World Wide Web Consortium

    View Slide

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


    View Slide

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


    View Slide

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

    Java
    Selenide
    Node.js
    WebdriverIO
    Groovy
    Geb

    View Slide

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

    ● SeleniumConf

    ○ 年2回実施

    ○ 2019/04 は東京
    で実施

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


    View Slide

  17. ここまでのまとめ

    マルチブラウザ

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

    コミュニティの充実


    Selenium は進化していて、

    使いやすくなっている


    View Slide

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

    View Slide

  19. Shift Left Movement

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

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


    View Slide

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

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

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


    View Slide

  21. テストピラミッド

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

    View Slide

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

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

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


    View Slide

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

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

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


    View Slide

  24. ここまでのまとめ

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

    自動テストは必須


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

    を速く回すことが重要


    View Slide

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

    View Slide

  26. メルカリ Web版・PC版

    https://mercari.com/jp

    View 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 Slide

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

    Monolithic
    Service
    Feature



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

    View Slide

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


    View Slide

  30. View Slide



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


    View Slide

  32. Selenium Grid 化


    View Slide

  33. Selenium Grid

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

    View Slide

  34. Selenium Grid

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

    課題

    Selenium Grid Node の

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

    → スケールしずらい


    View Slide

  35. コンテナ・Docker 化


    View Slide

  36. docker-selenium

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

    View Slide

  37. docker-selenium


    View Slide

  38. docker-selenium


    課題

    docker-selenium を動かすための

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

    → スケールしずらい


    View Slide

  39. Kubernetes 化


    View Slide

  40. github.com/kubernetes/examples


    View Slide

  41. Kubernetes Node と Pod のスケール


    View Slide

  42. 結果


    View Slide

  43. 結果



       2時間 → 15並列で15分


    View Slide

  44. AKSクラスタのCPU率


    View Slide

  45. AKSクラスタのCPU率


    課題

    必要なタイミングのみ

    Kubernetes Node を立ち上げたい


    View Slide

  46. Kubernetes Node の

    サーバーレス 化


    View Slide

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

    de:code 2019 基調講演

    View Slide

  48. View Slide

  49. ここまでのまとめ

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


    仮想ノード on AKS によって

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


    View Slide

  50. DevOps / Shift Left へ


    View Slide

  51. まとめ

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

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

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

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


    View Slide

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

    View Slide

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

    View Slide