Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 
 ● 根本 征(Nemoto Tadashi)
 ● Automation & QA (AQA) Group
 ○ テスト自動化、テスト環境(CI / CD)
 ■ Selenium, Appium, XCUITest
 ● Java 未経験
 tadashi0713 tadashi-nemoto

Slide 3

Slide 3 text

Selenium? 
 ● 知っている方?
 ● 触ったことのある方?
 ● 実際に利用・運用している方?


Slide 4

Slide 4 text

伝えたいこと
 ● Selenium は進化していて、使いやすくなっている
 ● 適切なサイズの Selenium(UI/E2E)テストは
 常にテストを回す DevOps 時代には重要
 ● その上で Selenium テストの並列化・高速化は必須
 ● Kubernetes(AKS) を使うことによって、
 Selenium テストは手軽に並列化・高速化できる


Slide 5

Slide 5 text

アジェンダ
 ● Selenium とは?・最近の傾向
 ● DevOps 時代の自動テストと Selenium
 ● メルカリWeb版で進めている Selenium on Azure Kubenetes Service(AKS)


Slide 6

Slide 6 text

Selenium とは? ・最近の傾向

Slide 7

Slide 7 text

Selenium とは?
 ● Webブラウザの自動操作ツール
 ○ UI/E2E テストとして用いられる
 ● クロスブラウザ・クロスプラットフォーム
 ● Javaで実装
 ● 多言語でテストの作成が可能
 ○ Ruby, Node.js, Python, etc


Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

マルチブラウザ対応の安定性 WebDriver 標準化
 WebDriver - World Wide Web Consortium

Slide 13

Slide 13 text

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


Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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


Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

DevOps 時代の自動テストと Selenium

Slide 19

Slide 19 text

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


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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


Slide 23

Slide 23 text

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


Slide 24

Slide 24 text

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


Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Web マイクロサービス化
 MTC2018 - Web Application as a Microservice Single PHP Server Team Mercari Team Mercari Box Team Mercari Guide Mercari Mercari Box Mercari Guide

Slide 28

Slide 28 text

Web マイクロサービス化
 Monolithic Service Feature ・ ・ ・ Microservice Microservice /jp/* /jp/top MTC2018 - Web Application as a Microservice

Slide 29

Slide 29 text

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


Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text


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


Slide 32

Slide 32 text

Selenium Grid 化


Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Selenium Grid
 DockerでSelenium Gridを構築して 複数マシンのブラウザ自動テストを行う 
 課題
 Selenium Grid Node の
 環境構築・メンテナンスのコスト
 → スケールしずらい


Slide 35

Slide 35 text

コンテナ・Docker 化


Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

docker-selenium


Slide 38

Slide 38 text

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


Slide 39

Slide 39 text

Kubernetes 化


Slide 40

Slide 40 text

github.com/kubernetes/examples


Slide 41

Slide 41 text

Kubernetes Node と Pod のスケール


Slide 42

Slide 42 text

結果


Slide 43

Slide 43 text

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


Slide 44

Slide 44 text

AKSクラスタのCPU率


Slide 45

Slide 45 text

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


Slide 46

Slide 46 text

Kubernetes Node の
 サーバーレス 化


Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

ここまでのまとめ
 Selenium Grid を Kubernetes化することで、ス ケールする並列実行環境を作れる
 
 仮想ノード on AKS によって
 必要なタイミングでのみ立ち上げられる


Slide 50

Slide 50 text

DevOps / Shift Left へ


Slide 51

Slide 51 text

まとめ
 ● Selenium を取り巻くテスト自動化は進化している
 ● 適切なサイズの UI/E2E テストは常にテストを回す DevOps 時代には重要
 ● その上で Selenium テストの並列化・高速化は必須
 ● AKS, 特に仮想ノードを使うことによって、Selenium テストは 手軽に並列化・高速化できる


Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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