Bugs, developers and testers
Developers usually develop applications with the objective of getting the functionality
up and running as quick as possible. After the functionality is complete, they would
proceed to test their code.
Unfortunately, many developers are neither inclined to find bugs in their own code
(for, that just means more work), nor would most have that special 'testing' knack
to do so. That's where testers come in.
However, many testers I have seen weren't into hard-code development in their career; they
were just testers from the very beginnings. There are good and bad points to this.
Being completely ignorant about how an application is coded, the tester might be
able to test things that would be extremely random and 'creative' – something a
developer would have never thought.
For instance, I recently chanced to see such a tester testing an ASP.NET web form
page which had several text-input boxes, one of which had a validation criterion
of accepting (while typing) only numbers. After testing them by typing values into
text boxes directly, this guy opened up an instance of notepad, typed in several
words, copied them into the clipboard, and pasted it into the text box. The text
box happily accepted the input without validating! These are things routine developers
wouldn't think about.
However, testers who weren't developers before could miss out finding serious bugs.
For example, some time back I was involved in an ASP.NET project for a short period
of time. The project had a screen for displaying and editing information of a user,
and the user ids were passed in the query string. Obviously, a user is supposed
to view only his own information.
Now, the tester who was assigned this screen wasn't concerned about those "queer
set of strings" in the address bar. Needless to say, he missed this very obvious
but critical bug - a user could change the value passed in the query string to access
information of any other user! Sadly though, the developer who coded the screen
never thought of this bug either!
This brings us to this point – we need both non-dev 'creative' testers and the dev
testers to test applications. Skipping over one of these can result in a product
of inferior quality. We can't be sure that a developer would find bugs in his
own code, unless he has a high degree of professionalism.
In my opinion, I feel a solution like follows could help ensure that both kinds
of tests happen.
- Make the technical lead of the project test the code of his team members, for he
would (hopefully) have a greater deal of responsibility on product quality than
his subordinates.
- Assign a non-techie tester to test the application, so that he could find out the
remaining 'creative' bugs.
- And if you find the rare breed of developer/tester who can do both, hire him!
More importantly, flaws in the design and structure of the application are more
critical (in magnitudes), and will have to be caught as early as possible. However,
this will require a different kind of approach. More on this later...