February 19, 2015

Continuous Integration (CI), Develop l Integrate l Test l Deliver

An endeavour to cater valuable software services to clients in the quickest time possible had led to a movement called agile software development. Many a methodologies/practices have been introduced as part of this movement, which have not only enabled developers speed up and monitor the entire software development life cycle process but also improved interaction between teams (developers and testers to project managers)  in an organization thus to see the new application get released ahead of time with minimum risk to the business.

One such practice is Continuous Integration (CI), which automates the process of integration and testing and reports the test results as quick as possible.

In this practice, every small piece of code, written by the team members, is integrated frequently. With the integrations carried out several times a day, each stage goes through the automated build tests and the problems, if any, can be recognized early on reducing the risk of backtracking. Even if problems were recognized, there would be a chance that they are typically small and easily resolvable thus paving a way for successful build.

The basic goal of this practice is to provide rapid feedback to the developers: if at all the build fails in these automated tests it indicates that a defect has been introduced into the code base and it should be fixed as soon as possible giving a lot of scope for fixing the issues at the earliest.

In brief, Continuous Integration may refer to a process of applying quality control while the software is still in development stage instead of applying quality control just before the deployment.

How it works:
  • -       Teams integrating code regularly
  • -       Automated build verifying each integration
  • -       Testing every change published
  • -       Informing team in the event of test fails or broken build
  • -       If any problem, teams can resolve it and reach the releasable baseline soon


Apart from being helpful in early and easy bug detection, Continuous Integration also stands beneficial to organizations, for its:
  • -       Capability to put forth real-time feedback thus to minimize code breaks and backtrackings
  • -       Ability to visualize or showcase where exactly the problem occurred and hence indicating the same to teams
  • -       Tension free environment helping developers to focus more on developing new features rather than being stuck with bug finding


In order to make it beneficial, however, there are certain best practices suggested by renowned industry practitioners. Some of them:
  • -       Maintaining a code source repository
  • -       Automating the build tests
  • -       Updating the code base frequently
  • -       Ensuring transparency and accessibility among teams for the latest executable files


Development environment is entirely different from production environment; what if the deployed application performs badly in the production environment? Let us reserve this discussion for the next session. Keep tracking us.