If you’re familiar with DevOps, you know continuous testing is a big part of the process.
Testing has always been part of the software development life cycle—and for very good reason—but testing wasn’t always as efficient as it is now.
With the ever increasing demand for more and better apps, testing has had to adapt to the current needs of the market which fuels cycles of continuous testing and deployments.
And for many, if not most businesses, this isn’t negotiable. A company that can’t keep up with demand, cannot survive for long.
Continuous testing and delivery is the only way to keep up, meet quality, and demand for a voracious market. There’s no looking back. Demand will continue to alongside the pressure to keep up.
If you’re unfamiliar with continuous testing, and how we arrived at this point, this article will help you understand what it is, why it’s used, and why it’s important, alongside its relation to other, earlier approaches.
What is continuous testing?
Very simply, continuous testing is undisrupted testing carried out on a continuous basis. It means testing early, and testing everywhere (environments and devices).
The typical modern DevOps process involves changes moving through the development, testing, and deployment pipelines continuously.
Automation is the workhorse that allows this superior method of continuous testing to flourish. Continuous testing is also major part of a much-sought but difficult-to-achieve testing goal known as shifting left, where testing occurs as early in the DevOps process as possible.
Why is continuous testing important for DevOps?
With continuous testing in DevOps, faults and other problems will be identified earlier. With earlier discovery of unanticipated issues, performed through automated technologies, testing time is shortened, costs are lowered, and a higher quality product is produced.
Additionally, when a business is able to respond quickly to user input or to developments in the market, they better position themselves to compete in a market that demands a lot from a QA team.
Continuous testing also allows for experimentation with new solutions. And it promotes shifting-left and creating continuous feedback.
Continuous testing benefits
The benefits of continuous testing are many. Some of the big ones are:
- Products are released quicker
- Potential for risk reduction with early stage testing
- Products are higher quality
- Costs are lowered
How did we arrive at continuous testing?
So how did we arrive at continuous testing in the first place?
It’s been an interesting road—I’ll gladly show you the map of how we reached this point in development.
And as an aside: It must be noted that, while this is presented in past tense, there are developers who still use older methods of development and testing. While it is certainly no longer the standard method it hasn’t completely gone away in every business. It can still work well for some small projects.
That said, if we go back far enough in time, testing was carried out by the developers writing the code. There weren’t teams of testers to help find flaws and bugs. Invariably, even though the developer thought the code to be flawless, somewhere down the line, it wasn’t uncommon for the program to encounter a situation that hadn’t been tested and the program would encounter issues.
In a small business, this may not have been a disaster. (Though it certainly wasn’t something the users appreciated.)
But eventually, most IT shops came to a place where the old way wasn’t working for them and things started to progress a bit. And the adoption of what is called the traditional, or “waterfall” method, of testing came about.
The “waterfall”: The traditional approach
In this method, software was completely developed before testing began. If the software was a large application, many developers may have worked on a variety of teams throughout different phases of the project. And once a team completed their part of the software, it was handed off to another team to complete its part, and so on as each team completed their piece of the project.
This method of development was pretty rigid, lacking the ability for adapting to requested changes.
Testing didn’t begin until after the development cycle had completed, and the software was fully coded.
Once coding was completed, the objective of testing was to detect all of the defects in the application and testing was conducted in a planned order.
Typical waterfall testing characteristics include:
- Testing done in a separate phase.
- Testing only carried out at development completion.
- Testers may not be involved in requirements.
- Testing and development teams work separately.
- Time delays between development and testing.
- Testing levels cannot overlap.
- Regression testing only at end.
- Acceptance testing only at end.
Naturally, this method had some big drawbacks, including:
- When one test failed, further testing was delayed.
- More time consuming when multiple defects detected.
- Quality of product possibly low.
As new methods began to arrive on the scene, born out of the necessity for better development methods, testing also changed.
Rapid Application Development (RAD)
RAD is an incremental mode based on prototyping and receiving rapid feedback. RAD may be appropriate for small to medium sized projects, but isn’t suited for large projects.
In RAD, testing is done after the prototype is built. Then testers evaluate to determine of it meets their needs in:
- User experience
- Compatibility (with other applications, platforms, devices, etc.)
Agile testing is very popular today. With agile, testers become involved alongside the development phases, from requirements, coding, and developing test cases.
Consider the following Agile testing characteristics:
- Testing isn’t a separate phase.
- Testing takes place alongside development.
- Testing teams are involved in requirements.
- Testing and development teams work together.
- No delays between development and testing.
- Testing levels overlap.
- Testing is more flexible.
- Test plans reviewed after each sprint.
- Regression testing after each iteration.
- Acceptance testing after each iteration.
In the case of scrum, testing is a framework used in agile development. It’s used in complicated software design and includes checking for and ensuring quality, performance, and usability.
Consider these scrum testing characteristics:
- Development and testing teams work together.
- Need for coordination between development and testing.
- Checks software performance.
- Test team is involved in requirements.
With the V-Model, often considered an extension of the older waterfall approach, testing is performed once development is almost or fully complete. Development and testing are separate. There isn’t an iteration approach, and it isn’t as reliable as agile testing.
A few of the most significant V-Model testing characteristics:
- Testing is after development completion.
- Testing and development teams work separately.
- Testing is sequential.
As you can imagine, the V-model is much less common to encounter today than other approaches.
Application testing has come a long way from when a lot of the testing was performed solely by select programmers, working in front of a green screen, often without teams of testers working alongside them.
Over the years, we’ve witnessed quite a bit of change from old waterfall method of testing. Each new method marked an improvement over the previous version, and each resulted from a combination of necessity and the inevitability of abstraction.
Today, continuous testing is the best method for ensuring that you’ve caught as many issues as possible before your next release.
Fortunately, in the world of development, we only move forward. Which begs an important question: Are we still in the wild west of testing? What’s next?
Only time will tell.
Disclaimer: The views and opinions expressed above are those of the contributor and do not necessarily represent or reflect the official beliefs or positions of Sofy.