A CI system allows the automated compilation, integration, testing and deployment of the entire code base in a project.
Delivery of a product increment requires reliable, working, integrated software at the end of every
sprint. Continuous integration addresses this challenge by merging all changes made to the software
and integrating all changed components regularly, at least once a day. Configuration management,
compilation, software build, deployment, and testing are wrapped into a single, automated, repeatable
process.
Following the developers’ coding, debugging, and check-in of code into a shared source code repository, a continuous integration process consists of the following automated activities:
- Static code analysis: executing static code analysis and reporting results
- Compile: compiling and linking the code, generating the executable files
- Unit test: executing the unit tests, checking code coverage and reporting test results
- Deploy: installing the build into a test environment
- Integration test: executing the integration tests and reporting results
- Report (dashboard): posting the status of all these activities to a publicly visible location or emailing status to the team
Continuous integration can provide the following benefits:
- Allows earlier detection and easier root cause analysis of integration problems and conflicting changes
- Gives the development team regular feedback on whether the code is working
- Keeps the version of the software being tested within a day of the version being developed
- Reduces regression risk associated with developer code refactoring due to rapid re-testing of the code base after each small set of changes
- Provides confidence that each day’s development work is based on a solid foundation
- Makes progress toward the completion of the product increment visible, encouraging developers and testers
- Eliminates the schedule risks associated with big-bang integration
- Provides constant availability of executable software throughout the sprint for testing, demonstration, or education purposes
- Reduces repetitive manual testing activities
- Provides quick feedback on decisions made to improve quality and tests
However, continuous integration is not without its risks and challenges:
- Continuous integration tools have to be introduced and maintained
- The continuous integration process must be defined and established
- Test automation requires additional resources and can be complex to establish. Data sets have to be created, people trained to use the tools and time must be spent to create, for example, a keyword test framework. Also, the test results analysis can be time-consuming if there are too many test scripts.
- Well-specified test cases are required to achieve automated testing advantages. This will increase the time needed for testing tasks.
- Thorough test coverage is essential to achieve automated testing advantages
- Teams sometimes over-rely on unit tests and perform too little system and acceptance testing. The test strategy must plan how upper level tests, such as system or end-to-end tests, will be executed
Continuous integration requires the use of tools, including tools for testing, tools for automating the
build process, and tools for version control.
0 comments:
Post a Comment