This is a companion piece for my talk “Testing Demystified” at the DDD East Anglia, where I encourage people from other disciplines, namely programmers, to get more involved in (exploratory) testing activities (because it’s fun! And worth it!). And here are some really simple steps that you can take:
- Pair with your Tester (aka: Collaborate)
- Think of Three Things (aka: Practice)
- Learn about Testing (aka: Study)
… and repeat.
Pair with your Tester (aka: Collaborate)
It’s one of the ‘97 things every programmer should know‘ (via Janet Gregory):
“Something magical happens when testers and programmers start to collaborate.”
And I find this very, very true. Generally, collaboration in a team is beautiful, and opportunities to work together with your tester are plenty.
I often sit with my programmers as soon as they think they’re done with something and are ready to have it reviewed and tested, to let them walk me through it. This offers a lot of opportunities in just one session: I get to know a bit more on the implementation details, where the changes happened and which components they think might be affected. I’ll get to learn what was tested already and what kind of automation we have in place and can add on to that. We can come to a shared understanding of what was in and out of scope of the story, so that I won’t raise bugs on things that are not tackled yet. I can tell them about my test ideas and test strategy so that they know what I’ll be looking out for and can give me feedback on that. And while they walk me through the feature, we would often wonder out load – “why was this happening now?” or “oh, did you see that?” or “what happens if you do this?” – and more often then not, we would stumble directly into inconsistencies, bottlenecks, missing implementation details or issues that can be worked on straightaway.
But you can go a step further and in cross functional teams you might be asked to help with testing yourself. The best way to prepare for this is by working together with your tester on testing activities directly. Sit with them. Understand what they do. Observe them coming up with this crazy test ideas. Do paired sessions on exploratory testing charters, test idea generation, test automation. And when you pick up a testing task yourself, do briefs and debriefs with your tester. These quick check backs do not only show that you respect your team member and value their opinion, they also add transparency and another safety net, further knowledge sharing, a second pair of eyes – and often take just about ten minutes, time well spend!
Think of Three Things (aka: Practice)
This is based on Jerry Weinberg’s rule of three, e.g. as stated in ‘Are your lights on?‘:
“If you can’t think of at least three things that might be wrong with your understanding of the problem, you don’t understand the problem.”
If you can’t think of at least three things … This is a neat way to get yourself into testing mode, be it when discussing or looking at requirements or whenever you think you’re done with a task or feature. Hold still, step back, breathe, and come up with three things you haven’t thought of or considered before. Three different users or use cases. Three different situations you’re software might be in. Three different ways it could break. Three different approaches to solve the problem in front of you. And if you struggle to find new angles or ideas, you can use Testing Heuristics to unblock you.
This not only can help to detect issues you hadn’t considered before, but can also serve as a general technique to stay creative, agile and flexible, to think on your feet, to be emphatic, to get into the habit of looking at something from different viewpoints. A really useful exercise, and again one that doesn’t necessarily take long and can easily be incorporated into your workflow.
Learn about Testing (aka: Study)
And lastly, you can get more exposure to testing by keeping learning and reading up on it. I’ve gathered some resources and starting points that I’d recommend. These are all just a selected few, if you start looking into, you’ll find many many more and can discover your own favourites. Have fun and engage!
Connect with testers and the testing community
An straightforward way to find food for thought on testing is by joining a local Meetup group for testers. We have one in Cambridge, so if you happen by, please say Hello, the chances are high that you’ll meet me there. Other good landing points:
- Ministry of Testing
- … and the Software Testing Clinic
- AST – Association for Software Testing
- Connect with Testers on Slack
- A list of testers to follow on Twitter by Rich Rogers
- … and it’s companion, a list of blogs to read
Books on Software Testing
These are all, I find, pretty much classics now in the software testing field:
- Gerald M. Weinberg: Perfect Software and other illusions about testing
- Cem Kaner, James Bach, Bret Pettichord: Lessons Learned in Software Testing. A Context Driven Approach.
- Elisabeth Hendrickson: Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing.
- Lisa Crispin, Janet Gregory: Agile Testing: A Practical Guide for Testers and Agile Teams.
Using Heuristics is a great help when testing, be it by ordering your thoughts or coming up with new test ideas. Here you can find some examples:
- Elisabeth Hendrickson et al: Test Heuristics Cheat Sheet
- Santosh Tuppad: Heuristic Table of Testing
- Beren van Daele & Ministry of Testing: TestSphere Card Deck.
More articles pointing to even more resources
And here are some similar themed great articles and blog posts, that can help you getting started in Software Testing, pointing to more, other, similar resources and helping you on the way:
- Katrina Clokie: Testing for Non-Testers Pathway
- Heather Reid: 30 Things Every New Software Tester Should Learn
- Rob Lambert: How to get started in software testing – a few resources
- Huib Schoots: Great Resources
- Foundations of Software Testing – Material for the BBST Course