Throughout this series, we’ve been looking at an an alternative to artifact-based approaches to testing: an activity-based approach.
In the previous post, we looked at a kind of scenario testing, using a one-page sheet to guide a tester through a session of testing. The one-pager replaces explicit, formal, procedure test cases with a theme and a set of test ideas, a set of guidelines, or a checklist. The charter helps to steer the tester to some degree, but the tester maintains agency over her work. She has substantial freedom make her own choices from one moment to the next.
Frieda, my coaching client, anticipated what her managers would say. In our coaching session, she played the part of her boss. “With test cases,” she said, in character, “I can be sure about what has been tested. Without test cases, how will anyone know what the tester has done?”
A key first step in breaking the test case addiction is acknowledging the client’s concern. I started my reply to “the manager” carefully. “There’s certainly a reasonable basis for that question. It’s important for managers and other clients of testing to know what testing has been done, and how the testers have done it. My first step would be to ask them about those things.”
“How would that work?”, asked Frieda, still in her role. “I can’t be talking to them all the time! With test cases, I know that they’ve followed the test cases, at least. How am I supposed to trust them without test cases?”
“It seems to me that if you don’t trust them, that’s a pretty serious problem on its own—one of the first things to address if you’re a manager. And if you mistrust them, can you really trust them when they tell you that they’ve followed the test cases? And can you trust that they’ve done a good job in terms of the things that the test cases don’t mention?”
“Wait… what things?” asked “the manager” with a confused expression on her face. Frieda played the role well.
“Invisible things. Unwritten things. Most of the written test cases I’ve seen refer only to conditions or factors that can be observed or manipulated; behaviours that can be described or encoded in strings or sentences or numbers or bits. It seems to me that a test case rarely includes the motivation for the test; the intention for it; how to interpret the steps. Test cases don’t usually raise new questions, or encourage testers to look around at the sides of the path.
“Now,” I continued, “some testers deal with that stuff really well. They act on those unspoken, unwritten things as they perform the test. Other testers might follow the test case to the letter — yet not find any bugs. A tester might not even follow the test case at all, and just say that he followed it. Yet that tester might find lots of important bugs.”
“So what am I supposed to do? Watch them every minute of every day?”
“Oh, I don’t think you can do that,” I replied. “Watching everybody all the time isn’t reasonable and it isn’t sustainable. You’ve got plenty of important stuff to do, and besides, if you were watching people all the time, they wouldn’t like it any more than you would. As a manager, you must to be able to give a fair degree of freedom and responsibility to your testers. You must be able to extend some degree of trust to them.”
“Why should I trust them? They miss lots of bugs!” Frieda seemed to have had a lot of experience with difficult managers.
“Do you know why they miss bugs?” I asked. “Maybe it’s not because they’re ignoring the test cases. Maybe it’s because they’re following them too closely. When you give someone very specific, formalized instructions and insist that they follow them, that’s what they’ll do They’ll focus on following the instructions, but not on the overarching testing task, which is learning about the product and finding problems in it.”
“So how should I get them to do that?”, asked “the manager”.
“Don’t turn test cases into the mission. Make their mission learning about the product and finding problems in it.”
“But how can I trust them to do that?”
“Well,” I replied, “let’s look at other people who focus on investigation: journalists; scientific researchers; police detectives. Their jobs are to make discoveries. They don’t follow scripted procedures. No one sees that as a problem. They all work under some degree of supervision—journalists report to editors; researchers in a lab report to senior researchers and to managers; detectives report to their superiors. How do those bosses know what their people are doing?”
“I don’t know. I imagine they check in from time to time. They meet? They talk?”
“Yes. And when they do, they describe the work they’ve done, and provide evidence to back up the description.”
“A lot of the testers I work with aren’t very good at that,” said Frieda, suddenly as herself. “I worry sometimes that I’m not good at that.”
“That’s a good thing to be concerned about. As a tester, I would want to focus on that skill; the skill of telling the story of my testing. And as a manager, I’d want to prepare my testers to tell that story, and train them in how to do it any time they’re asked.”
“What would that be like?”, asked Frieda.
“It varies. It depends a lot on tacit knowledge.”
“Tacit knowledge is what we know that hasn’t been made explicit—told, or written down, or diagrammed, or mapped out, or explained. It’s stuff that’s inside someone’s head; or it’s physical things that people do that has become second nature, like touch typing; or it’s cultural, social—The Way We Do Things Around Here.
“The profile of a debrief after a testing session varies pretty dramatically depending on a bunch of context factors: where we are in the project, how well the tester knows the product, and how well we know each other.
“Let me take you through one debrief. I’ll set the scene: we’re working on a product—a project management system. Karla is an experienced tester who’s been testing the product for a while. We’ve worked together for a long time too, and I know a lot about how she tests. When I debrief her, there’s a lot that goes unsaid, because I trust her to tell me what I need to know without me having to ask her too much. We both summarize. Here’s how the conversation with Karla might play out.”
Me: (scanning the session sheet) The charter was to look at task updates from the management role. Your notes look fine. How did it go?
Karla: Yeah. It’s not in bad shape. It feels okay, and I’m mostly done with it. There’s at least one concurrency problem, though. When a manager tries to reassign a task to another tester, and that task is open because the assigned tester is updating it, the reassignment doesn’t stick. It’s still assigned to the original tester, not the one the manager assigned. Seems to me that would be pretty rare, but it could happen. I logged that, and I talked about it to Ron.
Me: Anything else?
Me: Okay. Want to look at that tomorrow, when you look at the reporting module? And anything else I should know?
Karla: I can get to that stuff in the morning. It’d be cool to make sure the programmers aren’t mucking around in the test environment, though. That was 20 minutes of Setup.
Me: Okay, I’ll tell them to stay out.
“And that’s it,” I said.
“That’s it?”, asked Frieda. “I figured a debrief would be longer than that.”
“Oh, it could be,” I replied. “If the tester is inexperienced or new to me; if the test notes have problems; if the product or feature is new or gnarly; or if the tester found lots of bugs or ran into lots of obstacles, the debrief can take a while longer.
When I want to co-ordinate testing work for a bunch of people, or when I anticipate that someone might want to scrutinize the work, or when I’m in a regulated environment, I might want to be extra-careful and structure the conversation more formally. I might even want to checklist the debriefing.
No matter what, though, I have a kind of internal checklist. In broad terms, I’ve got three big questions: How’s the product? How do we know? Why should I trust what we know, and what do we need to get a better handle on things?”
“That sounds like four questions,” Frieda smiled. “But it also sounds like the three-part testing story.”
“Right you are. So when I’m asking focused questions, I’d start with the charter:
- Did you fulfill your charter? Did you cover everything that the charter was intended to cover?
- If you didn’t fulfill the charter, what aspects of the charter didn’t get done?
- What else did you do, even if it was outside the scope of the mission?
“What I’m doing here is trying to figure out whether the charter was met as written, or if we need to adjust the it to reflect what really happened. After we’ve established that, I’ll ask questions in three areas that overlap to some degree. I won’t necessarily ask them in any particular order, since each answer will affect my choice of the next question.”
“So a debriefing is an exploratory process too!” said Frieda.
“Absolutely!” I grinned. “I’ll tend to start by asking about the product:
- How’s the product? What is it supposed to do? Does it do that?
- How do you know it’s supposed to to that?
- What did you find out or learn? In particular, what problems did you find?
“I’ll ask about the testing:
- What happened in the course of the session?
- What did you cover, and how did you cover it it?
- What product factors did you focus on?
- What quality criteria were you paying the most attention to?
- If you saw problems, how did you know that they were problems? What were your oracles?
- Was there anything important from the charter that you didn’t cover?
- What testing around this charter do you see as important, but has not yet been done?
“Based on things that come up in response to these questions, I’ll probably have some others:
- What work products did you develop?
- What evidence do you have to back the story? What makes it credible?
- Where can people find that evidence? Why, or why not, should we hang on to it?
- What testing activity should, or could, happen next or in the more distant future?
- What might be necessary to enable that activity?
“That last question is about practical testability.”
“Geez, that’s a lot of questions,” said Frieda.
“I don’t necessarily ask them all every time. I usually don’t have to. I will go through a lot of them when a tester is new to this style of working, or new to me. In those cases, as a manager, I have to take more responsibility for making sure about what was tested—what we know and what we don’t. Plus these kinds of questions—and the answers—help me to figure out whether the tester is learning to be more self-guided
“And then I’ve got three more on my list:
- What factors might have affected the quality of the testing?
- What got in the way, made things harder, made things slower, made the testing less valuable?
- What ongoing problems are you having?”
Frieda frowned. “A lot of the managers I’ve worked with don’t seem to want to know about the problems. They say stuff like, ‘Don’t come to me with problems; come to me with solutions.'”
I laughed. “Yeah, I’ve dealt with those kinds of managers. I usually don’t want to go them at all. But when I do, I assure them that I’m really stuck and that I need management help to get unstuck. And I’ve often said this: ‘You probably don’t want to hear about problems; no one really does. But I think it would be worse for everyone if you didn’t know about them.’
“And that leads to one more important question:
- What did you spend your time doing in this session?”
“Ummm… That would be ‘testing’, presumably, wouldn’t it?” Frieda asked.
“Well,” I replied, “there’s testing, and then there’s other work that happens in the session.”
We’ll talk about that next time.