June 19, 2005

Testing. How do I begin?

Anita asks, "I am trying to get into software testing..but I never took a course on testing..what would u recommend for a beginner???"

I could sum this up into three parts.

1. Read it.
2. Experience it.
3. Network with it.

Unfortunately testing is not something which might be taught at most schools. I was lucky enough to work as a tester under one of my professors in his team. Even there we were handed out certain notes on day one and asked to read up. There are many good books in the market. Some of the historical sites to refer to would be

Cem Kaner: http://www.kaner.com
James Bach: http://www.satisfice.com

Reading through their articles and publishings+recommendations would introduce one to the world of testing. If you have extra cash on you, attending a seminar/training sessions might be useful (I say might be since I have no on hand experience of attending one of these). I believe what could be taught could be very well learnt by yourself. Another major source (and a free one) is that of blogs. There are many testers blogging out there. One person I religiously follow is Michael Hunter (http://blogs.msdn.com/micahel). Just reading his blog gets you hooked onto testing. So yes, you need to start reading.

But all books aint gonna get you nowhere. Unless you practice it. If your day job does not support testing, make it your night job. If you write code, test it more sincerely. One practice I used to follow was trying to break my friends code for some project while he tries to break mine. Working in pairs could help. Try getting a partner. Not only does it make your code robust during submissions, but it also gets you better grades if you are in school :-)

Look up Mozilla (www.mozilla.org). Participate in the open source community. You could download nightly builds from Mozilla and try to break them. Want to know what a test case or a bug report would look like? You'll get those on Mozilla. Did you know Visual Studio 2005 Betas are being shipped free? Get one of those and try to probe into it. The more inquisitive you are about testing, the more questions you will have. And more the questions, more you will learn. Makes sense?

Sign up as Beta tester. Microsoft has a Beta testing program. Acronys has a Beta testing program. Try to look up some test automation tools. Dig into nunit and the likes.

Lastly, network around. Participate in discussions, write articles, offer suggestions. Not everything you do might turn up being right. But if you aint getting your fingers slapped once in a while, you aint pushing the boundaries far enough. If nothing else write a blog.

Start working on a pet project, test it and upload it to one of the communities. People will download it, run it, and test it for you. Vice-versa! Everytime they report a bug, you know where your testing+coding skills need to be improvised. Pick project ideas off Codeproject, Planetsourcecode or my professors site: http://www.ecs.syr.edu/faculty/fawcett/handouts/Webpages/Projects.htm
Buddy up with someone and build it, break it. Break it to build it. Try to automate your tests. Everytime you wonder how you could get a certain aspect of it done (ex. how to provide test hooks etc.), look up Google, ask people.

And of course, if you land up with a Software Testing job, it just makes life simple.

Reading up, implementing it and asking around is what helped me. There aint a formula to getting started. Just get started with one aspect of testing, it leads to others. How wide you spread your arms depends on your interest.

Quick advice before you venture into any coding. Write a quick Spec. Getting a clear spec is the first step towards being a good tester. Not only will it help you design, it will help you catch bugs before you start coding.