I’m a tester who used to be a developer. I find my developer skills to be very useful in my job as a tester.
Knowing how to build software goes beyond just knowing how to code up a script. If a tester can understand how software fits together, then that tester will have a greater understanding of how to find points of failure. Not only that, but understanding how something went wrong can lead the tester to discover even greater risks to the system. If the tester’s understanding of the system stops at the GUIlevel, then their exploratory testing path stops there too.
Understanding how different system components interact, and being able to program these components opens up possibilities for new kinds of tests. Very focused and powerful tests can be imagined and implemented this way.
Being able to communicate with developers at the same level as them is also extremely beneficial. It not only makes it easier for both parties to understand each other, but it fosters a mutual respect. Building software isn’t easy, and knowing what’s involved gives testers a greater appreciation for the developer’s job. Developers respect testers who have taken the time to understand what they have built and how they have built it.
Working with software means that having programming skills gives the tester greater power over that software. Much of testing is about comparing system states. Being able to query a database and directly call methods from code can give the tester greater control over the state of the system.
Even just having basic programming skills can be a big plus. Generating custom test data programmatically can be a huge time saver. Being able to modify an automated record and playback script to speed up a task can also save time.
And then there is automation.
Being able to write code is not enough to be able to write good automated tests. Writing a good automated test suite is not a trivial exercise. Even seasoned developers can find it difficult if they don’t know how to approach it. Writing automated tests is a skill that needs study devoted to it on top of learning to code.
My advice to manual testers: consider devoting some time learning how to build software. If coding doesn’t appeal to you, then at least consider studying software architecture and design, which will help your understanding of how software components fit together and interact. These are skills that will be very useful to you. There is a great deal of work involved in learning these, but is worthwhile.