1 / 17

Using Continuous Integration for Quality Improvement with Agile

Using Continuous Integration for Quality Improvement with Agile. Mark Gentzel, Project Manager, PMO Manjusha Gokhale, Manager, IV&V Services Texas Education Agency July 14, 2010. Agenda. Problem Statement What Is Continuous Integration (CI)? Comparison Between Waterfall and Agile

chuck
Download Presentation

Using Continuous Integration for Quality Improvement with Agile

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Continuous Integration for Quality Improvement withAgile Mark Gentzel, Project Manager, PMO Manjusha Gokhale, Manager, IV&V Services Texas Education Agency July 14, 2010

  2. Agenda • Problem Statement • What Is Continuous Integration (CI)? • Comparison Between Waterfall and Agile • Using CI within an Agile Environment • Specific Agile Technique • Waterfall vs. Agile Project Comparison • Quality Acceptance Criteria • TEA CI Process • Benefits for Software Development • Benefits for Independent Testing • Best Practices and Lessons Learned • Conclusion

  3. Problem Statement • Adoption of Agile development methodology requires new processes: • Continuous Integration • Continuous quality control • Tighter integration between development and testing teams

  4. What Is Continuous Integration? • Integrate development work frequently • Integrate and test deliverables frequently rather than waiting until the end of the development cycle • Integrations verified by an automated build to detect integration errors as quickly as possible • Significantly reduced integration problems • Cohesive software developed more rapidly

  5. Comparison Between Waterfall and Agile • Classic Waterfall • Long requirements phase before design and development • Long development phase • Testing done post-development with defects returned to team • Rework difficult and complex because of advanced stage of code • Modified Agile • Abbreviated requirements phase to gather 40% of the requirements • Abbreviated design phase to develop high-level architecture • Short three-week sprints with code delivery to Independent Verification and Validation (IV&V) post-sprint • User acceptance with production deployment • Rework for previous sprint included in current sprint • Rapid rework because of simplified code at acceptance point • Quicker testing because of functional isolation and established code base for each test delivery

  6. Using CI within an Agile Environment • Solution—Extending and updating our Continuous Integration processes • Automated processes where code is subjected to metrics to determine its validity and stability • Metrics vary based on server environment • Example of metrics: • Successful compilation • Successful automated unit testing • Successful regression testing • Low cyclomatic complexity

  7. Specific Agile Technique • Three-week sprints • One major feature or bundle of minor features per sprint • Four days of IV&V testing per sprint • Requirements gathering completed a few sprints ahead • Sprint planning meetings during the week between sprints • Sprint retrospecitive meetings the week after sprints

  8. Waterfall vs. Agile Project Comparison

  9. Quality Acceptance Criteria • Build compiles successfully • Unit tests run successfully and build passes unit tests • Build passes code review • Build passes all automated functional regression tests • Build can be deployed successfully!

  10. TEA CI Process Polling CI Processor Builds Code Checks for new code Source Control Processor Code Repository Retrieves new code Unit Test Successful Automated Test Suites Regression Test Successful Application Environment Complexity Test Successful Deploys

  11. Benefits for Software Development • Ensures that compilation errors are immediately discovered and addressed • Provides unit test coverage, ensuring comprehensiveness • Provides metrics to ensure that code is not excessively complex • Reduces build and deployment times by ensuring stable code bases • Ensures that unexpected code variances are detected and addressed • Reduces repetitive builds and deployments

  12. Benefits for Independent Testing • Continuous code integration • Quality control applied continuously to small pieces of code, providing immediate feedback • Support of test-driven development • Rapid delivery of stable and cohesive software to customers • Reduced risk of finding critical bugs later in lifecycle • Reduced regression test costs through automated testing • Multiple stable labels, for flexibility in test deployment

  13. Benefits for Testing Automated Scripts Introduction

  14. Benefits for Testing

  15. Best Practices and Lessons Learned • Best Practices • Maintain a single source repository • Do frequent check-ins • Automate the build and deployment • Test in a clone of the production environment • Lessons Learned • Make the build self-testing • Decide when to integrate to control risk • Test at the right level of granularity • Refactor regularly

  16. Conclusion • Continuous Integration for Continuous Quality Control • Close collaboration between development and IV&V groups • Reduced product delivery time • Increase in team productivity leading to reduced costs

  17. Thank You!Mark.Gentzel@tea.state.tx.usManjusha.Gokhale@tea.state.tx.us

More Related