Wednesday, August 24, 2011

Make Starting Easy

I've just started doing some work with a new client, and one of the things I'm doing is helping the team get started with some basic testing. The team consists mostly of programmers out of academia - they can write some code but have never written commercial software. This is in no way a derogatory statement; it's simply the current state.

One of the attributes of this team is that they know there is this thing called "software testing" that sounds important, and they know that there is "automated testing" that sounds like it would be really useful, but they're not at all sure how to go about doing it. Again, not a problem; that's why I'm here.

Testing software is a big problem space. People spend entire careers in software testing, or in specialties within the field. That's intimidating. For those of you non-testers in the audience, saying, "teach me to test" is something like saying, "teach me to be a developer" or "teach me accounting". This team doesn't need to know everything about testing; they're not going to be career software testers. They're just trying to make sure that they ship a product they can be proud of, and to make sure that their system does what they expect.

So how do we get a team of eager and smart people into software testing?

Make it very very easy to start.

So we started by talking about testing, and noting that there were a lot of different kinds of tests and many different terms. And then we ignored all of those terms and kinds of tests. Oh, we'll get back to many of them over time, but for now, it's not important.

Starting is important.

Doing one test, understanding why that's a test, and learning what we will get out of doing that test: that's what's important. And that's all that's important right now.

So we started with the very basic core principle of testing: you want to know something about this system. A test is a way of formulating that as a question and finding an answer. That's it. For now, it's really that simple.

So we're starting with the questions that we understand, that we're already trying to answer. And we're talking about how to answer them effectively, and how to formulate the questions so that they are answerable. You know.... testing. We don't care if it's a unit test or a performance test or what technique we're using. We just care that we're getting information out of the system, and that the information is effective and useful.

When you're faced with a big learning area, whether you're the student or the teacher, don't panic, and don't try to digest it all at once. Recognize that the hardest thing is starting. Then make starting as easy as possible. Nuance, techniques, and skill can come later. For right now, just find a way to get started easily.

1 comment:

  1. Nice post. I would like to have views from experts in Software Quality Assurance and Testing services.