30 Days of Automation
This text was written as an answer to the “30 Days of Automation in Testing” Challenge. Check it out in the Ministry of Testing forum.
Checkout other posts of the #30daysoftesting in this blog here.
Automation was the second step of the industrial model in Westerns civilizations. After the introduction of machines as ways to aid human-driven production of goods and services, it became possible to remove the necessity of human interaction on large portions of the industrial process.
These sub-processes became executed entirely by machines. Firstly, the goals of this shift was to increase productivity and reduce cost, because the machines have the capacity of work 24-7 and do not have fixed costs as wages and other work-related costs. However, due the increasing capacity of automating processes and market competition, it became clear that automation could be a differential factor in terms of increasing product quality and flexibility.
This ability of automating different processes, not the automation itself, allows humans to rapidly change an industry in order to adapt to market responses.
Test automation is “the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes” [Huizinga & Kolawa]. The goal of test automation is to delegate to a machine some repetitive tasks performed during the testing process.
Doug Hoffman emphasizes that the scope of test automation covers a small portion of any of testing strategy*. Since a test is the activity used to answer a given question regarding the product, in order to produce an “automated test”, one would need to analyze the product to come up with the question in the first place. Secondly, one would have to discover the how can the answer can be obtained (exploration). Thirdly, one would have to instruct a machine in how to prepare the product for this questioning, do the question itself, and how to report the answer.
It is clear then the an “automated test” is not equivalent to a “manual test”, because the actual portion completely performed by the machine is just the questioning, the answer inspection and reporting. It is necessary a human to prepare the right questions, know how to obtain the answers and to interpret the results.
Automation in testing can have similar advantages that industrial automation, however, it is necessary to notice that software development is essentially an knowledge work in opposition to industrial work. This means that quality in software can subtle and non-objective - therefore, the results of automation processes, although correct in essence, may not be satisfactory for the stakeholders.