So That’s What “Regression Testing” Is!
"Retest everything" is not the explanation of the phenomenon under discussion! This is only a description of the external signs of this phenomenon. The same way a child could explain what a car is without knowing how and why everything works. Like "A car is when Dad is at the wheel, he is going to work, and I'm going to the kindergarten, and it is comfortable to be inside the car”. Everything’s correct, isn’t it?!
Apart from the term regress, there is also the term regression which is in itself an ambiguous term. It is present in psychology or financial analysis where it stands for completely different things.
Well, then. Wikipedia correctly describes the essence of the term “Regression testing” (from Lat. regressio — backward movement), but the expanded explanation is not adequate enough. It’s childish.
Let’s talk adult.
First of all is the concept of Progress.
And then there is the concept of Regress — reverse side of progress. Each and every system develops (progresses) by accumulating functionality. That's great.
For example, let’s take some political party: it appears in one town, then, if it starts growing, it opens branches in the neighboring districts, towns, cities, regions, counties, provinces, reaches the level of a real political force. Any ERP system evolves based on the same principle - more and more information is collected and taken into account for each event. Reports become more and more colorful, three-dimensional, queries contain more and more IFs, BUT NOTs, and EXCEPTs.
However, increase in functionality seamlessly brings an increase in the amount of relationships between the functions. The party becomes more and more autonomous at different locations, the head of the party can no longer decide everything by himself/herself. Now before making a decision the head of the party has to negotiate it with the most influential leaders of the regional offices. Now the interests of others have to be considered. Now it is impossible to be sure that the some order issued to the regions will reach everyone and will be carried out exactly as planned.
This is regress.
To make sure that the current system is not regressing, it is sometimes useful to conduct its comprehensive testing. And it is even more logical to retest everything you can if some significant changes were introduced in the system.
From the outside it looks like "When a new functionality appears we must re-test everything!" As if the testers run the existing tests for the thousandth time, that's all.
No, that’s not all. This is not enough.
The problem of regress for testers is much more serious - we never know what a new functionality will bring to the system. And every time it is necessary to assume/identify/test new interactions in the system, not only to test the new features in isolation from the rest.
What is the sense of running old test cases if they were created without taking into account the new scenarios?
Over time, old functionality starts to intersect with the new one more tightly, and we must re-analyze, re-identify new situations that may arise, re-write test cases that now affect functionality much less than integration aspects…
And in "integration" such bugs exist, which you could never think of when considering the login function separately from other functions...
That is why regression testing is a never-ending nightmare, actually... And asking, "Is it a regress" (not to be confused with "Is it a regression") is a constant challenge that at some point in time has to be constantly dealt with.
At some moment in any project the improvement of the product itself stops, and the struggle for it "to continue working as before" starts... with a constant clarification of whether there is any regress due to the growing complexity of the system.
At the beginning of the project there is no need AT ALL to think about regression testing. At the beginning of the project, there isn’t much sense to bother with the test cases.
But the further you go…