ashwini - effective use of ci by qa

27
Thursday, October 7, 2010

Upload: vodqa

Post on 08-May-2015

1.329 views

Category:

Technology


2 download

DESCRIPTION

Ashwini Malthankar Organization: ThoughtWorks Topic: Effective use of CI by QA Presented in vodQA - THE TESTING SPIRIT! on Oct 7, 2010 in ThoughtWorks, Pune

TRANSCRIPT

Page 1: Ashwini - Effective use of CI by QA

Thursday, October 7, 2010

Page 2: Ashwini - Effective use of CI by QA

Effective use of Continuous Integration by QA

Ashwini Malthankar

Lead Consultant QA

ThoughtWorks

Page 3: Ashwini - Effective use of CI by QA

Agenda

Problem Statements

About Continuous Integration

How does Continuous Integration help resolve problem

Case study on large scale distributed project

Open source / commercial tools

Q & A

Page 4: Ashwini - Effective use of CI by QA

Scenario for Thought Exercise

Given it’s a Thursday today when we have Demo

to customer then what is the state of a Tester?

We have to showcase new facebook feature.

Page 5: Ashwini - Effective use of CI by QA

Problem Statements Identifying good build for Demo, Release or Regression testing

Testing on various environments like the Grid shown below

OS App

Servers Browsers

Versions DB

Windows WebSphere Firefox ? Oracle

Linux Weblogic IE ? MySql

mac JBoss Safari ? Teradata

Page 6: Ashwini - Effective use of CI by QA

Why is it important to solve

Constant availability of a "current" build for testing, demo, or release

purpose and to avoiding last-minute chaos at release time.

Page 7: Ashwini - Effective use of CI by QA

About CI ?

Page 8: Ashwini - Effective use of CI by QA

http://twistcruise:8153/cruise/tab/pipeline

High level Overview of Build Server

Page 9: Ashwini - Effective use of CI by QA

Pipeline

Stages

Jobs

Jobs

Jobs

Jobs

Pipeline in the box

Page 10: Ashwini - Effective use of CI by QA

Requirement

Scope

Document

+ Test cases

Design

Test Plan +

Test case

Coding

System

Testing

Product

Build

Functional

Automation

Test Suites

Test

framework

BackEnd

Testing

API level

testing Defects Cycle

Reports Reports

R

e

p

o

r

t

s

Unit

Testing

Continuous Build

Integration

Code

Coverage

Project/Product Development Process Flow

Page 11: Ashwini - Effective use of CI by QA

Requirement

Usecases

+ Test cases

MSL

Test Plan +

Test case

System

Integration

Testing

Ruby on Rails

RSpec

Postgress

Stub

available

for Testing

Defects Cycle

Reports Reports

R

e

p

o

r

t

s

RCov

UI Automation /

Cucumber

github

Mingle

Go

Development Tools usage Flow

Page 12: Ashwini - Effective use of CI by QA

How does Continuous Integration help to resolve current problem

• MATs /Smoke tests, SRGs, LRGs running it continuously to quickly Identify Demo, Release candidate build on any environment.

• frequent code check-in pushes developers to create modular, less complex code

• metrics generated from automated testing and Continuous Integration

Page 13: Ashwini - Effective use of CI by QA
Page 14: Ashwini - Effective use of CI by QA
Page 15: Ashwini - Effective use of CI by QA

Give visual representation of CI Schedules

Performance Builds

QA Builds

Platform Specific Builds

Page 16: Ashwini - Effective use of CI by QA

Q & A

Page 17: Ashwini - Effective use of CI by QA

Project details

“largest distributed agile project“

for every check in, a build is triggered, installers deployed continuously

New release every 6 weeks.

260 Build & Deployment Servers

3 active development branches, 'branch per release pattern', SVN model.

Application has Service Oriented Architecture, having multiple tiers and is Web-based

15 Independent Installers to deploy on Dev, QA, UAT, Performance, Staging, Production environments

Case study on large scale distributed Project

Page 18: Ashwini - Effective use of CI by QA

Database

Services(15)

Channels channels

Third Party

Apps

channels

Deployment Architecture & Environments

Page 19: Ashwini - Effective use of CI by QA

SVN

Build and Installer

Compile

Unit test

Integration Test

Smoke test Publish

Build test

Iteration -0

Page 20: Ashwini - Effective use of CI by QA

Iteration – 1

Build test

Build and Installer

Compile

Unit test

Build and Installer

Compile

Unit test

SVN

Build and Installer

Compile

Unit test

Smoke Test Publish

Last good

Last

good

Last good

Iteration - 1

Page 21: Ashwini - Effective use of CI by QA

SVN

Build&Installer

Compile

Unit test

Integration

CodeQaulity

Smoke

Verification Showcase QA/validation

UAT Performance Staging

Build Cycle and Flow

Page 22: Ashwini - Effective use of CI by QA

Dev-feedback(28

build in parallel)

Generate installer

Install the installer

Test the installer Publish the

installer

Get the installer Install the application

Verify the installer

Publish the installer

Get the installer Install the application

Verify the installer

Publish the installer

Trunk Build

Test Box Deployment

Showcase env Deploy

Build Layers

Page 23: Ashwini - Effective use of CI by QA

Continuous Integration things to watch

• Initial setup time required

• Well-developed test-suite required to achieve automated testing advantages

• Large-scale re-factoring can be troublesome due to continuously changing code base

• Hardware costs for build machines can be significant since CI like production makes more sense

• Final feedback is only with system in production

Page 24: Ashwini - Effective use of CI by QA
Page 25: Ashwini - Effective use of CI by QA

What more can be Done

• Every build with Performance test execution to know the performance of the application per check-in.

• Code health check apart from Code Coverage which we can be integrated in the build with tools like Code City. It can give the code complexity metrics to know how complex the code is getting per check-in.

• Continuous Integration Continuous Deployments Continuous Regression Continuous Performance Continuous Software Health

Page 26: Ashwini - Effective use of CI by QA

What are other commercial tools available in the market

AnthillPro — continuous integration server by Urbancode

Apache Continuum — continuous integration server

Bamboo — commercial continuous integration server by Atlassian Software

Go — Commercial agile build and release management software- ThoughtWorks

Hudson — MIT-licensed, written in Java, runs in servlet container

TeamCity — commercial continuous-integration server by JetBrains with free professional edition

Page 27: Ashwini - Effective use of CI by QA

Q & A