SlideShare a Scribd company logo
1 of 41
Download to read offline
Software Development Done Right
Scalable QA
with Docker
1
Maarten van den Ende – @mjvdende
Adé Mochtar – amochtar@xebia.com
Introduction
Maarten van den Ende
Test Automation Architect
@mjvdende
Adé Mochtar
Data Center Automator
amochtar@xebia.com
2
Slides
http://bit.ly/tw-scale
3
Code Examples
4
$ git clone https://github.com/xebia/scalable-qa-with-docker.git
$ cd scalable-qa-with-docker/
$ vagrant up
Download data.zip from http://bit.ly/tw-scale-data
and unzip in scalable-qa-with-docker/ dir
1
2
3
5
Scaling tests is hard
6
Test environment hard to
maintain
7
Adding resources takes time
Selenium Grid to
the rescue
Use Grid to run all your tests
One interface for testing all the browsers
Fixed set of browsers nodes are at your
disposal, ready for more
8
9
Selenium Grid Over Time
Selenium Grid Over Time
10
Not enough
nodes
configured
- For example:
growing need to
regression test
each branch
after each
commit
So you really need to take care of
your selenium grid...
Selenium Grid
hard to
maintain
- Browser updates
- Selenium
updates
Selenium Grid
stability
- Selenium nodes
go out of
memory
- Browser timeouts
11
12
How To Scale Properly
How to scale properly
Start test
- Scale up
- Start nodes when
needed
- Start different flavor
End test
- Scale down
- Remove nodes
Ready for More!
13
Server X
Source
Repository
Continuous
Integration
Datacenter Y
Testrunner
Chrome node
Testrunner
Chrome node
TestrunnerSystem
Under Test
Next 60 minutes
1. Setup environment
2. Selenium job
3. Setup selenium grid
4. Add node to grid
5. Scale the grid
14
15
1. SET UP ENVIRONMENT
Set up
Start environment
16
Host OS
Virtualbox - Virtualisatie
Infrastructure
Docker
Guest OS
CoreOS
App 1 App 2
Guest OS
CoreOS
Docker
App 3 App 4
$ vagrant up
Bringing machine 'core-01' up with 'virtualbox'
provider...
Bringing machine 'core-02' up with 'virtualbox'
provider...
==> core-01: Importing base box
'coreos_766.3.0.box'...
==> core-01: Matching MAC address for NAT
networking...
==> core-01: Setting the name of the VM:
scalable-qa-with-docker_core-
01_1443034087957_90607
==> core-01: Clearing any previously set network
interfaces...
==> core-01: Preparing network interfaces based
on configuration...
1. SET UP
What are Vagrant & Virtualbox
Virtualbox
- Runs virtual machines on your machine
- Cross platform (OS X, Windows, Linux)
- Open source
Vagrant
- Utility for building development environments
- Utility for distributing these environments
- Vagrant cloud
- Open source
Vagrant + Virtualbox provide reproducible
environments, ideal for dev and test
17
1. SET UP
What is Docker
Platform for building, shipping and running
applications
Standardized container format
- Application packaging
- Isolation
- Distribution
Runs any app, everywhere
18
1. SET UP
What is Docker
Lightweight
- Share system kernel and
common files
Open
- Runs on Linux (and
Windows)
Secure
- Isolate applications
Share and collaborate
- Store, distribute and
manage Docker images in
docker registry
Scale
- Containers spin up in
seconds
Accelerate developer
- Copy production code and
run locally
Empower developer
- Free to use the best
language for the job
without causing conflict
issues
Eliminate environment
inconsistencies
- Shipping the application
with configs and
dependencies as a
container
19
1. SET UP
What is CoreOS
Bare Linux OS, designed to
run Linux Containers like
Docker
Designed for security,
consistency, and reliability
No package manager , have
to run everything in a
container
Clustering is first class citizen
Automatic updates
20
1. SET UP
CoreOS components
Docker - Container runtime
Etcd - Distributed K/V store, basis for
clustering
Fleet - Basic scheduler
Systemd - Service manager
Flannel - Networking between containers
21
1. SET UP
CoreOS Unit Files
22
[Unit]
Description=petclinic
After=docker.service
Requires=docker.service
[Service]
Restart=always
RestartSec=5
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker pull docker-registry:5000/petclinic
ExecStartPre=-/usr/bin/docker kill petclinic
ExecStartPre=-/usr/bin/docker rm petclinic
ExecStart=/usr/bin/docker run 
-p 8282:8080 
--name="petclinic" 
docker-registry:5000/petclinic
ExecStop=/usr/bin/docker stop petclinic
1. SET UP
Up and Running
System under test
- Petclinic
Source Repository
- Gitbucket
Continuous Integration
- Jenkins
23
1. SET UP
core-01
Source
Repository
Continuous
Integration
System
Under Test
core-02
24
2. SELENIUM JOB
Run test job on Jenkins
Create test
Commit & Push
Run test
25
Core 01
GitBucket Jenkins
Testrunner
2. SELENIUM JOB
Does it scale?
No, Why not?
Test fixed to specific selenium node
What if
- Different browser tests
- +100 tests?
- Selenium upgrade
26
2. SELENIUM JOB
27
3. SETUP SELENIUM GRID
Core 01
Node
Setup Selenium Grid
Start Selenium Grid
- Add Hub
- Add node: chrome
- Add node: Firefox
28
3. SETUP SELENIUM GRID
GitBucket Jenkins
NodeHub
Does it Scale?
Yes we can test multiple browsers!
But…!?
What if?
- +100 tests?
- Selenium upgrades?
- Grid Stability?
29
3. SETUP SELENIUM GRID
30
4. ADD NODE TO GRID
Add Core to Grid
Start Selenium Grid
Add Selenium node
on new core
Test with new node
31
4. ADD NODE TO GRID
Core 01
GitBucket Jenkins
TestrunnerTestrunner
Core 02
Testrunner
Does it scale?
Yes we can 100+ tests!!!
But what if
- Selenium upgrade?
- Grid Stability?
32
4. ADD NODE TO GRID
33
5. SCALE THE GRID
Really scale up the grid!
Manually scaling grids does not scale
Add scheduling component: Mesos
34
5. SCALE THE GRID
Mesos to rule them all
Mesos groups separate machines into one
big resource pool
35
5. SCALE THE GRID
What is Mesos?
Mesosphere provides features such as
application scheduling, scaling, fault-
tolerance, and self-healing.
It also provides application service discovery,
port unification, and end-point elasticity.
36
5. SCALE THE GRID
Mesos Architecture
37
5. SCALE THE GRID
Scale: Manage all the resources
Mesos master
Mesos slave
Mesos plugin for Jenkins
- Registers framework to
start Jenkins slaves on
Mesos slaves
38
5. SCALE THE GRID
Core 01
GitBucket Jenkins
Mesos Master
Core 02
Mesos slave
Bonus: Other test tool
39
ADDED BONUS
SCALE ALL THE THINGS
All the things?
Mesos is a generic scheduler
Can run any job, not just selenium
Use your mesos cluster to run any test
- Integration testing
- Security testing
- Performance testing
- ...
40
ADDED BONUS: SCALEALL THE THINGS
Questions?
Scalable QA With Docker

