introducing continuous integration using vsts

25
Introducing Continuous Integration using VSTS Presented By: Mohamed Samy Technical Architect/MVP/Geek

Upload: mohamed-samy

Post on 17-May-2015

1.179 views

Category:

Technology


3 download

DESCRIPTION

A presentation I gave about Continuous Integration and it's role in the software development life cycle with some of my real life experiences.

TRANSCRIPT

Page 1: Introducing Continuous Integration Using Vsts

Introducing Continuous

Integration using VSTS

Presented By:Mohamed Samy

Technical Architect/MVP/Geek

Page 2: Introducing Continuous Integration Using Vsts

What lifecycle phase do you hate the most?Gathering requirements? Analyzing requirements? High level design? Detailed Design? Development? Testing?

What lifecycle phase requires the most rework and most experienced developers?

My sad story, every developers story.

Problem Definition

Page 3: Introducing Continuous Integration Using Vsts

The Cost of bugs

Page 4: Introducing Continuous Integration Using Vsts

Who’s code is responsible for the problem?

It was working great on my machine!

The problem is not with our code, the mainframe/server is very slow.

Integration nightmares

Page 5: Introducing Continuous Integration Using Vsts

Put the best developers on the job?

Estimate with a lot of buffering for this phase and pray?

Leave integration till the end?

What was done about it?

Page 6: Introducing Continuous Integration Using Vsts

Working on someone else’s code. Who likes to do that?

Fixing old projects? Upgrading existing code?

Adding new features?

Project nightmares

Page 7: Introducing Continuous Integration Using Vsts

Get your hands dirty and start debugging.

Read the old design docs.

Attend handover sessions.

Download the code, build and pray.

What was done about them?

Page 8: Introducing Continuous Integration Using Vsts

A solution for integration issues.

Makes getting into a new project easier.

Increases the quality of the software.

Reduces development time?

Introducing CI

Page 9: Introducing Continuous Integration Using Vsts

Unit testTesting the smallest part of the code (the method)

TDDSelf testing code, code that tests code

Common terms

Page 10: Introducing Continuous Integration Using Vsts

“Continuous Integration 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. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. “

Martin Fowler- Thoughtworks.

CI definitions

Page 11: Introducing Continuous Integration Using Vsts

Continuous integration describes a set of software engineering practices that speed up the delivery of software by decreasing integration times.

CI definitions 2

Page 12: Introducing Continuous Integration Using Vsts

We need to spread the pain across the whole development cycle and maybe even from the beginning of the design.

More frequent small pain instead of one big concentrated jolt of lightning at the end

As a developer, life is pain, get used to it!!!!

My CI definition

Page 13: Introducing Continuous Integration Using Vsts

1. Maintain a single source control repository 2. Automate the build3. Make your build self testing4. Everyone commits every day5. Every Commit Should Build the Mainline

on an Integration Machine6. Keep the Build Fast7. Test in a Clone of the Production

Environment

CI practices

Page 14: Introducing Continuous Integration Using Vsts

The seven commandments

Page 15: Introducing Continuous Integration Using Vsts

1. Compilation2. Test Execution3. Database integration4. Code inspection5. Automated deployment6. Documentation generation

The 6 ingredients of a build

Page 16: Introducing Continuous Integration Using Vsts

Do you need to develop an enterprise solution that integrates with other applications?

Is part of your solution running on other platforms? (web services, RPCs, remoting, Com, CORBA)

Is it a big project with multiple components across multiple teams?

Are you afraid of the integration phase?

How do I know I need CI?

Page 17: Introducing Continuous Integration Using Vsts

ICL 1.0- Next to none

ICL 1.5- Test on 2 DBs

ICL 2.0- Automated regression

My Story

Page 18: Introducing Continuous Integration Using Vsts

Are you crazy? You want the developers to write more code?

We need to ship fast, this will slow us down!

We can do integration testing at the end of the project.

How can I convince the PM?

Page 19: Introducing Continuous Integration Using Vsts

We always design on the go!

Design always evolves even on the waterfall model!

Things change midway through the project no matter what your methodology.

The industry’s best kept secret

Page 20: Introducing Continuous Integration Using Vsts

You catch build breaks early on. Helps developers communicate frequently about the

build. less regression The feedback loop is smaller. Integration testing moves up in the chain. Every check-in goes through the integration testing

where problems are caught early. Continuous integration enforces better development

processes. Each developer is held accountable. You always have a latest-and-greatest build to use in

demos, showcases, etc.

Advantages of CI

Page 21: Introducing Continuous Integration Using Vsts

Maintenance overhead often increases. Some teams find that the level of discipline

required for continuous integration causes bottlenecks. This often requires a shift in the developer mindset.

The immediate impact of a check-in often causes a backup because programmers cannot check in partially completed code.

Disadvantages of CI?

Page 22: Introducing Continuous Integration Using Vsts

Performance testing

Human interaction with UI e.g. usability testing

Load testing

What CI doesn’t do

Page 23: Introducing Continuous Integration Using Vsts

CI Process in TFS

Page 24: Introducing Continuous Integration Using Vsts

Demo