There are (at least) two different kinds of software testing, with distinct goal. There's testing to find problems (e.g., manual exploratory testing, automatic fuzzing), and testing to see if the software still works (e.g., unit tests, integration tests, acceptance tests).
It feels confusing to me that the same word, testing, is used for both kinds of activity.
What would be better words?
@liw Fault testing.
I'm not aware of a *single* word that captures either. "Quality" vs. "Spec" perhaps?
@liw I have a pet theory here! It goes like this: very broadly, managing a piece codebase focuses around two qualitative axes (though there are many more): performance and plasticity. The former is what the codebase currently does, the latter is how easily it can be changed to do something else.
One type of testing applies to and supports management of the former, the other to the latter.
Debugging and validation?
On second read, not too happy about "debugging", it's a bit too broad (especially because it includes the fixing part). Bug finding? Defect exploration?
@liw in my opinion the former is "to experiment" , the latter is "to simulate". I agree that they are really different tasks, conflated on the same "testing" word.
One way to see the difference is that experimenting has the purpose to find something new (and probably unexpected) while a simulation tries to assess that everything is working as expected (i.e. the emphasis is on "old" stuff, not on "new" one).
Lars and friends