As soon as you hear about a production bug in your product, the first thing you may want to do, is volunteer to log it.
- Multiple people may attempt to log the bug, which wastes time. Declare your offer to log it.
- You’re a tester. You can write a better bug report than others.
- It shows a willingness to jump in and assist as early as possible.
- It assigns the new bug an identifier, which aides conversation (e.g., “We think Bug1029 was created by the fix for Bug1028”).
- Now the team has a place to document and gather information to.
- Now you are intimately involved in the bug report. You should be able to grok the bug.
Shouldn’t I wait until I determine firm repro steps?
- No. Bug reports can be useful without repro steps. The benefits, above, do not depend on repro steps.
- No. If you need time to determine repro steps, just declare that in the bug report’s description (e.g., “repro steps not yet known, investigation under way”) and add them later.
But what if the programmer, who noticed the bug, understands it better than me? Wouldn’t they be in a better position to log the bug?
- Maybe. But you’re going to have to understand it sooner or later. How else can you test it?
- Wouldn’t you rather have your programmer’s time be spent fixing the code instead of writing a bug report?
When I turned 13 years old, my Dad said, “What do you want to be when you grow up?”. I already knew the answer. “A software tester” I said!
In fact, even in college I wasn’t sure what I wanted to be. I had enrolled in a new major called “Communication System Management” and was studying to be the guy responsible for company telephone and computer networks. However, my internship put me to sleep. All analytics and no people got boring fast. The job interviews during my senior year were just as boring, despite getting flown around the country on several occasions.
So when a buddy of mine found me a job teaching software, which I had done part-time at Ohio University’s computer lab, I packed my stereo and clothes into my ‘85 Jetta and headed south, from Ohio to Atlanta. It was good money back then. People were getting personal computers one their desks and they needed to learn how to use things like…email. I went on to teach VBScript and AutoCAD and eventually taught proprietary telephone-office-update software for Lucent Technologies.
As the new versions of the Lucent software rolled out, I trained the users, which put me in a unique position. I could see first hand, which features the users liked and which they hated. I was among the first to observe the software performance under load and capture the concurrency issues that occurred.
This was in the late 90’s. The programmers were doing the “testing” themselves. But they realized I was getting good at providing feedback before they put their software in front of the users. To better integrate me into the development team, the programmers asked me to write a piece of working software. I wrote the team’s personal-time-off (vacation request) software in classic ASP and was officially accepted as part of the development team. My main responsibility…was quality.
Thus, a software tester was born. And I’ve been loving it ever since.
How did you become a tester? What’s your story?
ATDD Sans Automated Tests. Why Not?
Every time I hear about Acceptance Test Driven Development (ATDD), it’s always implied that the acceptance tests are automated. What’s up with that? After all, it’s not called Automated Acceptance Test Driven Development (AATDD). It seems to me, that ATDD without automated tests, might be a better option for some teams.
This didn’t occur to me until I had the following conversation with the Agile consultant leading the discussion at the ATDD 2013 STAReast discussion lunch table. After a discussion about ATDD tools and several other dependencies to automating acceptance tests, our conversation went something like this:
Agile Consultant: ATDD has several advantages. While writing the acceptance tests as a team, we better understand the Story. Then, we’ll run the tests before the product code exists and we’ll expect the tests to fail. Then we’ll write the product code to make the tests pass. And one of the main advantages of ATDD is, once the automated acceptance tests pass, the team knows they are “done” with that Story.
Me: Sounds challenging. Are you saying there must be an automated check written first, for every piece of product code we need?
Agile Consultant: Pretty much.
Me: Doesn’t that restrict the complexity and creativity of our product? I mean, what if we come up with something not feasible to test via a machine. Besides, aren’t there normally some tests better executed by humans, even for simple products?
Agile Consultant: Yes, of course. I guess some manual tests could be required, along with automated tests, as part of your “done” definition.
Me: What if all our tests are better executed by a human because our product doesn’t lend itself to automation? Can we still claim to do ATDD and enjoy its benefits?
Agile Consultant: …um…I guess so… (displaying a somewhat disappointed face, as if something does not compute, but maybe she was just thinking I was an annoying nutcase)
And that got me thinking: And doesn’t this save us a lot of headaches, pain, and time because we wouldn’t have to distill our requirements into rigid test scripts with specific data (AKA “automatic checks”)? We wouldn’t have to ask our programmers to write extra test code hooks for us. We wouldn’t have to maintain a bunch of machine tests that don’t adapt as quickly as our human brains do?
Let’s call this Human Acceptance Test Driven Development (HATDD). I’ve stated some of the advantages above. The only significant disadvantage that stands out is that you don’t get a bunch of automated regression checks. But it seems to me, ATDD is more about new Feature testing than it is about regression testing anyway.
So why aren’t there more (or any) Agile consultants running around offering HATDD?