Continuous Integration: an alien technology?

Rashini Fernando
Qualityholics
Published in
4 min readSep 29, 2021

Have you wondered how billion-dollar software companies run without many glitches? How Google that we take for granted, work like a charm every time we use it? Not one or two, but billions engage pressure on their systems and it hardly breaks? I have always wondered about the magic behind their success, for a business operation of such magnitude to run without noticeable glitches daily.

For decades, digital technology has enabled all aspects of a company to move at breakneck speed, which is beneficial to the growth of the company. A few tangible benefits to having this real-time business capability are:-

· Quick value capture

· Early market opportunities

· Immediate responses to consumer needs

High-tech companies like Amazon, Google, HubSpot bring down their competitors by releasing software changes continuously. If you are wondering whether high speed development and releases carry the risk of loss of control? The answer is no.

As Andy Singleton, the CEO of Assembla stated, continuous deployment could be less expensive and provide a lower amount of risk.

Continuous Delivery

Here’s how Google manages to reduce risk simultaneously while achieving remarkable speed in product release.

Most large IT projects fail to succeed due to the lack of anticipation of the interdependencies of new software in large and complex code bases. In typical large projects, managers utilize extensive test procedures conducted by Quality Assurance teams to test the new software before a release. This usually takes weeks or could be months, and there might still be uncovered errors. Considering the above drawbacks Google has replaced the traditional testing techniques which rely on people, with a testing machine termed as a ‘Continuous Integration’ to manage their new software releases at their massive scale.

What is Continuous Integration

But what is Continuous Integration?

It is a replica of their products, designed to test the interoperability of the component services by running special programs. Test Automation and Continuous Integration play an important role in the development of modern, large scale software. Google’s operation stands out for its scale by continuously compiling and deploying over 5000 services and by running nearly 100 million test cases per a day.

Google’s test machine is built and run by a team of ‘Test Engineers’, containing 15% of their total developers, who are dedicated to build and automate the test systems. The Test Engineers do not perform the actual testing. They are more focused on creating incentives to motivate the developers to write effective tests and fix bugs.

Let’s dive into the concept of Continuous Integration

It is important to run both automated and manual test cases throughout the delivery process to validate the system when building quality into the software. The researchers have found that organizationally the success rate increases when :-

· The testers are allowed to work alongside the developers throughout the production process.

· Manual testing such as exploratory testing, usability testing and acceptance testing are performed during the delivery process.

Building and maintaining automated test suits is a key activity and there are few types of tests that would be useful :-

· Unit Tests

· Integration Tests

· Acceptance tests

· UI tests

Unit tests are faster and cheaper since they mostly validate smaller amounts of code whereas, UI tests could be more complex to implement and slow to run since they require multiple services to emulate mobile or browser behaviors.

But how do we implement Continuous Integration?

To adopt Continuous Integration, you need to run your tests every time a change gets pushed to the main branch. It is recommended that you use a service to monitor the repository to get notified on new pushes to the codebase.

Continuous Integration checklist :-

· Integrate often and as soon as possible as it would make it easier to understand conflicts you might have.

· Make sure to keep the build clean all the time as it would be problematic if new changes get deployed while it’s broken.

· Make sure that developers are involved when defining the user stories.

Is it worth building a sophisticated system like this for smaller or a medium sized project? It depends. It depends on the future strategy of the company, the company’s software role in the society, whether it is a consumer software or a business software, and how critical it is for the business to build a reputation of ‘zero. While the technology sounds fascinating and looks simple and easy, it requires commitment from the team to be effective. In the beginning it might be necessary to slow down your releases. My recommendation is to start slow and small with simple tests to get used to the routine and slowly move on to complex suites.

References

farley, D. (n.d.). What is Continuous Integration? The essentials You need to know.

Fowler, M. (n.d.). Continuous Integration. Retrieved from https://martinfowler.com/articles/continuousIntegration.html

Rehkopf, M. (n.d.). What is Continuous Integration.

--

--