I haven't done this in a while, because the team I work on is a great Agile team. The testers are invited to the feature grooming sessions, each story has acceptance criteria written, and the developers do a feature handoff with the testers when each story is ready for testing.
But at previous companies, I was often given a story to test with no feature handoff and no acceptance criteria. Sometimes the story wouldn't even have a description, and would have some cryptic title, like "Endpoint for search". I would usually be annoyed by this, and I would ask for clarification, but I would first use it as an opportunity to do some exploratory testing while I had no pre-conceived notions what the feature could do or not do. And while testing in this fashion, I would often find a bug, show it to the developer, and have him or her say, "Oh, it never even occurred to me to test the feature in that way."
Of course I don't want to go back to the days of cryptic story titles with no description! But testing without knowing what the feature does can have some benefits:
- You approach the application the same way a user would. When your users see your new feature for the first time, they don't have the benefit of instructions. By trying out the feature without knowing how it works, you could discover that an action button is hard to find, or that it's difficult to know what to do first on a multi-part form.
- You might try entering data that no one was expecting. For example, there could be a form field where the date was supposed to be entered with month and day only, but you enter in the month, day, and year, which breaks the form.
- Without any instructions from the developer, you might think of other features to test the new feature with, besides those the developer thought of. Those feature combinations might yield new bugs.
So how can we add these advantages back into our testing without skipping reading the acceptance criteria and having feature handoffs? Here are a few ways:
- Pair test with someone on another team. At my company we have many teams, each of which often has no idea what the other teams are building. Four times a year, the software testers get together in pairs where the two testers are from very different teams, and they swap applications and start testing. This is a great way to find bugs and user experience issues!
- When you start testing, spend some time just playing around with the new feature before writing a test plan. By exploring in this way, you might come up with some unusual testing ideas.
- After you've tested the acceptance criteria, take some time to think about what features might be used with the new feature. What happens when you test them together? For example, if you were testing a new page of data, you could test it with the global sort feature that already exists in your application.
- Before you finish your testing, always ask yourself, "What else could I test?" I wrote about this extensively in my post The One Question to Ask to Improve Your Testing Skills.
Of course, there are also times where not knowing all the details about a feature is detrimental. There have been times in my testing career where I tested a feature and completely missed something that the feature could do, because no one told me about it. That's why I'm glad that we have acceptance criteria and feature handoffs. But there are also times when not knowing can yield some of the most interesting bugs.