In many software development organizations, people make a difference between the software developers who actually write code and the software testers that are just there to perform some software quality activities. In the book “Experiences of Test Automation”, software testers from SAP share their view that test automation requires the same mindset than software development.
One of the lessons we learned at SAP over the years was very simple: Test automation is nothing but software development. This statement, of course, sounds contradictory to the message some test tool vendors would like to send to the market: Test automation is easy, no programming skills are required, and it is best done by end users.
At least for us, we can say that any test automation project that did not follow software development processes and standards failed or ended up with huge maintenance efforts. Proper test specifications, reviews, coding standards, and – probably most important – a strict reuse principle have been proven as key success factors.
Source: Christoph Mecke, Melanie Reinwarth & Armin Gienger in “Experiences of Test Automation – Case Studies of Software Test Automation”, Dorothy Graham and Mark Fewster editors, Addison-Wesley
Some software developers have considered software testers as people who weren’t good enough to write code. The reality is that creating and managing a software testing infrastructure requires the same skills than programming. Software testers should behave like programmers with their testing script and use the same tools and practices: coding and naming standards, configuration management, code review, TDD, modularization, reuse, static analysis of test code, etc. Software testers are just applying all these skills to a different set of code than “classical” developers.
The figure above is an example of a cuke_sniffer report. This free open source static analysis tool for Cucumber identifies smells and issues in its scripts written with the Gherkin language. Cucumber is an open source tool that executes plain-text functional descriptions as automated tests in a behavior-driven development (BDD) style. This is the application of the traditional code static analysis practices to testing scripts.