When developers write and submit new code for an application, those pieces of code sometimes have unexpected effects on existing code, causing it to break.
It’s difficult to avoid this altogether, but it is possible to detect that broken code before it is released. This is done with regression testing.
Regression testing is essentially a series of tests that check that the application runs as intended. The idea is to run this series of tests every time new code is submitted.
It’s called regression testing because the verb regress means to return to a former state or condition, which in software, isn’t considered a good thing.
In other words, regression testing is used to search for regressions to ensure that new updates or features that are added to software (involving new or changed code) don’t break any previously released updates or features (existing code), and to ensure that the tested software still performs as desired after a change.
Regression testing is often confused with retesting, but the two differ on one key aspect: Regression testing is frequently run on the entire product, whereas retesting is used to check a specific feature, after you’ve fixed a bug in it, meaning regression testing is designed to test for bugs you don't expect to be there, whereas retesting is designed to test for bugs you do expect to be there.
In that sense, regression testing is a bit like your insurance policy, or your seat belt. You don’t always need it (in fact you hope you won’t ever), but you still have to have it, just to be safe.
This is why many testers consider manual regression testing particularly tedious; it’s a bit like being given the task of searching through a haystack for a needle that probably isn’t there. And you don’t just have to do it once, you have to do it every time new code is created.
What’s more, the suite of regression tests grows with the product, meaning that over time, it becomes practically impossible to execute and maintain manually.
For this reason, many QA teams choose to automate their regression testing.
Read on in the next blog post on this topic: 5 reasons why you should automate regression testing.