Continuous Integration as a Part of the QA Process
What is Continuous Integration?
Continuous integration (CI) is a software development technique following which developers integrate code into a shared repository after every task completion or update. Each merge is verified by an automated build that allows quickly detect and fix integration issues delivering a ready-for-release product version almost at any stage of the development process.
Integration is the last phase of any typical project where developers separately work on different system components. Continuous Integration refers to agile practices and is widely utilized in extreme programming to automate the routine processes and considerably mitigate integration problems.
Concerning integration testing, this is the process when separate software modules are combined and tested as a whole after the unit but before the system testing. This type of testing is conducted to spot weak interaction points between the integrated units and check their compliance with functional, acceptance, and safety requirements.
Understanding Continuous Integration System (CIS)
Consisting of multiple subsystems (version control system, scripts, and service launch assembly tests), Continuous Integration System (CIS) is used during the automated integration testing and is built on the following operating principles:
- CVS control.
- Local storage update during each change of the source code in the repository.
- Conducting unit and other necessary types of testing.
- Compliance of the source code into the executable modules.
- Integration tests running and test report generation.
Source code and all other items, adopted for a project building and testing, are stored in the source control repository. The local build can be created according to the external request, on schedule (daily build), after the repository update, etc. The daily build is automatically generated every night to deliver ready test results at the beginning of the working day. Usually, each new build gets a serial number in ascending order.
To make the most of the CIS, it is mandatory to conduct frequent synchronization, quickly handle ongoing issues, have a powerful server as well as fast (max 10 minutes) and stable assembly.
Continuous Integration Tools
An effective CI cannot go without a comprehensive set of tools that can considerably speed up and enhance the whole process. Here is the list of continuous integration tools that can help you in building a pitch-perfect CI process.
- Hudson. This continuous integration tool is built with Java and allows working with CVS, Subversion, Mercurial, Git, Clearcase, projects as well as collect Apache Ant and Apache Maven, run shell-scripts and Windows commands.
- Jenkins. Being an open-source tool also written in Java and originated from Hudson, it now offers a variety of options for continuous integration and 1000+ plugins to simplify your work.
- CruiseControl. This is a free open-source tool and a Java-based framework for implementing a custom continuous build process. You can access dozens of plugins for a variety of source controls, build technologies, and perform continuous integration for any software development process.
- TeamCity. This Java-based build management and CI server will help you to prevent committing codes with errors that may disrupt the normal assembly of the project.
- Travis CI. A distributed web service for software development and testing, that uses GitHub for the source code hosting and supports C, C + +, JavaScript, Java, Python, Ruby, PHP projects.
- Buildbot. This tool is used to automate the compile, testing, and release processes. Being an open-source framework, it can automate all aspects of the software development cycle.
Continuous Integration Peculiarities
If you want to improve and automate the software testing process, the Continuous Integration practice will perfectly serve the purpose. In the situation when automated integration tests are conducted after each update, it’s far easier to detect and fix possible errors with the lowest time and resources investment.
The Continuous Integration System effectively addresses the issues that may appear after the integration of the different code parts. However, it still has some pros and cons.
Pros
- Faster and cheaper identification and handling of the integration issues.
- Unit tests are performed right after each update.
- The testing team can easily access the up-to-date application version.
- Software testing can be run in parallel with the development process.
- The ongoing integration of the entire application.
- Automation of all processes.
- You can always present the current product version to the customer.
- Branch code building and customization in line with the desired environment.
Cons
- Constant monitoring of tools, servers, and other CI components.
- Quick implementation of all fixes and updates to keep the CI system up and running.
- The requirement of having a dedicated server for continuous integration.
Closing Remarks
As you can see, Continuous Integration has numerous advantages. If you still thinking over the necessity of implementing CI for your project, take into account these aspects:
- Constant availability of the latest changes made to the code.
- Automatically ready testing environment.
- Opportunity to roll back to the previous product version.
- Detection of bugs and defects at the early stages of the software development process.
All these advantages help to deliver a quality bug-free product on time and within the planned budget. Isn’t it the key goal of every project?