Saturday, March 10th, 2007
I continue my story about
continuous
integration and I'll start with outlining the basic building blocks
that makes up an environment in where continuous integration works.
It can be illustrated by the following table/figure:
Code Analysis |
Code Coverage |
Application Testing |
Performance Testing |
Bug/Issue Tracking |
Wiki |
Unit Testing |
Continuous Build |
Build Environment |
Version Control |
Web Server |
Operating System |
The following components have been identified:
- Operating System
- Operates the server computer.
- Web Server
- Serves as place (for websites) where developers can supervise, control,
retrieve and share information throughout the continuous integration process.
The "project" wiki helps sharing information between developers.
- Build Environment
- Is responsible for compiling, linking the project source code and running
test scenarios.
- Version Control
- Is a repository for different versions of all source code.
- Continuous Build
- Manages different builds of the project by extracting source code from
version control system and feeding it to build environment. Each build can be
scheduled and managed and the build and test results can easily be reviewed.
- Code Analysis
- Runs static code analysis of the source code and output the result of the
analysis. Good source code produces no warnings or results from code
analysis.
- Unit Testing
- Runs unit tests of the source code and output the success rate of each
single unit test.
- Code Coverage
- Analyzes how much source code is covered by the unit testing. All source
code should be hopefully be covered.
- Application Testing
- Runs larger more comprehensive integration tests of the (build)
application. Outputs the success rate.
- Performance Testing
- Runs performance and stress tests on the (build) application. Output the
results based on benchmarks limits.
- Bug/Issue Tracking
- Manages reported bugs/issues and their current status.
- Wiki
- Wiki portal where developers freely can share information about the
project.
So now that I've identified the basic building blocks the next installment
will look at the actual available tools, with emphasis for this to work in
primarily in a Windows based C++ development environment.