Effective software testing can save money and effort by catching problems before they make it very far through the software development process. It is known that the longer a defect remains undetected, the more expensive it is to fix. Testing is, therefore a critical part of the development process. It can also be expensive and labor intensive, particularly when done by hand. It is estimated that the total effort testing software consumes at least half of a project’s overall labor. Automation can make much of the testing an organization does more accurate and cheaper than merely putting several people in a room and having them run tests from a paper script. It also frees the testing staff to do more specific and in-depth testing than would otherwise be possible. This paper focuses mainly on software test automation techniques and how automation can enhance the efficiency of a software team as well as the quality of the final product.
While automation of some kinds of software testing can dramatically increase the productivity and effectiveness of software development projects, rarely is it found that 100% of requirements can be covered by automated tests. Some testing is still best done by hand because human testers are far more flexible and creative than any computer program. Automation frees human testers to delve more deeply into the system be relieving them from having to do repetitive tasks for which the use of automation is more appropriate.
With a little cooperation between developers and testers, software code can be made more testable. Coding for testability is a key consideration for programmers working in an Agile development environment. For example, in my practical exercise with the Recipe Box program, I demonstrated how GUI components that are declared to be private class members may still be tested with a homegrown test script without violating key principles of object-oriented programming or resorting to questionable workarounds.
Automated software testing is a software development project in its own right, and should be treated as such, to include all of the usual software development processes, such as version control, code reviews, coding standards, and so on. Suggestions were also made in this paper on how the costs associated with automation efforts may be minimized.
There are many pre-packaged tools available to aid testers in the creation of test scripts. Some of them from commercial venders can be expensive, while there are other tools that are open-source and therefore free. In fact, the open-source community is about as capable as commercial vendors of producing high-quality software testing tools.
The whole master's thesis can be found here (PDF).
Master's Thesis: Enhancing the Effectiveness of Software Test Automation - December 2015, David Wayne Jansing, Department of Computer and Information Sciences, State University of New York Polytechnic Institute, Utica, New York, USA.