What is Continuous Testing?

Rodrigo Alves Costa
8 min readJan 12, 2024

Testing is critical to the Software Development Life Cycle (SDLC). It’s important to include testing in every stage of the SDLC to ensure faster feedback and better-quality products. Test automation can yield excellent results if implemented correctly and used efficiently. The right approach is Continuous Testing.

The Continuous Testing market is expected to grow at a Compound Annual Growth Rate of 15.9% between 2018 and 2023 and reach $2.41 billion by 2023.

In a series of articles, we will discuss what Continuous Testing is, how to implement it, and how to benefit from it.

What is Continuous Testing?

Continuous Testing is a process that provides faster feedback at all stages of the Software Development Lifecycle (SDLC). Unfortunately, in many cases, minimal automated tests are written at the core level, which puts pressure on the top level of the test pyramid to perform manual exploratory testing. This can lead to a drop in quality, as catching errors after development is complete is very costly. For example, at Google, it can cost up to $5000 when a bug is discovered in the System Testing phase.

Continuous Testing helps us to avoid such issues by providing early feedback as soon as code is committed to the repository. The main goal of Continuous Testing is to automate tests at all stages of the SDLC, test as often as possible, and get faster feedback on builds. This helps us to identify and fix issues early on, making it easier to move to the next stage of development.

Think of it like a Go/No-Go meeting before every release. This meeting helps us to determine whether we are headed in the right direction and whether the application is ready for production. Similarly, Continuous Testing provides us with test results that help us to decide whether we should move on to the next stage of development.

By using Continuous Testing, we can fix all the failures as soon as they occur, which saves time and money in the long run.

Why is Continuous Testing necessary?

In a previous project, we were tasked with developing a mobile application for both iOS and Android platforms. The client’s main objective was to ensure that everything was automated from the beginning, as any bugs that made it into production could have a severe impact on the business and cost millions of dollars.

To minimize the risk of bug leakage, we decided to implement the test pyramid and create a CI/CD pipeline where testing would be done continuously at every stage. The aim was to introduce testing at every stage in the pipeline and fix any issues before moving on to the next phase.

To achieve this, we implemented static code analysis and SecOps scan to ensure that the best coding practices were followed and there were no security vulnerabilities. If any issues were detected, they were flagged for fixing before moving on to the next stage.

Once the above scans were successful, the pipeline would move ahead and run the following tests in the development environment: unit tests, integration tests, system tests, and end-to-end tests. If any of these tests failed, the pipeline would break, and the developer who committed the code would have to fix the issues.

After all the tests passed successfully, the build would be deployed to QA environment, where automated end-to-end tests would run as part of regression testing. If the tests passed, QA would perform manual exploratory tests to uncover any further defects in the build. If QA signed off on the build, it would be deployed to UAT environment, where the UAT team of testers would do further testing.

Finally, after the sign-off, the build would be deployed into production. This approach helped us uncover many issues early in the pipeline and fix them before they caused any major problems. It also helped us implement best coding practices and fix any security vulnerabilities. Although we also discovered some issues during the manual exploratory testing, most of the problems were resolved in the initial phase, providing us with faster feedback.

Continuous Testing has become a necessity in the Software Development Life Cycle (SDLC). It is no longer just a good practice but a must-have. From my experience, I have derived the following points that explain why Continuous Testing is crucial:

  1. Frequent Requirement Changes: In today’s fast-paced world, requirements change frequently. With every change in the requirement, the code also needs to be updated, which poses a risk. Two risks are involved here — whether the updated code will work as expected and whether the change will impact the existing code. Continuous Testing helps us tackle both of these risks. It allows us to set up an automated pipeline that runs unit, integration and regression tests.
  2. Continuous Integration: Continuous Integration has become popular with the advent of agile development. Here, developers merge their code to the main branch as frequently as possible to make it production-ready. Continuous Testing is crucial in this scenario. Before merging the code, it goes through an automated pipeline where tests are run against the build. If a test fails, the code does not merge, and a red flag is raised.
  3. Production Ready: With Continuous Testing, we can be production-ready as all our checks and tests run on an automated pipeline as soon as the developer commits the code.
  4. Reduce Human Errors: In the case of regression tests, if an automated test is written, it serves as documentation proof for the feature and helps to reduce human errors in testing.

