Introducing Continuous Integration Using Vsts
-
Upload
mohamed-samy -
Category
Technology
-
view
1.174 -
download
3
description
Transcript of Introducing Continuous Integration Using Vsts
Introducing Continuous
Integration using VSTS
Presented By:Mohamed Samy
Technical Architect/MVP/Geek
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
The Cost of bugs
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
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?
Working on someone else’s code. Who likes to do that?
Fixing old projects? Upgrading existing code?
Adding new features?
Project nightmares
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?
A solution for integration issues.
Makes getting into a new project easier.
Increases the quality of the software.
Reduces development time?
Introducing CI
Unit testTesting the smallest part of the code (the method)
TDDSelf testing code, code that tests code
Common terms
“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
Continuous integration describes a set of software engineering practices that speed up the delivery of software by decreasing integration times.
CI definitions 2
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
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
The seven commandments
1. Compilation2. Test Execution3. Database integration4. Code inspection5. Automated deployment6. Documentation generation
The 6 ingredients of a build
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?
ICL 1.0- Next to none
ICL 1.5- Test on 2 DBs
ICL 2.0- Automated regression
My Story
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?
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
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
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?
Performance testing
Human interaction with UI e.g. usability testing
Load testing
What CI doesn’t do
CI Process in TFS
Demo
http://www.ibm.com/developerworks/java/library/j-ap11297/
http://msdn.microsoft.com/en-us/library/ms364045(VS.80).aspx
http://en.wikipedia.org/wiki/Continuous_Integration
http://www.thevstsguy.com/adventures Ahmedbahaa.blogspot.com VSTS Fans - facebook
references