I’ve had an interview question on TestGorilla where the following were expressed:
- Regression testing ensures the recent changes in the software code have not affected the unaltered sections.
- Retesting establishes that the failed test cases are passed after the defect is fixed.
- Regression testing includes no defect verification, retesting does.
True / False
Now searching about ‘retesting and regression testing’ on Google I get dozens of sites that mention similar statements.
But, in my head, I have so many issues with this, and it’s so strange because I find almost nothing stating otherwise or contradicting these.
Especially since these days a lot of interviews rely on popular questions that you find on a Google search, I’m worried I’m being left behind somewhat if I don’t study that alternative path.
Here are my comments:
- ‘regression testing ensures’: it does not ensure anything, testing doesn’t show the absence of bugs, but searches for their presence.
- ‘regression testing … recent changes in the software code’: changes can happen without touching the code, the system, or the software - isn’t testing that happens for those changes also regression testing? and what does recent even mean, how is a ‘recent change’ different from a ‘change’ - you don’t do regression testing unless it’s recent?
- ‘have not affected the unaltered sections’ - is regression testing not covering changed areas?
- ‘retesting establishes that the failed test cases’ - getting over the ‘test cases’…is retesting limited to the same ideas as before being blocked?
- ‘retesting … after the defect is fixed’ - can’t you retest without a defect fix? what if you want to study the area more deeply, with new tools, or vary the data, to uncover new defects?
- ‘retesting establishes - test case passed - after defect fix’ - it’s not ‘established’, as we wouldn’t know if a developer’s defect fix actually fixed the problem or didn’t introduce a new one in the same changed area; and the scope of retesting seems to be the setting of a test case to pass, and I wonder why it’s not to actually search for trouble; what’s the technique used to test for ‘defect fix’ if the scope for retesting is to establish the test case to ‘passed’ after the defect fix?
- ‘regression testing includes no defect verification, retesting does’ - so if I do regression testing and find bugs, my regression testing stops, I do retesting then, then again regression? isn’t regression testing repeating testing(retesting?); retesting can include no defect verification as well in case I do it for different reasons;
Bach and Kaner in a 1999 paper(Paradigms of Black Box Software Testing) mention this:
- Regression testing: Repeat testing after changes
- Goal: Manage the risks that (a) a bug fix didn’t fix the bug or (b) the fix (or other change) had a side effect.
- Paradigmatic cases: Bug regression, old fix regression, general functional regression
Another large paper on Regression testing from Kaner:
I like Kaner’s and Bach’s views very much and it’s what I’m thinking of when repeat testing(retesting) and regression testing pop up.