Advantages of Continuous Testing

In traditional software development, the team would have to wait for a manual test of newly built features which would be time-consuming and costly to rework if issues were found. However, with Continuous Testing, the team can receive faster feedback on newly committed code, resulting in quicker issue resolution and cost savings.

By running tests throughout the automated pipeline, including Unit, Integration, Functional, Security, Performance, and end-to-end user journeys, we can ensure high-quality in the product before releasing it to production. This eliminates the need for additional testing and reduces the risk of bug leakage.

In addition, Continuous Testing helps to identify and address any potential risks, further improving the quality of the product.

Types of Continuous Testing

Unit tests involve testing a piece of code in isolation. This means testing every method written for the feature. The main objective of this test is to check that the code is working as expected. This includes ensuring that all the functionalities, inputs, outputs, and performance of the code are as desired.

Integration tests test the two modules together. The goal of this test is to check that the integration between the two components is working properly.

Regression tests are the most widely used test and are used to check that the existing functionality of the application is working as expected after the latest addition or modification to the code repository.

End-to-end journey tests are added to check the end-to-end working of the software. The goal of this test is to ensure that the entire software is functioning properly, from start to finish.

Future of Continuous Testing

Continuous testing has become an essential aspect of software development due to the increasing demand for high-quality software and the thriving economies centered on digitalization. A software company needs to respond to the frequent changes that occur in the software development lifecycle, and continuous testing is the solution.

The following are the benefits of continuous testing:

— It enables software companies to adapt to the frequent changes in the software.

— It maximizes automation in the delivery cycle and eliminates loopholes in the process.

— It minimizes human errors.

— It provides a cost-effective solution to the end customer. — It helps software companies beat the competition and outperform their competitors by releasing bug-free software.

— It ensures quality is baked into the product.

As technology advances, it is necessary to upgrade the software development process. With continuous testing, the best results can be achieved.

Cloud & Continuous Testing

Last year, I worked on a mobile application project that required both iOS and Android versions to be developed. As we planned to roll out the application in different regions of Germany, we conducted research on mobile phone usage in those areas and discovered that both Android and iPhone devices were widely used.

We concluded that we needed a combination of at least six devices, including three Android devices and three iPhones, for testing. Specifically, we required two devices each for testing the minimum supported versions, the latest versions, and random versions between the highest and minimum supported ones.

However, obtaining these devices was a challenge. As mobile phone models and their versions are frequently updated, investing in and purchasing the devices would have required frequent updates whenever new versions were released. To overcome this challenge, we turned to cloud platform services and purchased a plan that met our requirements. This enabled us to access the necessary real devices for testing, which we could run automated and manual exploratory tests on smoothly.

In today’s fast-paced world, software operates on multiple platforms, including browsers, mobile phones, and tablets. When releasing an application, it’s crucial to ensure that it works on all desired platforms as expected and fix any issues that arise.

However, this requires testing the application on the respective devices/browsers to ensure that it works flawlessly. Doing so can be costly and time-consuming, as it entails purchasing the hardware and setting up the infrastructure, including hiring engineers.

Continuous testing is essential, and running parallel tests on different browsers and their respective versions or on different mobile devices with various OS versions can help us catch bugs early and address them promptly. Cloud platform services provide us with the necessary devices, browsers/OS, and versions to perform continuous testing, enabling us to catch bugs early and fix issues promptly.

Conclusion

Quality is a crucial aspect of software development, and it needs to be incorporated into every stage of the process. Continuous Testing can help us achieve this by implementing testing at every phase of the Software Development Life Cycle.

In order to be production-ready with every feature we build, it is necessary to receive fast feedback with a fail-fast strategy. There are various types of testing available that can help us implement continuous testing using automated pipelines.

Cloud Services Platforms provide us with the necessary infrastructure to keep up the pace with continuous testing.

--

--