Pooja Mantri SCIT
What is Integration? <ul><li>Definition: “the act of combining into an integral whole” </li></ul><ul><li>In software devel...
Integration Testing in SDLC <ul><li>Combine the application’s components into working software.  </li></ul><ul><li>Histori...
Nightly Builds <ul><li>Practice became popular in the late 90s after Microsoft published its development practices </li></...
Take it to the Extreme <ul><li>Extreme Programming says… </li></ul><ul><ul><ul><li>if testing is good, test all the time <...
What is Continuous Integration? <ul><li>It describes a set of software engineering practices that speed up the delivery of...
Example:  Development of a Small Feature <ul><li>Assumption: We have to do something which can be competed in few hours. T...
<ul><li>The builder than merges the copy to the mainline. If any conflicts found they are fixed by the developer. </li></u...
<ul><li>Task is completed on if after a successful build. </li></ul><ul><li>If a clash between two developers exist, it is...
Practices of continuous Integration <ul><li>Maintain a single source repository </li></ul><ul><li>Automate the build </li>...
Nightly vs. Continuous Builds <ul><li>Nightly builds generate deliverables. They result in something tangible:  </li></ul>...
Benefits of Continuous Integration <ul><li>It minimizes integration risk.   </li></ul><ul><li>It supports easier defect di...
C.I. Enables other Practices <ul><li>Test Driven Development </li></ul><ul><ul><ul><li>Fewer bugs, less time debugging </l...
Upcoming SlideShare
Loading in …5
×

Continuous Integration

883
-1

Published on

