Only a Programmer Can QA Your Programming Components
It seems self-evident, but if you’re developing software components for use by other programmers—APIs, SDKs, reusable controls, whatever—if your QA is being done by non-programmers, you’re just pretending to do QA.
I once worked for a company where the QA process for some of our software components went like this: a developer is told to create a new software component for use by other developers. However, since the QA team can’t test the component directly, the developer should also create a “tester application” that gives the QA team a nice, graphical way of exercising the module. Well, you can imagine what happened.
The “tester application” the developer created only exposed a minimal, even partial, set of functionality supported by the component; enough for the QA team to do a sanity check and make sure the thing isn’t completely broken, but by no means a robust tool for ensuring quality. The reason for this isn’t necessarily because the developer was lazy or didn’t care (though that certainly doesn’t help). Rather, there is a more fundamental issue.
When you ask a developer to create a UI for a non-programmer to test a component that is intended for use within a full-fledged programming environment, you’re essentially asking them to create a programming-language-to-user-interface mapper, a daunting task that will never be able to retain the full fidelity and power of the original programming environment. The dream of easy, graphical programming for the masses has been around for a long time, but it has yet to be attained and arguably never will be. There’s a reason professional development is still done using text-based grammars. Asking your developer to adorn the software component with a UI so the QA department can test it is like asking them to convert a diesel engine to use gasoline. It’s a lot of work that results in something very different than the original.
Graphical testing tools a great for a quick sanity check that your QA team can run. But if you want real, comprehensive QA of your software components, you need a programmer to build an automated test suite that will exercise the component as it will actually be used.