Brain dump: How I’d like my Agile testers to be

So I was just thinking about how I need the testers to work in our project (and maybe in any other project). This started as a brain dump and then the next thing I know I’ve got this outline already. So anyways, If I were to outline what I’d look for in testers, I’d look into the following areas:

  • Attitude towards testing
  • Technical competence
  • Being a team player

Attitude towards testing

Working on an Agile, greenfield project really needs to have testers who are quick studies, self-sufficient and proactive. Most of the time we are given just the user story and some mock-ups, so I need the testers who can model the user story in their heads or in their notes, ask the right questions about it, and do it on their own (i.e., not wait to be served the information they need on a silver platter).

I think testing is like problem solving. It’s like: Hey, you’re given this user story. How do you test it to make sure it’ll pass the PO’s review? What exactly do you need to test? What do you need to know to test it? It has a save functionality– what does it save, where does it save it, who’s allowed to save, are there stuff that needs to be derived or transformed, etc. It has a read functionality–read from where, how do I know I’m pulling the right data into the fields I’m checking, how do you get data entered to be read in the first place, do we format certain items differently, etc. Hey, look at this screen, what can I do with the controls in the screen, what can I do that I’m not supposed to, etc. Hey, I found a bug–can I consistently replicate it, can I narrow down the cases when this bug would appear, is this just a symptom of an underlying bug, is this even a valid bug, etc. There’s a fix I need to retest–what could possibly be affected, do I need to retest everything, etc. There’s a lot of figuring out and critical thinking involved.

What I don’t like is to reduce testing to an activity where we just write test cases and execute the test steps without thinking about how our work can provide value to the team, to the product, to the client, and to people who’d end up using our product. I really want the testers go into the project with the desire to make their being in the project really matter.

Technical competence

You can’t just WANT to be a solid contributor to the project, you have to BE one. You can be the most idealistic person but that won’t get you to where you want or need to be, you need to be able to execute.

For testing, I don’t necessarily equate technical competence to being able to automate. Being able to automate tests doesn’t mean so much if your tests can’t find the issues that needs fixing. We have to keep in mind that the product is the actual product — not the test automation scripts.

As I mentioned earlier, testing is like problem solving. Part of this includes modeling the application or feature you need to test — figuring out where there’d be if clauses or doing some decision tables, figuring out the data flows, state transitions, figuring out combination of valid/invalid input, etc. Figuring out what you actually need to test given that the lines defining the scope could sometimes get blurry. Then there’s instances where you have to work with the database, parse some flat files, or with some API. There are also instances when you need to simulate a certain scenario — and you have to figure how to do this right otherwise you might just bring up an invalid test case or bug. There are also instances when looking under the hood allows for more efficient testing; for instance I’ve reviewed database scripts and that reduced the effort as opposed to executing the test cases in fully black box mode.

You’ll also need to collaborate with developers and you need to be able to keep up with the discussions. You can’t rely on the layer of having the test lead interpret stuff for you. And it just saves people time from having to explain things if you can keep up with the technical discussions. When you report bugs, it is also very helpful if you’ve done your own investigation to narrow down the possible causes. When it comes to bug reporting, I always say “A problem well stated is a problem half solved.”

There’s a lot of collaboration within the Agile project. Roles of people you’ll engage with include fellow testers, devs, UX designer, BA, PO, and possibly support. You’ll need to share status updates, raise impediments, raise bugs, raise potential enhancements, raise a lot of clarifications, and possibly conduct demos of the user story. There’s going to be a lot of communication going on so you really need to know what you’re talking about, and you have to know how to talk about it.

Being a good team player

This is good to have in any project or in any team. You want to work with people who are responsible, reliable and who keeps each other informed as needed. You want people to pull their own weight in the project, and to help each other out esp when the load gets heavier for some. And it’s all the more appreciated when people help without having to be asked to help.

Meeting the Sprint goals is the primary focus, and so when needed, the lines defining the roles are blurred and folks try to contribute whenever and wherever they can. For instance, I’ve taken on the BA role while another tester has taken on the PM/scrum master role. We have front end devs who also work on back end tasks. When we needed load testing to be done and we couldn’t get another tester to work on it, one of our devs took on the task. When there were some data update needed, the team split the task among those who can help so as to get the job done faster.

Summing it up

It’s hard to come up with a checklist of traits for what I’d like in the testers in my team. Essentially, I want testers who sincerely want to contribute to the project. I want testers who can actually test, who respect testing per se, and who can build their credibility within the team. And of course, I want team players to help make the not so easy task of building software hopefully less hard. People won’t always fit the bill off the bat, but what’s important is to advance towards improving.

3 stages; shu-ha-ri

Recently, I’ve been putting the waiting time for eclipse/tomcat to start-up and restart to good use by doing some reading (actually, more of skimming).  So far, I’ve been leafing through Alistair Cockburn’s Agile Software Development.  I came across a part of the book on stages of learning that reminded me of the Dreyfus Model which I’ve picked up from Pragmatic Thinking and Learning.

The book describes three stages of behavior of people who are learning or attempting to master new skills:

  • Following – At this level, people simply try to follow and copy whatever works. They only seek out explicit instructions. I suppose the predominant mantra at this stage is: “At least it works.”
  • Detaching – Here, they learn the “limits of the procedure”. They start looking into other ways, and figure out how to make adjustments when things go wrong. I reckon, at this point, they’re no longer bound to explicit instructions and they manage to make workarounds when needed.
  • Fluent – Here, at the third level, they’ve somewhat achieved a zen-like stage wherein they just know the goal and they just know what needs to be done to reach it.

Alternatively, there’s Shu-Ha-Ri, which roughly translates to learn, detach, and transcend.

  • At Shu (godblessme), “the student builds the technical foundation of the art… the student should be working to copy the techniques as taught without modification and without yet attempting to make any effort to understand the rationale of the techniques of the school/teacher.”  Mmm’kay, I do a backswing like so… what do you mean another 30 rounds?!
  • At Ha, “the student must reflect on the meaning and purpose of everything that s/he has learned and thus come to a deeper understanding of the art than pure repetitive practice can allow.”  Oh, right… locking my wrist does make for a better angle upon contact.
  • And lastly, at Ri, “the student is no longer a student in the normal sense, but a practitioner. The practitioner must think originally and develop from background knowledge original thoughts about the art and test them against the reality of his or her background knowledge and conclusions as well as the demands of everyday life.” You want to do some baseline volleys? Sure, no sweat!

Now, what exactly is the relevance of these different stages.  As a learner or a receiver of information, it reflects the type of information that you seek out.  As someone from the other end, it teaches you to be more wary of the needs of someone who’s just learning. As someone who communicates, it teaches you that whatever you said that you think is crystal clear could be any of the following:

  • Unnecessary chatter, esp for someone from a higher level
  • Undecipherable, esp for someone from a lower level
  • Clear enough, but it will never be crystal clear.

One other thing that the chapter expresses is that communication is imperfect.  You can’t do away with its imperfection.  Having an understanding of one of the possible causes of miscommunication (i.e., the different stages) would hopefully at least make you tolerant if not make you strive to bridge the gap.

Collecting quotes (20090124)

Genuine ignorance is profitable because it is likely to be accompanied by humility, curiosity, and open mindedness; whereas ability to repeat catch phrases, cant terms, familiar propositions, gives the conceit of learning and coats the mind with varnish, waterproof to new ideas.
John Dewey

The danger in communication is the illusion that it has been accomplished.
George Bernard Shaw