CI is one of the most powerful practice that can help in ensuring that we have the working software available at any given point of time. It must be understoood that continuous integration is not just a tool deployment. It is a culture adoption.
In my opinion the team should have following aspects ( just mentioned few important ones) very well implemented during the software development life cycle:
- During Requirements development ensure that the requirements / user stories are granular enough so that later developers are able to checkin frequently.
- User stories should have the right acceptance test cases identified. Further when the test cases are automated it can be ensured that the basic acceptance test cases can be run in the stage 1 of the build so that the feedback is available early.
- Test Automation is thought and designed from the scalability perspective
- Test Suite Naming and Organization is well thought about before the beginning
- Test Strategy should be well thought.
- Testers and Developers are training on coding, test coding, test naming convention, build scripting etc.
- Team is trained on CI
- There should be a good private build setup.
The team must ensure that before the actual execution of the project, the team should have all he infrastructure ready so that the time can be really productive during the actual work and focus on the functional work rather than infrastructure readiness.
Following are some the varioius aspects of Continuous Integration
- Continuous Testing
- Continuous Build
- Continuous Inspection
- Continuous Feedback
- Continuous Deployment and Of Course
- Continuous Improvement :-)
In our further blogs we will talk about how to think about system perspective while thinking about CI.
- Continuous Integration- Improving Software Quality and Reducing Risk - Paul M Duvall, Steve Matyas, Andrew Glover