Continuous integration is one of the techniques we use to make sure we can deliver working software on a regular basis. As new features are implemented, changes are pushed to a build server which first compiles all the source files and then link the resulting object files to produce an output file. The server will then make sure that all the requirements are still met by running all the unit and system tests against this output file.

The entire process typically takes less than 10 minutes and is fully automated. It is triggered by changes in the source code that is pushed to the version control system. It makes it possible to discover integration issues early, thus eliminating unnecessary delays that often occur if all the features are integrated in one big step at the end of development iteration.

The lowest level of software is often mocked to make it possible to fully automate system tests independently from the hardware. However, for more in-depth system verification, target hardware can be interfaced with the build server