Jenkins User Conference Herzelia, July 5 2012 #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP http://hp.

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

Software infrastructure for Java development projects

opencrx Enterprise Class Open Source CRM

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Continuous Integration Multi-Stage Builds for Quality Assurance

Rich Web Applications in Server-side Java without Plug-ins or JavaScript

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

Continuous Integration Processes and SCM To Support Test Automation

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Contents. BMC Atrium Core Compatibility Matrix

Mastering Continuous Integration with Jenkins

Rapid Application Development. and Application Generation Tools. Walter Knesel

Operations and Monitoring with Spring

Java Software Quality Tools and techniques

HELIO Storage Service Developers Guide Draft

Hudson configuration manual

PL/SQL. JSP Java Script. Struts JSF EJB 2.1. Hibernate. JBoss RichFaces EJB 3

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

JAVA/J2EE DEVELOPER RESUME

Scalable Web Programming. CS193S - Jan Jannink - 1/12/10

Continuous Integration

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

Software Development Tools

Agile Best Practices and Patterns for Success on an Agile Software development project.

WHITE PAPER. Domo Advanced Architecture

AngularJS, Javascript, Prototype-based OO concept, RESTful Design Pattern, GWT, HTML5, Database.

Technical Report. Implementation and Performance Testing of Business Rules Evaluation Systems in a Computing Grid. Brian Fletcher x

HP Service Manager Compatibility Matrix

Performance Optimization For Operational Risk Management Application On Azure Platform

<Insert Picture Here> TDD on a Coherence project

Portals, Portlets & Liferay Platform

OnCommand Performance Manager 1.1

Please do not SUPER SIZE ME enterprise integration using the Camunda Fox Plattform Ralf Sigmund OPITZ CONSULTING

Modulo II Qualidade de Software com Maven

Apache Jakarta Tomcat

IBM Cloud Manager with OpenStack

Installation Guide for contineo

Developing modular Java applications

OXAGILE RESUMES SUMMARY OF QUALIFICATIONS TECHNICAL SKILLS SENIOR JAVA SOFTWARE ENGINEER

Managing Application Performance with JBoss Operations Network and OC Systems RTI

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

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Automation and Virtualization, the pillars of Continuous Testing

DESIGN OF AUTOMATION SCRIPTS EXECUTION APPLICATION FOR SELENIUM WEBDRIVER AND TestNG FRAMEWORK

WEB APPLICATION DEVELOPMENT. UNIT I J2EE Platform 9

Continuous Integration: A case study

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

OUR TEAM. Enterprise Application Experts

Installation, Configuration and Administration Guide

Framework Adoption for Java Enterprise Application Development

Installation & Upgrade Guide

"Build and Test in the Cloud "

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

CloudBees Continuous Integration and Test with Appvance Enterprise August 28, 2013 Frank Cohen, (408)

Continuous Delivery. Alejandro Ruiz

SIEMENS. Teamcenter Windows Server Installation PLM

Content. Development Tools 2(63)

Upping the game. Improving your software development process

Kony MobileFabric. Sync Windows Installation Manual - WebSphere. On-Premises. Release 6.5. Document Relevance and Accuracy

Beyond the SOA/BPM frontiers Towards a complete open cooperative environment

Sav - Konnect Project Intranet

Oracle Identity Analytics Architecture. An Oracle White Paper July 2010

Cisco Integration Platform

Continuous Integration

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

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

GUI Test Automation How-To Tips

The Benefits of Utilizing a Repository Manager

Mastering Tomcat Development

Glassfish, JAVA EE, Servlets, JSP, EJB

ENGINEER - DEVELOPER ADVANCED JAVA. 28 years old - 7 years of experience

Contents. Primavera P6 Tested Configurations Release Version: Date: December 2013 Revision:

Ce document a été téléchargé depuis le site de Precilog. - Services de test SOA, - Intégration de solutions de test.

Automated Data Ingestion. Bernhard Disselhoff Enterprise Sales Engineer

Learning GlassFish for Tomcat Users

