Continuous Integration Multi-Stage Builds for Quality Assurance

Similar documents
Build management & Continuous integration. with Maven & Hudson

Software infrastructure for Java development projects

Software project management. and. Maven

Maven2. Configuration and Build Management. Robert Reiz

Java Software Quality Tools and techniques

Delivering Quality Software with Continuous Integration

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Content. Development Tools 2(63)

Software project management. and. Maven

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Continuous Delivery. Alejandro Ruiz

Upping the game. Improving your software development process

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Software Construction

Continuous Integration in Kieker

Jenkins: The Definitive Guide

Maven or how to automate java builds, tests and version management with open source tools

Accelerate Software Delivery

Continuous Integration

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Mind The Gap! Setting Up A Code Structure Building Bridges

Software Continuous Integration & Delivery

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

SMZ. SocialMedia. Z olutions

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Continuous Integration

Introduction to Programming Tools. Anjana & Shankar September,2010

Java Forum Nord Dirk Mahler

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Hands on exercise for

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

SOFTWARE DEVELOPMENT BASICS SED

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Sonatype CLM for Maven. Sonatype CLM for Maven

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Software Quality Exercise 2

Continuous Integration

Modulo II Qualidade de Software com Maven

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

Maven2 Reference. Invoking Maven General Syntax: Prints help debugging output, very useful to diagnose. Creating a new Project (jar) Example:

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Open Source Tools. The Magazine for Professional Testers. December 2010

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Mastering Continuous Integration with Jenkins

Chapter 11, Testing, Part 2: Integration and System Testing

Continuous integration in OSGi projects using Maven (v:0.1) Sergio Blanco Diez

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

Software Configuration Management and Continuous Integration

GETTING STARTED WITH CONTINUOUS DELIVERY. Lana wcgp.co

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Hudson Continous Integration Server. Stefan Saasen,

Introduction to Agile Software Development Process. Software Development Life Cycles

Software configuration management

SA4 Software Developer Survey Survey Specification v2.2

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Developing Applications Using Continuous Integration 12c (12.2.1)

Kevin Lee Technical Consultant As part of a normal software build and release process

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Realizing Continuous Performance Management

CONTINUOUS INTEGRATION

The Importance of Continuous Integration for Quality Assurance Teams

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

CI/CD Cheatsheet. Lars Fabian Tuchel Date: 18.March 2014 DOC:

Massively! Continuous Integration! A case study for Jenkins at cloud-scale

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Effective feedback from quality tools during development

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

How To Write Unit Tests In A Continuous Integration

Git Branching for Continuous Delivery

Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID

DevOps. Jesse Pai Robert Monical 8/14/2015

Continuous Integration For Fusion Middleware

Professional Java Tools for Extreme Programming. Ant, XDoclet, JUnit, Cactus, and Maven

VOC Documentation. Release 0.1. Russell Keith-Magee

Jenkins on Windows with StreamBase

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

Continuous Integration

"Build and Test in the Cloud "

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

CI:IRL. By Beth Tucker Long

Continuous Integration

How To Use An Orgsync With Anorgfusion Middleware

Transcription:

Continuous Integration Multi-Stage Builds for Quality Assurance Dr. Beat Fluri Comerge AG

ABOUT MSc ETH in Computer Science Dr. Inform. UZH, s.e.a.l. group Over 8 years of experience in object-oriented software engineering with Java Special focus on Java EE 6 2

Roadmap > V-Model > Continuous Integration > Example JEE RESTful application > Multistage Builds for V-Model 3

V-Model Specification User needs Acceptance Test Implementation Delivery System Test System Spec System Subsystem Design/Spec Integration Test Subsystem Unit Design/Spec Unit Test Unit 4

Continuous Integration WHAT... is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Martin Fowler, http://martinfowler.com/articles/continuousintegration.html 5

Continuous Integration HOW commit changes commit changes multi-stage builds unit tests commit changes triggers build integration tests quality assurance deployment 6