More Related Content

What's hot

Zombies in Kubernetes
Zombies in KubernetesZombies in Kubernetes
Zombies in KubernetesThomas Fricke
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline Docker, Inc.
 
CI/CD Pipeline with Docker
CI/CD Pipeline with DockerCI/CD Pipeline with Docker
CI/CD Pipeline with Dockerkushalsingh007
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumChris Adkin
 
Hooking Docker With Selenium
Hooking Docker With SeleniumHooking Docker With Selenium
Hooking Docker With SeleniumSujith Vakathanam
 
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_Compose
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_ComposePhoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_Compose
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_ComposeYeong Sheng Tan
 
Securing Containers, One Patch at a Time - Michael Crosby, Docker
Securing Containers, One Patch at a Time - Michael Crosby, DockerSecuring Containers, One Patch at a Time - Michael Crosby, Docker
Securing Containers, One Patch at a Time - Michael Crosby, DockerDocker, Inc.
 
CI/CD with Docker on AWS
CI/CD with Docker on AWSCI/CD with Docker on AWS
CI/CD with Docker on AWSHart Hoover
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 
Continuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsContinuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsB1 Systems GmbH
 
Docker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker, Inc.
 
The Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
The Golden Ticket: Docker and High Security Microservices by Aaron GrattafioriThe Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
The Golden Ticket: Docker and High Security Microservices by Aaron GrattafioriDocker, Inc.
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practiceDocker, Inc.
 
