Skip to main content

Episode 008 - What is Software Testing? - The Evil Tester Show

In this podcast we consider what is software testing, is there a one true definition? And do we care?

Subscribe to the show:

Show Notes

What is Software Testing?

Hard Question. But many people want easy answers. I do provide some easy answers but I encourage you to find your own answers.

Interview answers

ISTQB

ISTQB foundation syllabus says “Software testing is a way to assess the quality of the software and to reduce the risk of software failure in operation.”

https://www.istqb.org

ISTQB Glossary Definition

glossary was down when I checked image

Wikipedia - Software Testing

https://en.wikipedia.org/wiki/Software_testing

“Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.[1] Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation.”

Cem Kaner

Referenced from wikipedia

https://kaner.com/pdfs/ETatQAI.pdf

“Software testing is an empirical, technical, investigation conducted to provide stakeholders with information about the quality of the product or service under test”

Go Meta to the question

  • who is asking the question?
  • did they ask the right question? perhaps they want to know what you do, rather than what software testing is?
  • what are they going to do with the answer?

who is asking the question?

  • all sales pitches, are about needs, value, want, risk, fear

Issues with Definitions

Prescriptive

Treat them as descriptive.

Allow for multiple descriptions.

Hard question

Change.

Identify with a role. Definition covers everything you do.

Identify with multiple roles, or a meta role.

My working definition

Meta: “comparing models of the thing with the thing”

System:

comparing models of system with observed interactions of the system

for the purpose of….

evaluating the comparison and refining the model

A few weeks ago this was:

" Software Testing is a process where we compare a model of the software to the software (or another model of the software) for the purposes of refining the model and identifying changes that could be made to the software. "

Why do we care?

  • why do we care what it is? should we care more about what we achieve by testing software and how we do it?
  • make your own definition

My own definition explored

Software Testing is a process where we compare a model of the software to the software (or another model of the software) for the purposes of refining the model and identifying changes that could be made to the software.

  • where does model 1 “a model” come from?
    • requirements
    • stated needs/wants/documentation
    • comparison to other systems
    • exploration
  • why “another model” and not just the software?
  • how do we compare?
    • investigation
    • experimentation
    • exploration and discovery
  • what does refining the model mean?
    • expanding, because I learn more
    • amending, because the model is incorrect
  • what changes to the software?
  • why “could be made”?
  • why aren’t we doing it to ‘confirm’ the model?
    • That happens as a side-effect and is less interesting than expanding and refining the model.

Often we talk about: bug, defect, error, failure - these are noticing comparison failures

Diagram

Imagine a venn diagram with two overlapping circles

  • model <-> Software

really it is

  • model <-> Observed Behaviour Software (which is a model)

and so becomes

  • model <-> model

Because when we “test the software” we are really working with our observed physical model of the software, it is still a model, it is our interpretation of the software, to the degree that we can observe it and the accuracy of our observation.

But we say software.

Sharing your definitions

People compare and contrast to ‘defend’ their model.

Models are a representation of belief.

Having multiple models, accepting multiple definitions, for different audiences.

You are different audiences at different times.

Keep refining your definition

Build your own definition.

Go meta.

Go specific for the context you are working in.

Go specific for the task that you are working on.

Having THE definition, is less important than continuing to revise and expand your definition. To support your communication with others. And to aid your thinking and growth.