This presentation Describes Continuous Integration, Its benifits and best practices, and also tells how it is different from Nightly Builds

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
883
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Continuous Integration

  1. 1. Pooja Mantri SCIT
  2. 2. What is Integration? <ul><li>Definition: “the act of combining into an integral whole” </li></ul><ul><li>In software development, integration includes… </li></ul><ul><ul><ul><li>Combining source files </li></ul></ul></ul><ul><ul><ul><li>Combining software and environment </li></ul></ul></ul><ul><ul><ul><li>Combining software and data </li></ul></ul></ul><ul><ul><ul><li>Combining software and requirements (tests) </li></ul></ul></ul><ul><ul><ul><li>Combining developers </li></ul></ul></ul>Pooja Mantri Continuous Integration
  3. 3. Integration Testing in SDLC <ul><li>Combine the application’s components into working software. </li></ul><ul><li>Historically done near the end of the project. </li></ul><ul><li>Very risky! Software modules don’t always work together as expected </li></ul><ul><ul><ul><li>Best case: Time to fix, time to retest that module </li></ul></ul></ul><ul><ul><ul><li>Worst case: Time to determine why, time to redesign, time to fix, time to test all of the modules affected by the redesign. </li></ul></ul></ul>Pooja Mantri Continuous Integration
  4. 4. Nightly Builds <ul><li>Practice became popular in the late 90s after Microsoft published its development practices </li></ul><ul><li>Integrate all of the software on a nightly basis. </li></ul><ul><li>Smoke Test – run the application and conduct a minimal set of tests to see if it “catches fire”. </li></ul>Pooja Mantri Continuous Integration
  5. 5. Take it to the Extreme <ul><li>Extreme Programming says… </li></ul><ul><ul><ul><li>if testing is good, test all the time </li></ul></ul></ul><ul><ul><ul><li>if integration testing is important, integrate and test all the time </li></ul></ul></ul><ul><ul><ul><li>if short iterations are good, make the iterations really, really short (minutes and hours, not weeks and months) </li></ul></ul></ul><ul><li>Continuous Integration is born. </li></ul>Pooja Mantri Continuous Integration
  6. 6. What is Continuous Integration? <ul><li>It describes a set of software engineering practices that speed up the delivery of software by decreasing integration times. </li></ul><ul><li>Integrates source code and runs tests after each commit of code to the source repository. </li></ul><ul><li>Near-immediate feedback to the developer from the authoritative source, the system itself. </li></ul>Pooja Mantri Continuous Integration
  7. 7. Example: Development of a Small Feature <ul><li>Assumption: We have to do something which can be competed in few hours. The actual task doesn’t matter. </li></ul><ul><li>Development checks out current coy of the integrated source code. </li></ul><ul><li>He performs his task, tests it and commits the changes to the repository. </li></ul>Pooja Mantri Continuous Integration
  8. 8. <ul><li>The builder than merges the copy to the mainline. If any conflicts found they are fixed by the developer. </li></ul><ul><li>If no merge conflicts, builder builds the project on integration machine based on mainline code. </li></ul><ul><li>If compilation error, developer fixes it and repeats the process until builder can build a working copy which is properly synchronized with the mainline. </li></ul>Pooja Mantri Continuous Integration
  9. 9. <ul><li>Task is completed on if after a successful build. </li></ul><ul><li>If a clash between two developers exist, it is caught either when </li></ul><ul><ul><li>Second developer commits his local copy or </li></ul></ul><ul><ul><li>Integration build fails </li></ul></ul><ul><li>Thus error is detected rapidly </li></ul><ul><li>In continuous integration a failed integration build should never remain failed for long. </li></ul>Pooja Mantri Continuous Integration
  10. 10. Practices of continuous Integration <ul><li>Maintain a single source repository </li></ul><ul><li>Automate the build </li></ul><ul><li>Make your build self-testing </li></ul><ul><li>Everyone commits frequently </li></ul><ul><li>Every commit should build the mainline on an integration machine </li></ul><ul><li>Keep the build fast </li></ul><ul><li>Make it easy for anyone to get the latest executable </li></ul><ul><li>Everyone can see what’s happening </li></ul><ul><li>Automate deployment </li></ul>Pooja Mantri Continuous Integration
  11. 11. Nightly vs. Continuous Builds <ul><li>Nightly builds generate deliverables. They result in something tangible: </li></ul><ul><ul><li>something for QA to test </li></ul></ul><ul><ul><li>something for product managers to review </li></ul></ul><ul><ul><li>something to reassure team members that they are in fact building a product. </li></ul></ul><ul><li>Because of the external audience, the nightly build is a formal event, a mini-milestone that your team should hit without fail. Breaking the nightly build is something that generates blame and often consequences, such as becoming the build mother or being awarded a dunce cap. </li></ul><ul><li>Continuous Integration builds don’t need durable build products to be beneficial. They are a way for a developer to have a conversation with the system to gain reassurance that they have done their part. </li></ul><ul><li>Both must be used </li></ul>Pooja Mantri Continuous Integration
  12. 12. Benefits of Continuous Integration <ul><li>It minimizes integration risk. </li></ul><ul><li>It supports easier defect diagnosis. </li></ul><ul><li>Frequent Deployment </li></ul><ul><li>It saves time creating releases. </li></ul><ul><li>Encourages good testing habits </li></ul><ul><li>It enables other good development practices… </li></ul>Pooja Mantri Continuous Integration
  13. 13. C.I. Enables other Practices <ul><li>Test Driven Development </li></ul><ul><ul><ul><li>Fewer bugs, less time debugging </li></ul></ul></ul><ul><ul><ul><li>Confidence to refactor </li></ul></ul></ul><ul><ul><ul><li>Executable Documentation </li></ul></ul></ul><ul><ul><ul><li>Validation that you are complete </li></ul></ul></ul><ul><li>Release Management </li></ul><ul><ul><ul><li>Builds are centralized </li></ul></ul></ul><ul><ul><ul><li>Builds are repeatable/re-creatable </li></ul></ul></ul><ul><ul><ul><li>Modifications are clearly mapped to releases </li></ul></ul></ul><ul><ul><ul><li>Issues are clearly mapped to releases and thus to modifications </li></ul></ul></ul><ul><ul><ul><li>Releases are only created with committed code </li></ul></ul></ul><ul><ul><ul><li>Digitally signed code </li></ul></ul></ul><ul><li>Enforcement of Company Development Policy </li></ul><ul><ul><ul><li>Automate policy tests with Checkstyle </li></ul></ul></ul><ul><ul><ul><li>Manual code reviews can focus on design not syntax </li></ul></ul></ul>Pooja Mantri Continuous Integration
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×