DockerCon EU 2015: Trading Bitcoin with Docker
DockerCon EU 2015: Trading Bitcoin with DockerDockerCon EU 2015: Trading Bitcoin with Docker
DockerCon EU 2015: Trading Bitcoin with DockerDocker, Inc.
 
DockerCon EU 2015: Stop Being Lazy and Test Your Software!
DockerCon EU 2015: Stop Being Lazy and Test Your Software!DockerCon EU 2015: Stop Being Lazy and Test Your Software!
DockerCon EU 2015: Stop Being Lazy and Test Your Software!Docker, Inc.
 
Docker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David LawrenceDocker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David LawrenceDocker, Inc.
 
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...Docker, Inc.
 
Docker - A container full of Chocolatey
Docker - A container full of ChocolateyDocker - A container full of Chocolatey
Docker - A container full of ChocolateyStefan Scherer
 
Build Your Own SaaS using Docker
Build Your Own SaaS using DockerBuild Your Own SaaS using Docker
Build Your Own SaaS using DockerJulien Barbier
 

What's hot (20)

Zombies in Kubernetes
Zombies in KubernetesZombies in Kubernetes
Zombies in Kubernetes
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
CI/CD Pipeline with Docker
CI/CD Pipeline with DockerCI/CD Pipeline with Docker
CI/CD Pipeline with Docker
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgium
 
Hooking Docker With Selenium
Hooking Docker With SeleniumHooking Docker With Selenium
Hooking Docker With Selenium
 
Jenkins & IaC
Jenkins & IaCJenkins & IaC
Jenkins & IaC
 
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_Compose
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_ComposePhoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_Compose
Phoenix 1.3 Umbrella App deployment via Distillery-Docker-Docker_Compose
 
Securing Containers, One Patch at a Time - Michael Crosby, Docker
Securing Containers, One Patch at a Time - Michael Crosby, DockerSecuring Containers, One Patch at a Time - Michael Crosby, Docker
Securing Containers, One Patch at a Time - Michael Crosby, Docker
 
CI/CD with Docker on AWS
CI/CD with Docker on AWSCI/CD with Docker on AWS
CI/CD with Docker on AWS
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
Continuous Integration using Docker & Jenkins
Continuous Integration using Docker & JenkinsContinuous Integration using Docker & Jenkins
Continuous Integration using Docker & Jenkins
 
Docker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to DockerDocker Bday #5, SF Edition: Introduction to Docker
Docker Bday #5, SF Edition: Introduction to Docker
 
The Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
The Golden Ticket: Docker and High Security Microservices by Aaron GrattafioriThe Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
The Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practice
 
DockerCon EU 2015: Trading Bitcoin with Docker
DockerCon EU 2015: Trading Bitcoin with DockerDockerCon EU 2015: Trading Bitcoin with Docker
DockerCon EU 2015: Trading Bitcoin with Docker
 
DockerCon EU 2015: Stop Being Lazy and Test Your Software!
DockerCon EU 2015: Stop Being Lazy and Test Your Software!DockerCon EU 2015: Stop Being Lazy and Test Your Software!
DockerCon EU 2015: Stop Being Lazy and Test Your Software!
 
Docker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David LawrenceDocker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David Lawrence
 
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
 
Docker - A container full of Chocolatey
Docker - A container full of ChocolateyDocker - A container full of Chocolatey
Docker - A container full of Chocolatey
 
Build Your Own SaaS using Docker
Build Your Own SaaS using DockerBuild Your Own SaaS using Docker
Build Your Own SaaS using Docker
 

Similar to Scalable QA With Docker

Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapPatrick Chanezon
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyAjeet Singh Raina
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT CampusAjeet Singh Raina
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 
Deploying Windows Apps to Kubernetes with Draft and Helm
Deploying Windows Apps to Kubernetes with Draft and HelmDeploying Windows Apps to Kubernetes with Draft and Helm
Deploying Windows Apps to Kubernetes with Draft and HelmJessica Deen
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerAjeet Singh Raina
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Ajeet Singh Raina
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Patrick Chanezon
 
Net core, mssql, container und kubernetes
Net core, mssql, container und kubernetesNet core, mssql, container und kubernetes
Net core, mssql, container und kubernetesThomas Fricke
 
OpenStack @ Workday - CI/CD
OpenStack @ Workday - CI/CDOpenStack @ Workday - CI/CD
OpenStack @ Workday - CI/CDEdgar Magana
 