OpenMake Dynamic DevOps Suite 7.5 Road Map. Feature review for Mojo, Meister, CloudBuilder and Deploy+

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation

Jenkins TestLink Plug-in Tutorial

<Insert Picture Here> GlassFish v3 - A Taste of a Next Generation Application Server

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

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

MassTransit vs. FTP Comparison

GRAD Analytics Advanced price and promotional analysis interface. Reactive UI providing dimensional visibility to marketing analysis.

<Insert Picture Here> What's New in NetBeans IDE 7.2

EMC Data Protection Advisor 6.0

Oracle im Open Source Kontext Abgrenzung GlassFish vs. JBoss und wozu noch WebLogic?

HP Performance Center 11.5: What s New? Gurmeen Aneja

Blu Age Overview. It is not about changing the platform it is about business agility! HP Non Stop. Modernization Evolution Automation

Building a Dev/Test environment with HP CloudSystem Enterprise

VERSION 9.02 INSTALLATION GUIDE.

Triple-E class Continuous Delivery

Build management & Continuous integration. with Maven & Hudson

JASPERREPORTS SERVER INSTALLATION GUIDE

Transcription:

Testing a Large Support Matrix Using Jenkins Amir Kibbar HP http://hp.com/go/oo

About Me! 4.5 years with HP! Almost 3 years System Architect! Out of which 1.5 HP OO s SA! Before that a Java consultant for 4 years! Few start up companies! IAF

HP Operations Orchestration! An ITPA (IT Process Automation) tool! Intuitive automation of IT tasks and processes! Execute workflows! Lots of OOTB content building blocks for workflows! Extensible, pluggable and embeddable

THE PROBLEM

What Types of Bugs Are We Addressing? Functional regressions Database incompatibility Operating system incompatibility Performance degradation

Late Discovery = $$$$

A Large Support Matrix 7 Server Operating Systems 6 Client Operating Systems RHEL 5 RHEL 6 OEL 5 OEL 6 Win 2008 Win 2008 Japanese Win 2008R2 Win 7 32 bit Win 7 64 bit Win Vista 32 bit Win Vista 64 bit Win 2008 64 bit 7 Server OSs x 6 Client OSs x 6 DBs x 5 Browsers x 5 Application Server = 6300 combinations 6 Databases 5 Browsers IE 8 Win 2008 R2 64 bit SQLServer 2008 SQLServer 2008r2 SQLServer 2012 MySQL 5.5.x PostgreSQL 9.1.x Oracle 11gR2 7 Server OSs x 6 DBs + (5 Browsers x 6 Server OSs x 6 Client OSs) + (4 Application Server x 2 OSs x 2 DBs) = 259 combinations IE 9 FF 5 Application Servers Chrome Safari Tomcat 7.x JBoss 6.x JBoss 7.x Jetty 7.x Glassfish 3.1 7 Server OSs x 6 DBs + (5 Browsers x 6 Client OSs) + (4 Application Servers x 2 OSs x 2 DBs) = 88 combinations

But We Also Want A continuous process Standalone build (can be built without any external services such as a database, application server, etc.) Measureable test coverage Measureable performance metrics

UNDERSTANDING OO

Our Technologies Java 1.7 Any servlet 2.5 application server Tomcat 7.x JBoss 6.x, 7.x Glassfish 3.x Jetty 7.x Spring-* Spring web MVC Spring core Spring data JPA Spring integration Hibernate 4.1.x JPA (Entity Manager) GWT Client only no GWT-RPC RESTful APIs REST everything

(Very) High Level Architecture Application Server OO.war Spring MVC @Controllers Feature Feature Feature Spring @Services Web Layer Feature Business Logic Layer Data Access Layer Spring data JPA Repositories Standard layered architecture Each layer talks to the one below it One controller cannot call another Services can activate one another, but only through interfaces (auto-wired) Repositories are interfaces only Feature-based architecture Features are separated jars. Each feature may have a client, API and impl jar All access via REST

