This is a great book to read for anyone who has been doing or has done QA software testing for at least a little while. It was recommended to me by one of my mentors. I was most interested in the authors opinions about test automation but found myself really appreciating most of the ‘lessons’ they wanted to impart on the reader. Some of the first lessons were about what testing even is and how it’s a process of gathering relevant information. Such as this:
“Lesson 11: You don’t assure quality by testing”
Pg27
Your team may be called “quality assurance.” Don’t let that go to your head. Your test results and bug reports provide information that facilitates the assurance of quality on the project, but that assurance results from the effort of the entire team.
Another eye opener were lessons 16, 17 and 18 about how testing is applied epistemology and cognitive psychology. The authors write
“It’s the study of evidence and reasoning. It establishes the foundations of scientific practice. Epistemology is studied by scientists, educators, and philosophers—and elite software testers. Students of epistemology study science, philosophy, and psychology with the goal of learning how we all can improve our thinking.” and
Pg30-31
“ Topics in Epistemology that relate directly to software testing include:
* How to gather and assess evidence.
* How to make valid inferences.
* How to use different forms of logic.
* What it means to have a justified belief.
* Differences between formal and informal reasoning.
* Common fallacies in informal reasoning.
* Meaning and ambiguity in natural language”
If epistemology tells us about how we should think, cognitive psychology tells us about how we do think. Some of its topics relating to testing include:
[…]
* How you sort ideas and things into categories.
* How you notice differences between things
* Distortions in remembered events.
* How you reconstruct partially remembered events (such as nonreproducible bugs).
As an undergrad most of my courses were in philosophy (logic, history of science), sociology and psychology. So reading this made me feel like my career makes sense in hindsight since these ways of thinking and questioning are what I tend to do in my daily life when I interact with the world. I don’t hold on to my beliefs very tightly and I tend to look for falsifying evidence wherever I can. Since having my child I’ve also read a lot about relationships and communication styles we use with one another. The skills I’ve learned in this sphere include nonviolent communication, individual psychology and emotional coaching/emotion focused therapy which I think are useful skills when dealing with humans in general and creating a better world for us now and posterity. That said I do have my criticisms about each (for another time and another place), but I don’t think that takes away from some lessons learned.
Another thing I learned is that the one of the authors, Cem Kaner was the person who coined the term ‘exploratory testing’ which is “a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project.” I like this way of approaching testing because it describes the complex simultaneous processes involved when one fully engages in this sort of work. Testing should be a thinking/thoughtful process and can happen with or without a machine.
The authors recommend to read this book in small doses. I couldn’t fight my insatiable curiosity to read it all hehe, but I will probably come back to it to remember the lessons learned ;)
I’d also like to call out a blog post written by a fellow Outreachy 18′ intern Barb. Here post Context Driven Testing and Other Schools summarizes the different approaches to testing.