Think Inside Container

Post on 11-Jan-2017

201 views 0 download

Transcript of Think Inside Container

THINK INSIDE CONTAINERRELIABLE AND SCALABLE INFRASTRUCTURE FOR SELENIUM TESTS

IRFAN AHMAD @notimewaste

OUTLINE

Why?

Wat?

Why ?

Why ?

Why ?

Why?

What?

Really?

How?

What Next?

WHY THIS TALK …

ship tests as containers, not code.

WHY SHOULD WE CARE….

power lies in “packaging”

WHY ?

CHALLENGES IN TESTING & DELIVERY

WHY WE FAIL TO TEST?

45%

18% 2%

35%

Unreliable Tests Infra.

Unreliable Tests

Ineffective Tests

Not needed

MATRIX FROM HELL - SHIP GOODS?

MATRIX FROM HELL - SHIP SOFTWARE?

CONTAINERS TO RESCUE

WHAT ?

CONTAINERS

AN APPLICATION, PLUS ALL ITS DEPENDENCIES, LIBRARIES AND OTHER BINARIES, AND CONFIGURATION FILES NEEDED TO RUN IT, BUNDLED INTO ONE PACKAGE.

WHAT ARE CONTAINERS?

AN ENTIRE ISOLATED PORTABLE RUNTIME ENVIRONMENT

LIFE BEFORE/AFTER CONTAINERS

CONFIG

VAGRANT JENKINS CHEF

DEV TEST LIVE

CODE CONFIG CODE

CONTAINER

DEV TEST LIVE

container becoming a “unit of exchange”

DOCKER▸ Docker is an open platform for developers and

sysadmins to build, ship, and run distributed applications.

DOCKER HUB

https://hub.docker.com/r/selenium/hub/

CONTAINERS VS VM .

DOCKER : BASIC WORKFLOW

DOCKER: UNDERSTANDING BASIC WORKFLOW

DOCKER RUN LOOKS FOR LOCAL IMAGES PRESENT?

LOOKS REGISTRY FOR IMAGES

NO

AVAILABLE ?

DOWNLOADS THE IMAGE

IMAGE INSTALLED LOCALLY

CREATES NEW CONTAINER AND

STARTS

CONTAINER IS RUNNING

YES

YES

NOEXIT

REALLY?

LETS - SEE DEMO

https://www.youtube.com/watch?v=KH5egcHe4UU

HOW?

CONTAINERISE YOUR STACK

1.INSTALL DOCKER (ONLY)

docker for mac / windows docker toolbox docker engine for linux

2.WRITE DOCKERFILE▸ configuration file with build instructions for

Docker images

3.WRITE COMPOSE ▸ Compose is a tool for defining and running

multi-container Docker applications

SIMPLE VOTING APP : APP UNDER TEST▸ Simple Real Time voting app

▸ Runs with Docker Compose and multiple containers in network

VOTING APP : COMPONENTS

Deliver below tests as container to test Voting app

1.API 2.Web 3.Web with Selenium Grid

PROBLEM STATEMENT

SOLUTION - TESTING AS CONTAINERS

VOTING APP

REDIS

RESULT APP

WORKER

DATABASE

SE. HUB

CHROME

FIREFOX

CHROME

FIREFOX

CHROME

FIREFOX

TESTSTACK

APPIUM

REALLY?

LETS - LIVE DEMO

https://www.youtube.com/watch?v=kXlS69PXX68

WHAT NEXT?

CONAINERISE EVERYTHING

TRY A SIMPLE CI WORKFLOW

Q & A THANK YOU

Available - For Hands On

Github https://github.com/irfanah/TestStack https://github.com/irfanah/example-voting-app

Docker hub https://hub.docker.com/u/irfanah/

IRFAN AHMAD

Email irfan@critick.io Web http://critick.io Twitter @notimewaste Github irfanah