Unit Tests Mocks!!!! No direct tests to repositories When testing a service we mock all other services When testing a service we sometimes mock the repositories, but sometimes use inmemory H2 When testing controllers we mock the services Controllers tests try to simulate even the unlikely scenarios Client (GWT) tests test the client logic

Unit Tests Technologies JUnit Spring test Mockito Jukito H2 (in-memory)

OK, So?! Unit tests are fast! Targeted thanks to the feature-based architecture! Contribute to regression verification! Help reduce refactoring risks

System (Integration) Tests The Real Deal Black box tests API UI

System Tests Mechanics In-build tomcat Tests cannot access the DB directly Tests cannot access the server filesystem Tests can only do what a potential customer can API tests use only the RESTful APIs UI tests use the RESTful APIs to stage the UI test and perform as little UI actions as possible

System Tests Technologies maven-t7-plugin (Tomcat) JUnit Apache HttpClient Selenium

Ok, So? Real scenarios Real DB (still in-memory H2 though) Continuous process

What s Missing? The support matrix

THE SOLUTION

Target Support Matrix - Reminder ( 7 OS 6 DB )+ ( 5 browser 6 OS )+ ( 4 Application Server 2 OS 2 DB ) = 88 co Server-side Client-side Embedded

How Does it Work? Compile only create the installers Commit Installers build Deployment matrix Test suite The installers build ~10 minutes Install the application The deployment matrix 6 OS x 5 DB = 30 instances 6 VMs ~10 minutes ( 6 OS 5 DB )+ ( 2 OS 4 browser ) = 38 combinations Run all system tests including Selenium tests which use a browser 43% support matrix coverage The test suite 7 VMs with different browsers installed on them ~25 minutes

The Installers Build Creates installation package Platform specific Zip

The Deployment Matrix! A Jenkins configuration job! Slaves determine the OS! A parameter determines the DB! Runs on 6 slaves, each one with 6 instances of the application! Ant script uninstall, download latest, unzip, post install (create DB properties)

The Test Suite! A Jenkins configuration job! Slaves determine the OS! The browser is pre-determined! A parameter determines the target server instance! mvn install on the system tests project! The system tests are out-of-build outside the continuous build

The Test Suite

In-Build vs. Out-of-Build System Tests Item In-Build Out-of-Build Application server Tomcat Determined by server instance Location of AS Always localhost Some server how does the client locate the server? Always localhost Resolves the hostname using a mapping file according to a parameter Who starts the AS Maven (t7mp) Service/daemon Dependencies The web application (war) None

What s Left? Continuous process Standalone build Operating systems Databases Browsers Functional regressions Application servers Measureable performance Measureable test coverage

Secondary Matrices Application Servers Performance Deployment matrix Test suite Deployment matrix Test suite

The Application Server Matrix! Identical to the main matrix pair: deployment + test suite! The deployment script re-deploys the application into an existing AS, does not re-install product! A parameter determines the AS type (glassfish, JBoss or Jetty)! Less operating systems x DB combinations according to the host products

The Performance Matrix! 3 jobs: deployment + test suite + summary! The deployment and test suite are identical to the main matrix! Runs different tests performance specific tests which produce KPIs in a CSV! The summary job plots the KPIs

Measureable Test Coverage! Cobertura! Calculated in the continuous build! Single number unit tests + system tests! Classes that are unreachable in any test are filtered from the 100% (e.g.: view related classes)

ALL TOGETHER NOW

The Entire Process Main deployment matrix Trigger Main test suite Trigger Collect Logs Commit Trigger Installers build Trigger Performance deployment matrix Trigger Performance test suite Produce Reports (performance metrics) Trigger Continuous build Application servers deployment matrix Trigger Application servers test suite Produce ( 6 OS 5 DB )+ ( 2 OS 4 browser )+ 4 AS combinations = 42 comb Reports (coverage, static analysis) 48% support matrix coverage

QUESTIONS

Thank You To Our Sponsors Platinum Sponsors Silver Sponsor