Friday, January 7, 2011

Bus Test

Yesterday I asked someone to run a bus test. A what, now? Yup, a bus test.

Did you ever hear the saying, "What if you got run over by a bus?" It's a (rather morbid) way of saying that your hot-shot coworker, who is the only one who understands how foo works, may not be here tomorrow, and someone else had better know how to do it. You can talk about "what if so-and-so got run over by a bus" in several ways:
  • the bus factor: how many people know how to do X
  • the bus risk: how likely that a key person is going to leave
So what's a bus test? Simple:

A bus test is an exercise performed simply to show that someone can accomplish a task.

For example, at the office we have a bunch of data sets that we run to provide numbers for marketing and to analysts. (Yes, these do make the product look good. Surprise!) Right now, only one person, Bob*, knows what's in those data sets. He's the only one who can run the data sets in the right configuration to get the same output, and reproducing the output is important when an analyst is standing over you saying, "show me." He's also the only one who can describe the data sets to any level of detail (that's another thing those marketing and analyst types want). Our bus factor here is one. And that's not too good.

So we are running a bus test. Someone on my team will work from the existing documentation alone and will attempt to run the data sets and produce a report that matches the report we last sent to analysts. The only point of this is to prove that if Bob were to not come in tomorrow, then we could still produce the reports we need reliably.

(On a side note, talking about running a bus test leads to some really fun overheard conversations, going something like this, "No, you can't pair with Bob on this. After all, he might be kidnapped by aliens tonight. If you get stuck, then we know there's a problem and Bob will update the documentation.")

We don't have to run a bus test for everything. Many things are a product of institutional knowledge, or it's okay to have someone sit down and figure it out if necessary. For public things where consistency is key and it can't be contained entirely inside one runnable thing, though, consider a bus test.

* Name changed to protect the innocent.

No comments:

Post a Comment