"Reasons to be cheerful - one, two, three..."Reasons why I have found it useful to have programming knowledge:
- Speak to the developers in their own language – build relationships with the development team
- Different languages have their own problems and idioms – useful to know these
- Different languages have to make different physical decisions when implementing logical designs
- Implement custom test tool utilities – metric collating, defect management, data generation
- Use existing test tool APIs and customise your test tools e.g. mercury open test architecture, TPlan API
- Automate your test process
- Identify new tools that you can use to help you
- Build the application from the version control system directly
- Learn the database schema without extensive documentation
- Reuse development code to construct test tools
- Get free tools working – Java & Perl
- Regular Expressions - use and read
- Understand the design process and artifacts (OO, UML)
- You know what the developers mean when they say: Refactoring, polymorphism, mock objects, ...
- Compile in Debug Mode to make applications testable
"Do Testing Early" – "More Unit Testing" – Can you really promote automated unit testing if YOU don't know how to do it? What tools can you use? Why should the developers listen to your advice on coding if you can't code?
How easily can you make the system testable? Could you help make it testable, or do the development team need to do all the work?
Can you easily add logging in the current development language without interfering with the code? Do you know?
I cannot claim "greatness" as a programmer, but I do learn the language for the projects that I work on - even just a little. I use the fact that I want to learn the language to strengthen my relationship with the development team by asking them for help with my learning process.
Now. I find it interesting that I wrote the above text 4 years ago. And in that time I've worked on Agile projects, paired with developers, learned TDD, created mock objects to aid in Unit Testing. I did a lot of this through book learning and experimentation. Fortunately I have worked with developers kind enough to explain things to me, recommend books, and point out what web-sites and blogs they read.
I appreciate that a lot of people don't want to do this. But I feel the need to reiterate - when you do, you increase the options available to you and increase your own personal flexibility.
I highly recommend every tester learns how to program in the language used to develop the system under test.
At least a little bit. Just a little bit? A teeny bit, just a teeny weeny bit?
Yes, yes, dear, dear, perhaps next year
Or maybe even never
In which case .....
Reasons to be Cheerful (Part 3)
by Dury, Payne and Jankel