Just Enough Software Test Automation
Practical automated testing techniques that enhance software quality and reduce time to market! Just Enough Test Automation is a practical, hands-on guide to software test automation from the perspective of test developers and users. Two leading software testing consultants offer real-world dos and don'ts for designing and implementing test automation infrastructure—along with pragmatic advice on what today's most popular approaches to automated testing can and can't accomplish.
Coverage includes:
* Planning for automated testing
* Managing the automated testing process for optimal efficiency
* Setting realistic expectations: knowing when and what to automate
* Automating unit testing, integration testing, and system/regression testing
* Simplify maintenance of test scripts and promote reuse using structured test script writing
* Implementing the Control Synchronized Data Driven Testing (CSDDT) Framework, a proven approach to simplify and accelerate testing
The book also includes a complete sample automation project plan, covering documentation, implementation, the automation environment, roles, responsibilities, and much more.

Review By: James Kiker
09/17/2003
This book is written for automated test practitioners, or those of us who script using automated test tools. The main purpose of the book is to present the Control Synchronized Data Driven Testing (CSDDT) automated testing framework. In this approach, not only is the execution of your scripts driven by the contents of data tables, so is the control or flow through the application under test. The test data table first contains keywords that “steer” the automated test through the application, and then, later in the same row, data to be entered into the application. The control words in the data tables trigger subroutines in the script that control the navigation of the application. This approach ensures good maintainability and reusability of scripts, as opposed to scripts that have been recorded.
Chapter 1 discusses lifecycles, testing processes, including planning and design, the scope and objectives of a test team, and what should be expected from a test automation framework. Chapters 2 and 3 expand upon this information. They address when and what to automate, and the documentation necessary for the testing process, such as software requirements. Chapter 3 also includes different approaches to requirements gathering.
Chapter 4 discusses the development of automated test scripts, and specifically the differences between the development of unit-level, system-level, and specialized system-level testing. It also describes in some detail the differences between recording and programming test scripts, including the many drawbacks of attempting to just record scripts. Chapters 5 and 6 detail the justifications, processes, and approaches to automated unit testing and automated integration testing. They discuss the implementation of a daily smoke test to flush out integration problems in the daily build.
Chapter 7 introduces automated testing frameworks. This chapter leads up to the meat of this book, the CSDDT. In this chapter, the authors discuss the best way to set up tests for business rules, GUIs, properties, and input data fields. They also discuss error handling during automated script execution. They go on to suggest best practices for scripting, such as scripting clean and robust code. They explain Carl Nagle’s “DDE (Data Driven Engine) Framework” and Keith Zambelich’s “Test Plan Driven Testing Framework,” comparing these to the CSDDT.
In chapter 8, the authors explain how to implement a project within the CSDDT framework. The chapter includes a troubleshooting section, which details common problems encountered with this approach, and the solutions. This chapter includes a great deal of specific Rational Robot SQABasic code examples, including an entire example CSDDT framework.
Chapters 9 and 10 are entitled “Facilitating the Manual Testing Process with Automated Tools” and “Managing Automated Tests.” These chapters provide solid information about tracking documentation and managing test suites.
The back cover describes the book as “practical automated testing techniques that enhance software quality and reduce time to market.” This statement is true. I am relatively new to software automated test development (I have been writing automated software test scripts for two years), and this is the first book I have read that is geared toward the “in-the-trenches” automated test developer, or “automated test implementation engineer,” as the authors call us. Other books I have read focus on methodologies and management information and do not give much practical implementation advice.
I use Mercury’s test suite, and while this book’s examples are geared toward those using Rational Robot, with many specific examples in Robot’s scripting language SQABasic, the explanations and examples are easy enough to follow and apply to your own situation. However, I would have preferred the code examples to be pseudocoded, for even easier reading and application to my needs. Any automated tester with the necessary programming background, however, will be able to follow these code examples without any problems.
The authors’ writing style is very easy to follow. Technical books are often dry, but the writing style, combined with interesting, relevant content, enabled me to read this book from cover to cover over the course of several days. The Control Synchronized Data Driven Testing (CSDDT) automated testing framework presented in the book appears to be an excellent means of achieving robust, maintainable automated test script beds. Our team uses a similar approach, though we eliminate the control synchronization to a certain extent.
I found this book to be very informative and helpful, full of information that will enable any automated test script developer to improve efficiency. It especially helps those who are on a small, new test team who are searching for a framework. The book will help them establish a strong start and a robust, reusable, easily maintained set of automated test scripts.