2. 2
WHO AM I?
Gridfusion Software Solutions
Contact:
Michael Palotas
Gerbiweg 2
8853 Lachen
SWITZERLAND
Tel.: +41 79 6690708
Email: michael.palotas@gridfusion.net
Founder / Principal Consultant
Gridfusion Software Solutions
Head of Productivity & Test Engineering, eBay
3. SETTING THE STAGE
Tell me about yourself J
What are your expectations for today?
3
4. POSSIBLE AGENDA TOPICS
Introduction
CI – what is it, why do we use it, what are we trying to achieve
Automation / Code Quality
Tools
Unit tests
Cobertura
Sonar
E2E Tests
Selenium
Cucumber
Amazon cloud
Pipeline
Integrating mobile
Vagrant - Infrastructure as code
Management / organizational aspect
4
11. WHAT IS CI / CD?
CI and CD
=
Automated Build?
Automated Tests?
Automated Quality?
Automated Deployment?
Automated Feedback?
11
12. WHY CI / CD
Deliver value to the business more frequently
Better Quality
Early Bugs
Bug Prevention instead of late detection
Fast & frequent feedback
12
13. WHY CI / CD
Automated frequent builds
Automated frequent tests
Automated frequent code quality metrics
(Hopefully) Fewer bugs
Early feedback
Fast feedback
13
14. WITHOUT CI
Slow / long release cycles
Late testing
Waterfall (WaterScrum)
Bugs
Slow feedback
Complex integration
14
15. CORE PRINCIPLES
Every build could be a release
Everything should be automated
Stable and trustworthy automated tests
Build pipelines
15
16. RELEASING IN THE OLD WORLD
16
Coding
Deploy to
QA
QA
Deploy to
Production
Production
Smoke
Tests
Bug
Bashes
17. CI / CD - CORE WORKFLOW
17
Compile
Unit Test
Deploy to QA
Acceptance tests
Deploy to Production
Production Smoke Tests
Code Quality
18. THE MAIN TASKS
Automated build
Automated code quality
Automated testing
Automated deployment
18
20. CAN YOU MEASURE AUTOMATED CODE
QUALITY? DOES THAT MAKE SENSE?
20
21. AUTOMATED CODE QUALITY?
Sonar gives you information on:
- Lines of code
- % of comments
- Duplications
- Complexity
- Rules compliance
- Unit test coverage
- Unit test success rate
- Unit test duration
- Hotspots
21
25. WHAT IS CONTIUOUS INTEGRATION?
Continuous integration (CI) is the practice, in software engineering,
of merging all developer working copies with a shared mainline
several times a day. It was first named and proposed as part of
extreme programming (XP). Its main aim is to prevent integration
problems, referred to as "integration hell" in early descriptions of XP.
CI can be seen as an intensification of practices of periodic
integration advocated by earlier published methods of incremental
and iterative software development, such as the Booch method. CI
isn't universally accepted as an improvement over frequent
integration, so it is important to distinguish between the two as there
is disagreement about the virtues of each.
25
26. WHAT IS CONTINUOUS DELIVERY?
26
Continuous Delivery (CD) is a design practice used in software
development to automate and improve the process of software
delivery. Techniques such as automated testing, continuous
integration and continuous deployment allow software to be
developed to a high standard and easily packaged and
deployed to test environments, resulting in the ability to
rapidly, reliably and repeatedly push out enhancements and
bug fixes to customers at low risk and with minimal manual
overhead. The technique was one of the assumptions of
extreme programming but at an enterprise level has
developed into a discipline of its own, with job descriptions for
roles such as "buildmaster" calling for CD skills as mandatory.
27. THE MANAGEMENT / ORGANIZATIONAL ASPECT
What are the changes for developers and
testers?
What needs to be changed in the organization to
enable them to implement CI / CD?
What role has management in creating a devops
culture?
27
28. OUR TOOLS
Version Control System GIT
Build Tool MAVEN
Unit Test Framework JUNIT / TESTNG
End To End Test Framework SELENIUM
Build Server / Deployment JENKINS
28
29. VERSION CONTROL: GIT
Branching & Merging
Small and Fast
Distributed
Data Assurance
Staging Area
Free and Open Source
http://git-scm.com/about/
29
38. POM.XML
The pom.xml file is the core of a project's
configuration in Maven. It is a single
configuration file that contains the majority of
information required to build a project in just
the way you want.
38
40. MAVEN TARGETS
validate: validate the project is correct and all necessary information is available
compile: compile the source code of the project
test: test the compiled source code using a suitable unit testing framework. These tests should not
require the code be packaged or deployed
package: take the compiled code and package it in its distributable format, such as a JAR.
integration-test: process and deploy the package if necessary into an environment where integration
tests can be run
verify: run any checks to verify the package is valid and meets quality criteria
install: install the package into the local repository, for use as a dependency in other projects locally
deploy: done in an integration or release environment, copies the final package to the remote repository
for sharing with other developers and projects.
clean: cleans up artifacts created by prior builds
40
54. E2E / UAT AUTOMATION WITH SELENIUM
54
CLIENT
SERVER
JSON Wire Protocol
BROWSER
55. SELENIUM 2 / WEBDRIVER
JSON WIRE
PROTOCOL
Client
Java
C#
Ruby
Python
Server
Server
Server
i.e. Selendroid, iOS-Driver
56. CLIENT
Is seen as „Selenium“ by the users
Generates HTTP requests which are received by the server
Is called by the test framework or the CI server
Supported languages: Java, C#, Python, Ruby, Perl, PHP,
JS
57. SERVER
Receives HTTP requests
Start and teardown of browser
Translates requests into browser specific commands
Communicates back to the client
58. SELENIUM GRID
Test 1 Test 2 Test
…
Test
4500
Test 3
Execution Time
Parallel Execution
Tes t Tes t Tes t Tes t
Tes t Tes t Tes t Tes t
Test Test Test
Execution Time
Test
Parallel Execution
Parallel Execution
59. SCALING – SELENIUM GRID
DEV
CI
….
SELENIUM GRID
HUB
IOS ANDROID
WINDOWS
LINUX
OSX
69. WHAT JENKINS DOES
Jenkins checks out the workspace from Github
Builds and runs tests locally according to POM
Runs maven targets according to POM
description
69