
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Effective Software Testing: 50 Specific Ways to Improve Your Testing 1st Edition
This book places special emphasis on the integration of testing into all phases of the software development life cycle - from requirements definition to design and final coding. The fifty lessons provided here focus on the key aspects of software testing: test planning, design, documentation, execution, managing the testing team, unit testing, automated testing, nonfunctional testing, and more.
- ISBN-100201794292
- ISBN-13978-0201794298
- Edition1st
- PublisherAddison-Wesley Professional
- Publication dateJanuary 1, 2002
- LanguageEnglish
- Dimensions7.5 x 0.75 x 9.5 inches
- Print length240 pages
Editorial Reviews
From the Back Cover
Effective Software Testing explores fifty critically important best practices, pitfalls, and solutions. Gleaned from the author's extensive practical experience, these concrete items will enable quality assurance professionals and test managers to immediately enhance their understanding and skills, avoid costly mistakes, and implement a state-of-the-art testing program.
This book places special emphasis on the integration of testing into all phases of the software development life cycle--from requirements definition to design and final coding. The fifty lessons provided here focus on the key aspects of software testing: test planning, design, documentation, execution, managing the testing team, unit testing, automated testing, nonfunctional testing, and more.
You will learn to:
- Base testing efforts on a prioritized feature schedule
- Estimate test preparation and execution
- Define the testing team roles and responsibilities
- Design test procedures as soon as requirements are available
- Derive effective test cases from requirements
- Avoid constraints and detailed data elements in test procedures
- Make unit-test execution part of the build process
- Use logging to increase system testability
- Test automated test tools on an application prototype
- Automate regression tests whenever possible
- Avoid sole reliance on capture/playback
- Conduct performance testing with production-sized databases
- Tailor usability tests to the intended audience
- Isolate the test environment from the development environment
- Implement a defect tracking life cycle
Throughout the book, numerous real-world case studies and concrete examples illustrate the successful application of these important principles and techniques.
Effective Software Testing provides ready access to the expertise and advice of one of the world's foremost software quality and testing authorities.
0201794292B12032002
About the Author
Elfriede Dustin is the lead author of Automated Software Testing (Addison-Wesley, 1999), and Quality Web Systems (Addison-Wesley, 2002). An acknowledged expert in software engineering and testing practices, she has assisted numerous companies in the definition and implementation of QA and testing processes. For more information, please see her Web site at www.effectivesoftwaretesting.com.
0201794292AB12052002
Excerpt. © Reprinted by permission. All rights reserved.
In most software-development organizations, the testing program functions as the final "quality gate" for an application, allowing or preventing the move from the comfort of the software-engineering environment into the real world. With this role comes a large responsibility: The success of an application, and possibly of the organization, can rest on the quality of the software product.
A multitude of small tasks must be performed and managed by the testing team--so many, in fact, that it is tempting to focus purely on the mechanics of testing a software application and pay little attention to the surrounding tasks required of a testing program. Issues such as the acquisition of proper test data, testability of the application's requirements and architecture, appropriate test-procedure standards and documentation, and hardware and facilities are often addressed very late, if at all, in a project's life cycle. For projects of any significant size, test scripts and tools alone will not suffice--a fact to which most experienced software testers will attest.
Knowledge of what constitutes a successful end-to-end testing effort is typically gained through experience. The realization that a testing program could have been much more effective had certain tasks been performed earlier in the project life cycle is a valuable lesson. Of course, at that point, it's usually too late for the current project to benefit from the experience.
Effective Software Testing provides experience-based practices and key concepts that can be used by an organization to implement a successful and efficient testing program. The goal is to provide a distilled collection of techniques and discussions that can be directly applied by software personnel to improve their products and avoid costly mistakes and oversights. This book details 50 specific software testing best practices, contained in ten parts that roughly follow the software life cycle. This structure itself illustrates a key concept in software testing: To be most effective, the testing effort must be integrated into the software-development process as a whole. Isolating the testing effort into one box in the "work flow" (at the end of the software life cycle) is a common mistake that must be avoided.
The material in the book ranges from process- and management-related topics, such as managing changing requirements and the makeup of the testing team, to technical aspects such as ways to improve the testability of the system and the integration of unit testing into the development process. Although some pseudocode is given where necessary, the content is not tied to any particular technology or application platform.
It is important to note that there are factors outside the scope of the testing program that bear heavily on the success or failure of a project. Although a complete software-development process with its attendant testing program will ensure a successful engineering effort, any project must also deal with issues relating to the business case, budgets, schedules, and the culture of the organization. In some cases, these issues will be at odds with the needs of an effective engineering environment. The recommendations in this book assume that the organization is capable of adapting, and providing the support to the testing program necessary for its success.
Organization
This book is organized into 50 separate items covering ten important areas. The selected best practices are organized in a sequence that parallels the phases of the system development life cycle.
The reader can approach the material sequentially, item-by-item and part-by-part, or simply refer to specific items when necessary to gain information about and understanding of a particular problem. For the most part, each chapter stands on its own, although there are references to other chapters, and other books, where helpful to provide the reader with additional information.
Chapter 1 describes requirements-phase considerations for the testing effort. It is important in the requirements phase for all stakeholders, including a representative of the testing team, to be involved in and informed of all requirements and changes. In addition, basing test cases on requirements is an essential concept for any large project. The importance of having the testing team represented during this phase cannot be overstated; it is in this phase that a thorough understanding of the system and its requirements can be obtained.
Chapter 2 covers test-planning activities, including ways to gain understanding of the goals of the testing effort, approaches to determining the test strategy, and considerations related to data, environments, and the software itself. Planning must take place as early as possible in the software life cycle, as lead times must be considered for implementing the test program successfully. Early planning allows for testing schedules and budgets to be estimated, approved, and incorporated into the overall software development plan. Estimates must be continually monitored and compared to actuals, so they can be revised and expectations can be managed as required.
Chapter 3 focuses on the makeup of the testing team. At the core of any successful testing program are its people. A successful testing team has a mixture of technical and domain knowledge, as well as a structured and concise division of roles and responsibilities. Continually evaluating the effectiveness of each test-team member throughout the testing process is important to ensuring success.
Chapter 4 discusses architectural considerations for the system under test. Often overlooked, these factors must be taken into account to ensure that the system itself is testable, and to enable gray-box testing and effective defect diagnosis.
Chapter 5 details the effective design and development of test procedures, including considerations for the creation and documentation of tests, and discusses the most effective testing techniques. As requirements and system design are refined over time and through system-development iterations, so must the test procedures be refined to incorporate the new or modified requirements and system functions.
Chapter 6 examines the role of developer unit testing in the overall testing strategy. Unit testing in the implementation phase can result in significant gains in software quality. If unit testing is done properly, later testing phases will be more successful. There is a difference, however, between casual, ad-hoc unit testing based on knowledge of the problem, and structured, repeatable unit testing based on the requirements of the system.
Chapter 7 explains automated testing tool issues, including the proper types of tools to use on a project, the build-versus-buy decision, and factors to consider in selecting the right tool for the organization. The numerous types of testing tools available for use throughout the phases in the development life cycle are described here. In addition, custom tool development is also covered.
Chapter 8 discusses selected best practices for automated testing. The proper use of capture/playback tools, test harnesses, and regression testing are described.
Chapter 9 provides information on testing nonfunctional aspects of a software application. Ensuring that nonfunctional requirements are met, including performance, security, usability, compatibility, and concurrency testing, adds to the overall quality of the application.
Chapter 10 provides a strategy for managing the execution of tests, including appropriate methods of tracking test-procedure execution and the defect life cycle, and gathering metrics to assess the testing process.
Audience
The target audience of this book includes Quality Assurance professionals, software testers, and test leads and managers. Much of the information presented can also be of value to project managers and software developers looking to improve the quality of a software project
0201794292P12032002
Product details
- Publisher : Addison-Wesley Professional; 1st edition (January 1, 2002)
- Language : English
- Paperback : 240 pages
- ISBN-10 : 0201794292
- ISBN-13 : 978-0201794298
- Item Weight : 1.35 pounds
- Dimensions : 7.5 x 0.75 x 9.5 inches
- Best Sellers Rank: #6,052,917 in Books (See Top 100 in Books)
- #2,551 in Software Design & Engineering
- #2,611 in Software Testing
- #8,087 in Software Development (Books)
- Customer Reviews:
About the author

