I oversee a technical training program for software engineers working at Microsoft. The majority of these engineers work in software testing roles. In order to determine which training classes to schedule, every now and then I send out a survey to Microsoft test managers asking them which test technologies, programming languages, skills, and techniques they expect all testers to know. Approximately 120 test managers responded to my most recent survey. The results were very clear: there are four key automation techniques that Microsoft test managers expect all testers to know, and they are:
- API/unit/module test automation
- Windows application UI test automation
- HTTP request-response test automation
- Web application UI test automation
Now not every product team at Microsoft necessarily uses all these techniques, and there are many other required testing techniques, however, all testers should absolutely know how to write these four types of test automation. There are of course many ways to perform each of these types of test automation. For example, Web application UI test automation can be written using a script-based DOM approach (see my article at http://msdn.microsoft.com/msdnmag/issues/07/02/TestRun/default.aspx), or you can use low-level calls into the mshtml.dll and shdocvw.dll libraries (see my article at http://msdn.microsoft.com/msdnmag/issues/05/10/TestRun/), or you can use a hybrid approach with Windows PowerShell (I have an MSDN Magazine written but not yet published). The test managers’ comments attached to the surveys were also quite interesting, and in some cases unsettling. Many Microsoft test managers mentioned something to the effect that at Microsoft there is a very disturbing trend where even software testers with lofty titles such as "Senior Software Design Engineer in Test" and "Test Architect" do not have the ability to actually write test automation code anymore. The comments suggested that these high-end employees see actual testing as beneath them and that "architecting" a test system is more important than actually testing. Well, test system architecture is certainly important but I definitely would not want to work in a group where senior test engineers are not up to speed with the latest test automation skills. My point is that I am essentially a manager but I spend a lot of time upgrading my actual technical skills so that I can manage better. When senior testers at Microsoft, or any other company, lag far behind software developers in their ability to write code, the credibility of software testing as a discipline suffers. And rightfully so. If you are in the field of software testing you are kidding yourself if you believe that you will ever reach a point where you do not need to learn how to write test automation using new techniques.