I'm Michael Suodenjoki - a software engineer living in Kgs. Lyngby, north of Copenhagen, Denmark. This is my personal site containing my blog, photos, articles and main interests.

Updated 2011.01.23 15:37 +0100


Continuous Integration #2

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 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.