2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.com2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.comMathieu Buffenoir
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA
 
Scaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and KubernetesScaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and KubernetesManoj Kumar Kumar
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopMichael Palotas
 
Zalenium - How to run Selenium Script using Docker and Selenium Grid
Zalenium - How to run Selenium Script using Docker and Selenium GridZalenium - How to run Selenium Script using Docker and Selenium Grid
Zalenium - How to run Selenium Script using Docker and Selenium GridMoataz Nabil
 

Similar to Scalable QA With Docker (20)

Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
dockerSAW
dockerSAWdockerSAW
dockerSAW
 
Deploying Windows Apps to Kubernetes with Draft and Helm
Deploying Windows Apps to Kubernetes with Draft and HelmDeploying Windows Apps to Kubernetes with Draft and Helm
Deploying Windows Apps to Kubernetes with Draft and Helm
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
 
Net core, mssql, container und kubernetes
Net core, mssql, container und kubernetesNet core, mssql, container und kubernetes
Net core, mssql, container und kubernetes
 
OpenStack @ Workday - CI/CD
OpenStack @ Workday - CI/CDOpenStack @ Workday - CI/CD
OpenStack @ Workday - CI/CD
 
2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.com2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.com
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in Testing
 
Scaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and KubernetesScaling your Automated Tests: Docker and Kubernetes
Scaling your Automated Tests: Docker and Kubernetes
 
ExpoQA 2017 Docker and CI
ExpoQA 2017 Docker and CIExpoQA 2017 Docker and CI
ExpoQA 2017 Docker and CI
 
Docker & ci
Docker & ciDocker & ci
Docker & ci
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Zalenium - How to run Selenium Script using Docker and Selenium Grid
Zalenium - How to run Selenium Script using Docker and Selenium GridZalenium - How to run Selenium Script using Docker and Selenium Grid
Zalenium - How to run Selenium Script using Docker and Selenium Grid
 

Recently uploaded

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