Continuous Integration HOW > Version control repository: CVS, Subversion, Git, Mercurial, etc. > Build tools: Ant, Maven, Make, Gant, Grails, Rake, etc. > Continuous integration environment (server): CruiseControl, Continuum, Hudson/Jenkins 7

Continuous Integration WHY > Reduce risks > Defects are detected when they are introduced > Measure the health of a software > Environment always the same and build starts clean => no assumptions Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 8

Continuous Integration WHY > Reduce repetitive manual processes (safe time and costs) > Process runs the same every time > Ordered process: compile, unit tests, integration tests, qa, etc. Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 9

Continuous Integration WHY > Generate deployable software at any time and at any place > Going back in the build history to deploy older, maybe stable, builds Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 10

Continuous Integration WHY > Enable better project visibility > Decisions on quality improvements and tests are shown immediately > Ability to notice trends in various quality metrics (# bugs; # checkstyle, findbugs, pmd violations; code coverage of test cases) Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 11

Continuous Integration WHY > Establish greater confidence in the software product from the development team > Making progress is visible and encourages developers > Confidence increases if the increase of overall product quality is visible Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 12

Continuous Integration WHY > Same code basis for every developer: reduces communication overhead > Go to build #x, do you see... Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 13

Continuous Integration MEET JENKINS 14

Version Control GIT > Version control is the management of changes to documents, programs, and other information stored as computer files. > History of changes to a file visible at any time. > Maintain a master repository on a server and all developers get a consolidated copy of the project 15

Version Control GIT > Create a repository > $ mkdir project > $ cd project > $ git init > Create a Java class with an empty method 16

Version Control GIT > Add the file to the repository and commit > $ git add SimpleClass.java > $ git commit > Make a change to the method 17

Maven BUILD AUTOMATION > Maven is a build and software project management tool > Maven works with Project Object Models (pom.xml) files to specify project settings > Plugin architecture to include tools into the build cycle 18

Maven MAIN PRINCIPLE > Convention over configuration >./src/main/java >./src/main/resources >./src/test/java >./src/test/resources >./target/classes >./target/* (*.jar, reports, etc.) 19

Maven BUILD LIFECYCLE > compile > test > package > integration-test > verify > install > deploy > $ mvn <phase> 20

Maven DEPENDENCY MANAGEMENT > Maven works with repositories where a huge number of jars are stored > Specify a dependency in the POM file > maven downloads the necessary jar file 21

Maven DEPENDENCY MANAGEMENT <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8</version> <scope>test</scope> </dependency> </dependencies> 22

Sports Ground EXAMPLE > Java Enterprise Edition 6 (JEE 6) > RESTful API > REpresentation State Transfer (JAX-RS) > JBoss Application Server 7.1 > https://github.com/kraftan/ci-showcase 23

V-Model Specification User needs System Spec Unit test are F.I.R.S.T. Fast Isolated Repeatable Self-Verifying Timely (reflect specification) Implementation Delivery System Subsystem Design/Spec Subsystem Unit Design/Spec Unit Test Unit 24

V-Model Specification User needs System Spec Integration tests Break up isolation to components Use framework Need run-time environment Are slower than unit tests Implementation Delivery System Subsystem Design/Spec Integration Test Subsystem Unit Design/Spec Unit Test Unit 25

V-Model Specification User needs System tests Run against the fully deployed (or installed) application Simulate user interaction System Test Implementation Delivery System Spec System Subsystem Design/Spec Integration Test Subsystem Unit Design/Spec Unit Test Unit 26

Non-Functional Req EFFICIENCY > Performance testing > Which component have a long response time? > For instance, certain DB query may take noticeably longer than others > Load testing > How does the system work under heavy load? > How long does it take to complete a request if specific number of persons interact with the system > Stress testing > How does the system react if it is overloaded? 27

Used Tools > Git - Version Control > Maven - Build Automation > Jenkins - Continuous Integration > Java EE 6 on JBoss AS 7 (Example on github) > JUnit - Unit testing > mockito - Unit testing in isolation > Arquillian - In-container integration testing > Sonar - Quality Assurance > JMeter - Load testing 28

Wrap Up Design to Test Use CI to Check 29