The Association for Software Testing is crowd-sourcing a book, Navigating the World as a Context-Driven Tester, which aims to provide responses to common questions and statements about testing from a context-driven perspective.
It's being edited by Lee Hawkins who is posing questions on Twitter, LinkedIn, Mastodon, Slack, and the AST mailing list and then collating the replies, focusing on practice over theory.
I've decided to contribute by answering briefly, and without a lot of editing or crafting, by imagining that I'm speaking to someone in software development who's acting in good faith, cares about their work and mine, but doesn't have much visibility of what testing can be.
Perhaps you'd like to join me?
--00--
"How can I possibly test 'all the stuff' every iteration?"
Whoa! There's a lot to unpack there, so let me break it down a little:
- who is suggesting that "all the stuff" needs to be tested?
- why are they suggesting it?
- what do they mean by "all"?
- what do they mean by "stuff"
- why are you on the hook for this task?
OK, to summarise your answers then: you're the tester on the team and it's your product owner and the developers who think this but you agree with them (1) because ... you are the tester on the team (2, 5). No-one is specific about "all" but you understand it to mean that the others do not want to do any (3). "Stuff" is similar, and it's your responsibility to work it out (4).
I don't think this is a healthy or sustainable situation and, while it's easy to say that it needs to change I know that making a change can be difficult, particularly if you don't have an ally on the team.
But the thing that worries me the most is that you think that you should test all the stuff yet you can't say what you mean by "all the stuff". Your first ally should be yourself.
So let me propose a way that you could think about your role. Up front, I'll note that contexts differ so it might not fit yours perfectly although I think it works reasonably well in general.
Remember that it's never possible to test "all the stuff" because there are so many variables involved in running any piece of software anywhere that there's always another test that could be performed. What is possible is to decide what is the important stuff to test given what we know about stakeholder concerns, risks to business value, time available, the software, and other relevant factors.
This changes over time. On an iteration level, it changes because the software is being developed. But other things can change too, perhaps the stakeholders change their minds, or a deadline moves closer, or the infrastructure your product runs on is upgraded, or an information gap is identified, or ...
Noticing these changes is not necessarily trivial but consciously looking for them and building a network that will share them are both generally productive ways to increase the chances of doing it.
Once identified, the task becomes working out what is an appropriate amount of time and effort to spend reviewing the changes. Sometimes that will include not looking at them at all. It's also important to think about how to look at them and what kind of outcome is desired from that activity.
For example, one time the requirement might be a broad landscape view of some new feature time-boxed at a couple of days with a verbal report to the team about the risks identified. On another occasion it might be a quick and very tightly-focused investigation into combinations of input values with the goal of extending the coverage of an existing parameterised unit test. Different people will be better suited to different types of task, and multiple pairs of eyes will likely be better than one.
Talking of automation, keep an eye on the big picture too. If there's some time-consuming repetitive testing tasks that are mechanical and boring to do, then they're likely to be done badly or not at all. Look for ways to subcontract that work to test suites and free a human up to do something they're better suited to.
Communication is key for teams to cohere. I think it starts with self-communication: understand what you are trying to achieve in a piece of work, and why, and what is out of scope. This will help to keep focus when working and show others that you are someone who thinks about what you are doing.
If you can find a version of that view of a testing role that you feel comfortable with, then you will be in a better place to interact with others about your work. You'll be able to suggest that someone else should pick up the task of checking that bug fix, or that you'd like to pair with someone to review the coverage of this test suite and see whether it can be extended to remove a day's manual effort at the end of each sprint, or that you think it would be a good idea to get together as a team to think about edge cases before coding the next feature so that more robust testing can be done during development.
It probably won't be easy, by the sounds of your situation, but it's certainly easier than the Sisyphean task of testing everything all the time. It'll be more fun too.
Image: Bing Image Creator
Comments
Post a Comment