Scalable QA With Docker

  • 1. Software Development Done Right Scalable QA with Docker 1 Maarten van den Ende – @mjvdende Adé Mochtar – amochtar@xebia.com
  • 2. Introduction Maarten van den Ende Test Automation Architect @mjvdende Adé Mochtar Data Center Automator amochtar@xebia.com 2
  • 4. Code Examples 4 $ git clone https://github.com/xebia/scalable-qa-with-docker.git $ cd scalable-qa-with-docker/ $ vagrant up Download data.zip from http://bit.ly/tw-scale-data and unzip in scalable-qa-with-docker/ dir 1 2 3
  • 8. Selenium Grid to the rescue Use Grid to run all your tests One interface for testing all the browsers Fixed set of browsers nodes are at your disposal, ready for more 8
  • 10. Selenium Grid Over Time 10 Not enough nodes configured - For example: growing need to regression test each branch after each commit So you really need to take care of your selenium grid... Selenium Grid hard to maintain - Browser updates - Selenium updates Selenium Grid stability - Selenium nodes go out of memory - Browser timeouts
  • 11. 11
  • 12. 12 How To Scale Properly
  • 13. How to scale properly Start test - Scale up - Start nodes when needed - Start different flavor End test - Scale down - Remove nodes Ready for More! 13 Server X Source Repository Continuous Integration Datacenter Y Testrunner Chrome node Testrunner Chrome node TestrunnerSystem Under Test
  • 14. Next 60 minutes 1. Setup environment 2. Selenium job 3. Setup selenium grid 4. Add node to grid 5. Scale the grid 14
  • 15. 15 1. SET UP ENVIRONMENT
  • 16. Set up Start environment 16 Host OS Virtualbox - Virtualisatie Infrastructure Docker Guest OS CoreOS App 1 App 2 Guest OS CoreOS Docker App 3 App 4 $ vagrant up Bringing machine 'core-01' up with 'virtualbox' provider... Bringing machine 'core-02' up with 'virtualbox' provider... ==> core-01: Importing base box 'coreos_766.3.0.box'... ==> core-01: Matching MAC address for NAT networking... ==> core-01: Setting the name of the VM: scalable-qa-with-docker_core- 01_1443034087957_90607 ==> core-01: Clearing any previously set network interfaces... ==> core-01: Preparing network interfaces based on configuration... 1. SET UP
  • 17. What are Vagrant & Virtualbox Virtualbox - Runs virtual machines on your machine - Cross platform (OS X, Windows, Linux) - Open source Vagrant - Utility for building development environments - Utility for distributing these environments - Vagrant cloud - Open source Vagrant + Virtualbox provide reproducible environments, ideal for dev and test 17 1. SET UP
  • 18. What is Docker Platform for building, shipping and running applications Standardized container format - Application packaging - Isolation - Distribution Runs any app, everywhere 18 1. SET UP
  • 19. What is Docker Lightweight - Share system kernel and common files Open - Runs on Linux (and Windows) Secure - Isolate applications Share and collaborate - Store, distribute and manage Docker images in docker registry Scale - Containers spin up in seconds Accelerate developer - Copy production code and run locally Empower developer - Free to use the best language for the job without causing conflict issues Eliminate environment inconsistencies - Shipping the application with configs and dependencies as a container 19 1. SET UP
  • 20. What is CoreOS Bare Linux OS, designed to run Linux Containers like Docker Designed for security, consistency, and reliability No package manager , have to run everything in a container Clustering is first class citizen Automatic updates 20 1. SET UP
  • 21. CoreOS components Docker - Container runtime Etcd - Distributed K/V store, basis for clustering Fleet - Basic scheduler Systemd - Service manager Flannel - Networking between containers 21 1. SET UP
  • 22. CoreOS Unit Files 22 [Unit] Description=petclinic After=docker.service Requires=docker.service [Service] Restart=always RestartSec=5 TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker pull docker-registry:5000/petclinic ExecStartPre=-/usr/bin/docker kill petclinic ExecStartPre=-/usr/bin/docker rm petclinic ExecStart=/usr/bin/docker run -p 8282:8080 --name="petclinic" docker-registry:5000/petclinic ExecStop=/usr/bin/docker stop petclinic 1. SET UP
  • 23. Up and Running System under test - Petclinic Source Repository - Gitbucket Continuous Integration - Jenkins 23 1. SET UP core-01 Source Repository Continuous Integration System Under Test core-02
  • 25. Run test job on Jenkins Create test Commit & Push Run test 25 Core 01 GitBucket Jenkins Testrunner 2. SELENIUM JOB
  • 26. Does it scale? No, Why not? Test fixed to specific selenium node What if - Different browser tests - +100 tests? - Selenium upgrade 26 2. SELENIUM JOB
  • 28. Core 01 Node Setup Selenium Grid Start Selenium Grid - Add Hub - Add node: chrome - Add node: Firefox 28 3. SETUP SELENIUM GRID GitBucket Jenkins NodeHub
  • 29. Does it Scale? Yes we can test multiple browsers! But…!? What if? - +100 tests? - Selenium upgrades? - Grid Stability? 29 3. SETUP SELENIUM GRID
  • 30. 30 4. ADD NODE TO GRID
  • 31. Add Core to Grid Start Selenium Grid Add Selenium node on new core Test with new node 31 4. ADD NODE TO GRID Core 01 GitBucket Jenkins TestrunnerTestrunner Core 02 Testrunner
  • 32. Does it scale? Yes we can 100+ tests!!! But what if - Selenium upgrade? - Grid Stability? 32 4. ADD NODE TO GRID
  • 34. Really scale up the grid! Manually scaling grids does not scale Add scheduling component: Mesos 34 5. SCALE THE GRID
  • 35. Mesos to rule them all Mesos groups separate machines into one big resource pool 35 5. SCALE THE GRID
  • 36. What is Mesos? Mesosphere provides features such as application scheduling, scaling, fault- tolerance, and self-healing. It also provides application service discovery, port unification, and end-point elasticity. 36 5. SCALE THE GRID
  • 38. Scale: Manage all the resources Mesos master Mesos slave Mesos plugin for Jenkins - Registers framework to start Jenkins slaves on Mesos slaves 38 5. SCALE THE GRID Core 01 GitBucket Jenkins Mesos Master Core 02 Mesos slave
  • 39. Bonus: Other test tool 39 ADDED BONUS SCALE ALL THE THINGS
  • 40. All the things? Mesos is a generic scheduler Can run any job, not just selenium Use your mesos cluster to run any test - Integration testing - Security testing - Performance testing - ... 40 ADDED BONUS: SCALEALL THE THINGS