In my last post, Benefits of Early and Frequent Feedback in Agile development I mentioned how Continuous Integration helps in early and frequent feedback. In this post, we are going to go deeper into the concept and see what exactly it does, how it does and its benefits and challenges.
Continuous Integration is an automated system which wraps configuration management, software build, deployment and testing into one repeatable process. The best practice is to run the whole set of set into the new build (with all the new code check ins) at least once a day. This gives a feedback on the build quality. If all the automated tests passed then the build can be used to perform deeper testing.
Below are some of the activities carried out by CI:
Continuous Integration is an automated system which wraps configuration management, software build, deployment and testing into one repeatable process. The best practice is to run the whole set of set into the new build (with all the new code check ins) at least once a day. This gives a feedback on the build quality. If all the automated tests passed then the build can be used to perform deeper testing.
Below are some of the activities carried out by CI:
- Code analysis
- Compilation of code and generating an executable file
- Perform Unit testing
- Deploying the build onto the testing environment
- Performing integration testing
- Generating reports
In our project, nightly build and test execution was scheduled using a CI tool called Jenkins. The next morning we used to get the build feedback. These test results were visible to the whole team and feedback on the quality of code was available to decide on our next actions.
Now, let's see some of the listed benefits of using CI:
- Early detection of any integration issues
- Regular feedback on code quality
- Maintains versions history so you would know when last build was passed
- It reduces the regression risk
- Saves time since all the tests are automated
- Generates reports
- Maintain transparency in the team
Every coin has two sides, CI also has its challenges such as:
- Since it is a tool, it requires maintenance
- The process should be pre-defined and set up should be done properly in order to get accurate results
- Team would need a skilled resource who knows automation
- Test coverage should be planned properly in advance
We can see that once CI is completely setup and we have all the processes in place then it becomes a piece of cake. You need to schedule your daily build and get the feedback once all the tests are executed. If some of the tests failed, you will have a base to do your root cause analysis. Once the reason is known, it can be fixed by the team.
Comments
Post a Comment
Share your feedback