SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
メルカリ の開発スピードと品質を支える
Selenium on Azure Kubernetes Service
2019/06/19 JJUG ナイトセミナー
Tadashi Nemoto
Automation & QA Group
自己紹介 

● 根本 征(Nemoto Tadashi)

● Automation & QA (AQA) Group

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

■ Selenium, Appium, XCUITest

● Java 未経験

tadashi0713 tadashi-nemoto
Selenium? 

● 知っている方?

● 触ったことのある方?

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

伝えたいこと

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

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

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

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

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

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

アジェンダ

● Selenium とは?・最近の傾向

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

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

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

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

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

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

● Javaで実装

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

○ Ruby, Node.js, Python, etc

Selenium のアーキテクチャ

入門、Selenium - Seleniumの仕組み | CodeGrid
Selenium は今も進化している

● Selenium 1 (2004年 Core)

○ Javascript Injection

● Selenium 2 (WebDriver)

○ Selenium WebDriver

● Selenium 3 (2016年)

○ RCのサポート終了

● Selenium 4 (WIP)

○ α版が公開済

○ 新しい Grid アーキテクチャ

SeleniumとWebDriverの最新事情~標準化が進み、
さらに強力なテストツールへ!その影でSelenium IDEは……
Selenium は今も進化している

● Selenium 1 (2004年 Core)

○ Javascript Injection

● Selenium 2 (WebDriver)

○ Selenium WebDriver

● Selenium 3 (2016年)

○ RCのサポート終了

● Selenium 4 (WIP)

○ α版が公開済

○ 新しい Grid アーキテクチャ

SeleniumとWebDriverの最新事情~標準化が進み、
さらに強力なテストツールへ!その影でSelenium IDEは……
Selenium は今も進化している

● Selenium 1 (2004年 Core)

○ Javascript Injection

● Selenium 2 (WebDriver)

○ Selenium WebDriver

● Selenium 3 (2016年)

○ RCのサポート終了

● Selenium 4 (WIP)

○ α版が公開済

○ 新しい Grid アーキテクチャ

SeleniumとWebDriverの最新事情~標準化が進み、
さらに強力なテストツールへ!その影でSelenium IDEは……
マルチブラウザ対応の安定性
WebDriver 標準化

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

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

Selenium ラッパーライブラリ 

Java
Selenide
Node.js
WebdriverIO
Groovy
Geb
コミュニティ・カンファレンス

● SeleniumConf

○ 年2回実施

○ 2019/04 は東京
で実施

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

ここまでのまとめ

マルチブラウザ

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

コミュニティの充実



Selenium は進化していて、

使いやすくなっている

DevOps 時代の自動テストと
Selenium
Shift Left Movement

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

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

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

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

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

テストピラミッド

事例で学ぶテストピラミッドを使ったテスト戦略 | Think IT(シンクイット)
E2E/UIテスト in マイクロサービス 

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

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

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

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

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

ここまでのまとめ

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

自動テストは必須



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

を速く回すことが重要

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

https://mercari.com/jp
Web マイクロサービス化

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

Monolithic
Service
Feature
・
・
・
Microservice
Microservice
/jp/* /jp/top
MTC2018 - Web Application as a Microservice
UIテスト
UIテスト UIテスト UIテスト
UI テストのタイミング





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

Selenium Grid 化

Selenium Grid

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

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


課題

Selenium Grid Node の

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

→ スケールしずらい

コンテナ・Docker 化

docker-selenium

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

docker-selenium



課題

docker-selenium を動かすための

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

→ スケールしずらい

Kubernetes 化

github.com/kubernetes/examples

Kubernetes Node と Pod のスケール

結果

結果





   2時間 → 15並列で15分

AKSクラスタのCPU率

AKSクラスタのCPU率



課題

必要なタイミングのみ

Kubernetes Node を立ち上げたい

Kubernetes Node の

サーバーレス 化

仮想ノード(Virtual Kubelet) on AKS

de:code 2019 基調講演




ここまでのまとめ

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



仮想ノード on AKS によって

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

DevOps / Shift Left へ

まとめ

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

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

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

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

[参考]少ないテストボリュームであれば
Azure Pipelines
Azure Pipelines で Chrome / Firefox / Safari / IE の
Seleniumブラウザテストを実行させる
https://tadashi0713.com/azure_pipelines_selenium
[参考] Zalenium
ライブプレビュー / 動画録画 / Selenium Node のオートスケール
https://github.com/zalando/zalenium

Weitere ähnliche Inhalte

Was ist angesagt?

AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
 
蛇を埋葬する(PythonをEmbedする)
蛇を埋葬する(PythonをEmbedする)蛇を埋葬する(PythonをEmbedする)
蛇を埋葬する(PythonをEmbedする)Shintarou Okada
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装Masatoshi Tada
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio都元ダイスケ Miyamoto
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 

Was ist angesagt? (20)

AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
蛇を埋葬する(PythonをEmbedする)
蛇を埋葬する(PythonをEmbedする)蛇を埋葬する(PythonをEmbedする)
蛇を埋葬する(PythonをEmbedする)
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 

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

JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例Takeshi Kondo
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014Nozomi Ito
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primeryasukoS
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介Yuki Okada
 
Selenium入門
Selenium入門Selenium入門
Selenium入門onozaty
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)onozaty
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告aha_oretama
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方de:code 2017
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 智治 長沢
 
Jjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudJjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudYoshio Terada
 
5分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 20175分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 2017Toshiya Komoda
 
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨde:code 2017
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料Tomohiro Fujii
 

Ähnlich wie メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service (20)

JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
Ja sst東北2013
Ja sst東北2013Ja sst東北2013
Ja sst東北2013
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
Jjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudJjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring Cloud
 
5分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 20175分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 2017
 
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ
[DO09] 獲れたて OSS x DevOps!自動化三昧を満喫セヨ
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料
 

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