For any questions related to my various books, please contact me at ElfDustin@aol.com. You can also follow me on twitter @ElfriedeDustin or find me on linkedin ElfriedeDustin
I am a computer scientist in the greater Washington, DC area and work on improving system engineering efforts.
"Save me Twice" is a WWII novel based on true events, also translated into German "Rette mich ein zweites mal."
More:
I have a B.S. in Computer Science with over 25 years of IT experience, implementing effective systems engineering strategies, both on Government and commercial programs.
I am the author and co-author of 6 books related to Software Testing, which have been translated into numerous languages, all listed here on this page.
My goal is to continue to help further software engineering advances and contribute to solving this challenge.
Customer reviews
- 5 star4 star3 star2 star1 star5 star83%0%0%0%17%83%
- 5 star4 star3 star2 star1 star4 star83%0%0%0%17%0%
- 5 star4 star3 star2 star1 star3 star83%0%0%0%17%0%
- 5 star4 star3 star2 star1 star2 star83%0%0%0%17%0%
- 5 star4 star3 star2 star1 star1 star83%0%0%0%17%17%
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonTop reviews from the United States
There was a problem filtering reviews right now. Please try again later.
- Reviewed in the United States on January 13, 2003A rarity in the testing world, here is a book I can wholeheartedly recommend for your average test practitioner or the QA Manager or QA Lead who feels they might be in over their head or who is not sure if they are missing something in their overall test effort. Having worked in the field of quality assurance and testing for more than ten years, I can say that the author hits on many elements that I often see not practiced in various organizations and that should be. The "Item"-focused nature of the chapters (providing the fifty steps) are a great way to present this material and bring in mind, to this reader, Steve McConnell's "Rapid Development", which did the same thing for development-related concerns. I had always wondered why the testing field did not have a book like that and now it does.
If I had to pick one nitpick (and in the grand scheme of things it is probably a relatively small one), one thing I could probably do without was the use of the word "nonfunctional testing". That is, unfortunately, a term all too often used in the discipline of testing and it should not be. For example, performance testing in the book is placed under the "nonfunctional" category and yet it is all about functionality: how quickly the functionality performs! The same thing with security: this is about how secure the application/site functions! (In other words, how secure the functionality is.) So this term is, I feel, incorrectly applied and as such will be used by more and more testers and this is often the stumbling block because usage of the term "non-functional" really often covers up what are, in effect, quality requirements and cost constraints. With that said, however, the material under the section on non-functional testing is well laid-out and is accurate in every respect, as far as I was concerned.
The breakdown of the book in terms of chapters and then items within the chapters is right on the money. And some of the items are wonderful kernels of knowledge that all testers should keep in mind. For example, Item 17 is "Verify that the System Supports Testability". This is a key concept that way too many testers seem to forget about early on and then have to deal with the ramifications of explaining why they cannot adequately test something later on. Yet another excellent element is Item 22, "Derive Effective Test Cases from Requirements". My immediate thought is: okay, but what if there are no requirements? Well, the author covers that very point in an excellent manner. In fact that is what all the items do: they provide a solid reference point for a variety of topics that can be researched by the conscientious tester or analyst. This book is a distillation of a broad array of concepts, from requirements analysis to automated testing tools to evaluating how effective a tester is. This wide scope will, I think, give the book a broad appeal and it serves to make it clear that there is quite a bit going on in the world of testing.
Overall, I think this is an excellent reference book for the average test group within an organization and is certainly worth having in your library if you in any way deal with the world of quality assurance or quality testing. It is rare that I give any book five stars (much less a testing book) but this one deserves it. Will you be an effective tester with this book? That all depends on how you apply what it talks about. But I can almost guarantee you will be an ineffective tester if you do not take much of what this book has to say seriously. Highly recommended.
- Reviewed in the United States on June 16, 2010In Effective Software Testing Elfriede Dustin gave the software testing community their version of Scott Meyers' landmark Effective C++ which was in its first edition in 1992. Meyers created a style that software professionals have loved and other authors have emulated in which "items" are numbered which address specific and sometimes complex issues related to the subject at hand. Dustin applies this same style to the testing discipline with a high degree of success. Since the TOC is available for browsing on the product page, I won't repeat all of the high level topic areas in detail here. However, the items covered address a broad level of topics from foundations for all testing practices to specific areas in unit, functional, and non-functional testing. I recently became the manager for my company's automation and performance testing team after having spent 13 years in application development. I had some exposure to testing on the periphery of the projects that I've worked on, but there were aspects that I had not considered either fully or at all. While I don't have direct responsibility for functional testing, I found the material here beneficial to understand the big picture of testing organizations and how my team's work supports the functional testing.
One way that Effective Software Testing differs from its C++ cousin is that it does tend to be more theoretical with general advice and guidelines. For managers looking for a good overview of testing along with good principles to abide by, this is a good place to start. However, there is a lot of detail or "rubber meets the road" type of material. Topics like equivalence partitioning and orthogonal arrays are described in a more qualitative way. I plan to look to other publications for a more detailed treatment of these topics. I didn't find any material that I disagreed with or that didn't resonate with my new role and responsibilities. I would recommend this book to managers new to software testing or managers and testers who are looking to improve their overall testing organization. With 50 items that span a mere 258 pages, it is very easy to read in spurts which is often necessary for the limited time that managers and other professionals have. Even at one item a day at the beginning of the day or over lunch, you can complete the book in 10 weeks. I think it will be worth your investment of time and money.
Overall: A
- Reviewed in the United States on April 21, 2003This book should not be read in isolation, especially by a new/newly ordained test engineer or test manager. It suggests approaches to testing that are in conflict with the Testing Life Cycle as contained in IEEE Standard 829, the Standard for Software Test Documentation. A reader would do well to first read "Systematic Software Testing" by Rick Craig and Stefan Jaskiel. Ms. Dustin seems to concentrate on developing Test Procedures and plays down the critical subject of Test Design. Also, though not labeled as such, much of this book seems aimed at testing in the web environment, as opposed to testing non-web systems (e.g., client-server, mainframe) or safety critical systems.
This book offers several excellent points, such as Early Test Planning and discussion of the Test Environment, but tends to use terminology (e.g., test harness) that is used differently elsewhere in the software industry. Since the book doesn't contain a glossary, this can lead to reader confusion. The author's section on Test Automation is well-done, which one would expect from an industry-recognized test automation expert.
There seem to be several misleading items in this book, including the author's definition of "Black Box" testing. Elsewhere in the software industry, this means "Requirements-Based" testing, but the author defines it as "Validating correct behavior only by viewing the output of the user interface." This seems to be significantly restrictive in scope. The author also seems to concentrate on the requirements-verification-testing aspect of unit testing, while playing down the structural, white-box aspect of unit testing.