TORONTO -- Software testers and nurses may work in different fields, but they share some of the same practices. Software testers, like medical professionals, rely on triage when deciding what problems to address first.
Prominent tester Rob Sabourin and his wife, Anne, led a dramatic keynote speech at the Conference of the Association for Software Testing (CAST) last week, comparing hospital labor triage cases to software testing triage.
Before delving into the exchange, Rob Sabourin, director of research and development at Purkinje Inc., clarified "triage" as it relates to software testing. Bug triage, he said, is concerned with which bugs to fix and which to keep.
"Since 1992 every single software engineering project I've been involved in has some sort of bug triage," he said. "I'm a Scrum fanatic and do three times the amount of triage that I used to do."
At the beginning of each iteration, Sabourin's team decides which requirements they are going to apply. This evaluation is necessary due to the short time span of each iteration in Scrum, he explained.
"Triage is a dominant method in agile methods, although we don't triage bugs. We deal with bugs right away," Sabourin said.
Anne Sabourin is a nurse at the Royal Victoria Hospital in Montreal. She works in labor triage and draws on her 25 years of experience to make judgment calls based on a set of heuristics. Like a tester, she constantly gathers and processes information to perform her job. Resources are limited; beds, stretchers and anesthesiologists have to be assigned according to need. A patient's history, which includes information not necessarily in the patient's records, shapes her treatment. Sabourin must know what critical signs to look for to determine which patients need a bed and a doctor immediately.
The Royal Victoria Hospital, she explained, brought in triage 15 years ago "because patients didn't want to wait around. Some [patients] could be screened and sent home." Screening, prioritizing and allocating resources are issues testers deal with every day.
As in testing, situations in labor triage are "not discrete -- there are many things happening in parallel," said Rob Sabourin. In labor triage there is a preliminary assessment, an interview, observation, and exploration before any action is taken. There is a complementary action in software testing, he said.
"Ask, 'Is this bug so urgent that we have to take action now?'" Sabourin said. "Is there something else I need to do before I waste my time on bureaucracy and paperwork?"
Conference attendee Tim Coulter, a software developer with The Open Planning Project, was struck by the session parallels between labor triage and testing triage.
"Sometimes, when we look at what we want to test and try to make decisions about what to work on, we make the wrong decision. Whether that's due to a lack of information or a lack of experience, we decide not to look at a certain portion of the software," he said. "When we mis-triage, we run into situations where we realize a portion of the software should have been looked at days, weeks or months ago."
Triage in context
Context is everything, Sabourin said. A bug "could be something mission-critical or something you live with for generations," he said. Testers need information to determine a bug's criticality. However, sometimes they just don't have enough information, Sabourin said.
If there isn't enough information to fix the bug, there may at least be enough information to make a business decision. "Dig deeper and get enough information," he advised.
Action follows assessment and exploration in labor triage, and the same process is often seen in software testing.
"Taking action -- what does a tester do?" Rob Sabourin asked. In the Scrum methodology, testers sometimes fix bugs, "but generally actions are decisions," he said.
The importance of triage
Anne Sabourin told the audience about a woman who had been through three failed labor triages at a different hospital before finally reaching her. "Solange," as Sabourin referred to her, did not receive the proper treatment a patient facing very premature labor should receive. Because Solange was not a patient at Sabourin's hospital, Sabourin faced the extra step of gathering Solange's history from her while she was in a distressed state. Co-workers urged Sabourin to send Solange back to her original hospital, but Sabourin relied on her instincts and experience and kept the woman as her patient. In order to stall labor, Sabourin gave Solange medicine that, if administered in too high a dosage, can have serious consequences. When determining dosage, Sabourin must weigh the benefits of stalling premature labor with the life-threatening risks of the treatment.
Ultimately, Solange received the proper treatment under Sabourin, but she and her baby would have benefited, possibly greatly, from an earlier intervention at her original hospital.
The software testing triage equivalent of Solange's story may not have such immediately serious consequences, but failed testing triage has the potential to be disastrous to a project. And in the case of medical software, lives actually are at stake. Rob Sabourin pointed out that when he was testing medical software, he erred on the side of fixing too many bugs.
"This is wrong too, because [a tester] can risk breaking something else," he said. "Triage is fallible; any heuristic is fallible."
In complicated situations such as these, testers must be careful when weighing the benefits and consequences of fixing a bug versus not fixing it, Sabourin said. "Bugs move," he told the audience. Fixing one instance of the bug may not fix the bug generally, he said.
Failed test triage
"Test triage fails when people don't bring their experience to the table and don't have guts to say they can't make the call," Sabourin said.
Triage can also fail when testers forget to reexamine context in light of circumstances they may not realize effect them. A small company may face a priority shift for bugs when it is bought by a larger company, said Sabourin.
"Maybe the quality level is too high for the current organization," Sabourin said, to laughs from the audience. Yet these changes are important, he added, and testers need to be aware of their organizational, technological, and business contexts. "You have to watch and be realistic," he said.
The need to apply a rich set of tests
Anne Sabourin's final labor triage story was of a patient whose anxieties over her blood pressure ultimately turned out to be unfounded. "Karen," who was very far along in her pregnancy, came to Sabourin after testing her blood pressure on a machine at a local pharmacy. The reading was on the high side. Sabourin retested Karen's blood pressure using different techniques, positions, and machinery. Ultimately, Sabourin determined that Karen's blood pressure was within the normal range -- the highest reading in the hospital being significantly lower than in the pharmacy.
Although each blood pressure test yielded hard number results, these results could be misleading or even "wrong" when examined out of context. Karen was sent home armed with information and an eased mind. Sabourin reminded the audience that while Karen was determined to be healthy, her anxious state could have affected her health, her baby's health, and her blood pressure. All of Anne Sabourin's tests were necessary.
Rob Sabourin explained that the key to Karen's story is the rich set of tests that were applied.
"The parallel to testing is amazing because you're hearing about bugs, and some people are freaking out, and you have to look at it in context," he said.
Like a nurse, a tester may need to comfort and educate others involved in the software project. Give stakeholders accurate information, but remember that stakeholders are looking at the project within a different context and with a different set of anxieties, Sabourin said.