I'll make it quick.
You probably know Dan North as the inventor of behavior-driven development and as a frequent speaker. In a talk in March 2019 he stated that the goal of testing is…
to increase confidence for stakeholders through evidence.
Daniel Terhorst-North, 2019
Let's ignore that testing cannot prove absence of bugs and hence cannot provide true evidence.
The core of the statement — "to increase confidence for stakeholders" — is my concern.
He explains that stakeholders is everyone whose life is touched by the software — so he is interpreting that term broadly, which is fine.
With no emphasis on increasing confidence over simply providing or establishing confidence,
things boil down to merely: confidence.
Confidence with the product and the code base sure is of use to the stakeholders
but… is confidence really the key effect of testing, is it the purpose?
What if we take testing away?
Let's imagine for a moment we have no testing — none at all.
Please ask yourself, without testing:
- Can we add new members to the team and have them find the things they broke, themselves?
- Can we change the software with low risk, can we update third party dependencies?
- Can we move fast and not break things?
- Can we rest assured that the bugs we fixed yesterday are not coming back as regressions tomorrow?
What I would like to suggest is the following:
The point of software testing is this:
to enable the team to change the software,
to reduce the risk of changes, and
to retain development velocity over time
by uncovering issues before they do damage.
Sebastian Pipping, 2021
To reduce this further: the goal of testing is to:
- Enable change
- Reduce risk
- Retain velocity
- Prevent damage
That's the purpose of testing. Thank you.
Disagree? Drop me a mail at firstname.lastname@example.org.
PS: That talk from March 2019 is "BDD Is Not About Testing" by Dan North at Beauty in Code 2019.