Recently I interviewed a reasonably experienced software tester for a contract position in my company. His CV had been forwarded to me by a recruitment agency on the basis of some key skills that were listed that were important to us to quickly add value in the position. He was a very nice chap and initially we got on well, however by the end of the interview I'd actually reached the point of being quite cross with him...(cross enough to write about it here). I'll explain why.
To a Tester Level
As the interview progressed beyond the initial discussions of his previous roles, I started to ask specific questions around his skills in the technologies of interest to me: - databases, scripting, unix operating system knowledge. In each case his response was that he was knowledgable in that area "To a Tester Level". Apparently a tester level in these areas equates to the ability to:-
- Query a database with a SELECT statement to verify that records are present
- Navigate directories on the unix command line, run programs and open files
- Create a shell script to execute a program with basic parameters
Let me make this clear right now, I do not have an issue with the guys level of knowledge. I'm sure that he possessed other skills which allowed him to perform certain testing roles adequately. What did really irritate me was his assumption that his level of ability could be appropriately described as a "Tester Level". He was imposing an upper limit of ability not only upon himself but on the testing profession as a whole. These limited skills were a sufficient level for testers to aspire to achieve in their profession. Although this chap did provide the most clear cut example of this attitude, he was certainly not the only person that I have spoken to with a similar mindset, which makes me very sad.
Knowledge is power
I'll admit that my current testing domain requires a high level of knowledge in the areas I've decribed, however, I think that more advanced skills in core technologies can be just as relevant in testing any software. The greater the knowledge that we can obtain on the behaviour of the system under test, the more powerful our testing can be. Some simple examples:-
- The ability to track memory and processor usage on an operating system can allow the identification of issues with memory leaks and CPU thrashing on a service.
- Examining explain plans of the queries that are being executed by a system on a database backend can allow the tester to identify possible performance issues with the data tier.
- Scripting knowledge opens up possibilities in being able to iteratively or concurrently perform repeated tasks to model behaviour
- Being able to write a harness in a programming language can allow exploratory testing against API interfaces in addition to more involved automation
There are countless ways in which a level of expertise in relevant technologies can empower testers in perform their role more efficiently, effectively and thoroughly. By equating superficial familiarity with "a Tester Level" of knowledge we are creating self imposed limitations on our own expertise. Not only this but we are also reinforcing a stereotype of a tester as someone who possesses limited abilities. There is no need for this. I believe that a good tester, and a good test team, possess a matrix of skills and experience (see here ). It may be true that certain skills are not relevant to a specific role or team, however this does not mean that we should consider such abilities beyond the scope of the testing profession.
Copyright (c) Adam Knight 2011 a-sisyphean-task.blogspot.com Twitter: adampknight