"What are the most important qualities of a Software Tester?"
I have worked as a software tester in small corporation for about three years now. I still have a long way to go, but I've understood that it takes something special to be a great tester in today's Agile environments. Be it bug finding or understanding the application structure, it requires creativity to go ahead smoothly. I feel it's the ability to generate multiple, unique and out of the box test ideas to test an application successfully.
What are the more important traits required to excel and provide business value to the stakeholders in today's fast changing software industry?
Qualities that make a great tester have nothing to do with the development methodology being used - the same qualities that make a tester great in an Agile setting make them great in a Waterfall setting.
Some of the big ones from my experience:
- Communications skills - being able to find issues doesn't matter if the tester can't communicate them accurately and tactfully.
- Advocacy - This is something of a subset of communications, but deserves its own listing because a great tester is able to give solid, researched reasons why specific issues need to be fixed; able to advocate for testing in general and their team in specific.
- Attention to detail - this might be a bit clichéd, but being able to notice that some little thing is off is crucial to finding issues - not to mention validating complex business logic.
- Big picture thinking - It's a challenge to be able to focus on small details and big picture at the same time, but great testers can and do. Tracking a small detail without losing the big picture is crucial.
- Persistence - when something frustrating and intermittent is happening, a great tester keeps trying different ideas to chase down the root cause.
- Fast learner - I've yet to work in an environment where the learning curve wasn't so steep it could be described as a learning cliff. With overhang.
- Familiarity with software and hardware - This doesn't mean hard-core geek, but knowing the difference between a serial and a parallel port matters if the application being tested uses both.
- Basic to moderate knowledge of SQL - being able to find information in a database is invaluable to every testing job I've needed to do. Being able to manipulate database information is also helpful.
- Speaker to Management - being able to translate from programmer to normal human or to manager is particularly important if the test group doesn't have a lead or manager doing this job for them. All three groups will use the same words but mean quite different things by them.
- Read code - being able to read code is actually more important than being able to write code, in my experience. It allows the tester to trace logic and find potential edges to the application.
- Boundary Rider - searching for boundaries in the application and exercising them means pushing the application in the places where it's most likely to have weaknesses.
As far as creativity and thinking out of the box goes, I'm not really qualified to discuss that because I never could find the wretched box in the first place.