How to Break Software: A Practical Guide To Testing by James A. WhittakerHow to Break Software: A Practical Guide To Testing by James A. Whittaker

How to Break Software: A Practical Guide To Testing

byJames A. Whittaker

Paperback | May 9, 2002

Pricing and Purchase Info


Earn 276 plum® points

Prices and offers may vary in store


In stock online

Ships free on orders over $25

Not available in stores


How to Break Softwareis a departure from conventional testing in which testers prepare a written test plan and then use it as a script when testing the software. The testing techniques in this book are as flexible as conventional testing is rigid. And flexibility is needed in software projects in which requirements can change, bugs can become features and schedule pressures often force plans to be reassessed. Software testing is not such an exact science that one can determine what to test in advance and then execute the plan and be done with it. Instead of a plan, intelligence, insight, experience and a "nose for where the bugs are hiding" should guide testers. This book helps testers develop this insight. The techniques presented in this book not only allow testers to go off-script, they encourage them to do so. Don't blindly follow a document that may be out of date and that was written before the product was even testable. Instead, use your head! Open your eyes! Think a little, test a little and then think a little more. This book does teach planning, but in an "on- the-fly while you are testing" way. It also encourages automation with many repetitive and complex tasks that require good tools (one such tool is shipped with this book on the companion CD). However, tools are never used as a replacement for intelligence. Testers do the thinking and use tools to collect data and help them explore applications more efficiently and effectively.

James A. Whittaker is a well-known speaker and consultant, as well as seasoned professor.
Title:How to Break Software: A Practical Guide To TestingFormat:PaperbackDimensions:208 pages, 9 × 6.9 × 0.7 inPublished:May 9, 2002Publisher:Pearson EducationLanguage:English

The following ISBNs are associated with this title:

ISBN - 10:0201796198

ISBN - 13:9780201796193


Read from the Book

Preface Few modern issues have so dramatically influenced consumer decisions, personal lifestyles, corporate planning, and public policy as environmental and natural resource problems. The years since 1970 have seen changes in product design and packaging, corporate investments, personal career and lifestyle choices, government tax policies, and emerging technologies to name but a few because public and private decisions are now shaped by environmental and natural resource issues. With this book, I hope to bring those of you starting your study of environmental and natural resource economics close to today's exciting policy issues and introduce you to the theories and methods of analysis that economists use to approach these issues. This book shows you how economic tools, such as benefit-cost analysis, can be used to understand a wide range of real environmental and natural resource problems. The tools of economists can help design practical policy solutions to environmental problems. They also can contribute to public debate about complicated and emotional environmental issues by providing a framework that is universal, rigorous and testable. This book is intended to be readable by students who have completed one semester of microeconomic principles, but it also will engage students with a wider economics background. The aim of the book is to provide an introduction to environmental and natural resource issues and to describe economic theories and methods used by experts working in the field. Graphs, tables, and numerical examples are included to reinforce the principles presented in the text. No mathematics beyond simple algebra is required. All mathematics beyond algebra (e.g., calculus) is relegated to footnotes and appendixes. Most chapters have several numbered examples that present current, real-life examples for research and policy applications of the economic principles discussed in the chapter. Each chapter ends with questions that provide an opportunity to apply the chapter's material through class discussion, personal reflection, and exam preparation. The appendixes at the end of the book include advanced quantitative methods of analysis. The topics and structure of this book encourage its use for a variety of course work. All of the chapters could find a place in an upper division environmental economics course. Some chapters could be a source for graduate student or others who wish to pursue more specialized research interests. There may be more material in this book that can be cover well in one semester. The additional information opens up options for selecting topics that best cover the interests, expectations, and backgrounds of instructors and students. For example, a one-semester course in environmental economics could be organized around Chapters 1 - 7 and 14 - 19. If a brief introduction to natural resource economics is desired, Chapter 8 and/or 12 could be added. A one-term course in natural resource economics could cover Chapters 1- 6 and 8 - 13. An introduction to environmental economics could be accomplished by adding Chapter 7 and/or Chapter 16. This focuses on environmental and natural resource policy. It presents a considerable amount of economic theory, methods, and data for the purpose of gaining a better insight into policy solutions. Although this is an economics book, it is not limited to economics. Economics is not a stand-alone discipline; rather, other disciplines complement the ability of economics to sharpen our understanding pf policy issues. The disciplines of biology, the physical sciences, law, history, political science, and philosophy are introduced where their insights enhance the power of economics in confronting policy problems. In some cases, combining other disciplines with economics presents contrasting views of a problem, focuses a policy debate, or suggests competing hypotheses in the search for policy solutions. Chapters begin with a background incident or example that motivates and introduces the economic theories, methods of analysis, and policy questions that follow. Each chapter has a short section of clearly stated chapter goals. Relevant economic principles are introduced as a resource for posing questions, testing and supplying theories, understanding policy debates, and posing future questions. Footnotes are included to cover advanced or specialized treatment and to encourage students to pursue their own reading or research. Current methods of analysis, data sources, and ongoing studies are presented. Policy debates are analyzed along with unanswered questions posed by those debates. References to the current literature are open and transparent. This book is optimistic. It presumes that past gains in environmental protection and natural resource management will be maintained and that future gains are both desirable and possible. There is little future in pessimism. Students are eager to understand how economics concepts, like markets, can explain and address environmental and natural resource problems. The text is pro-environment and it also emphasizes the role of profit incentives in promoting the cooperation of business in protecting the environment and ensuring adequacy of natural resource supplies.

Table of Contents



Chapter Summaries.


1. A Fault Model to Guide Software Testing.

The Purpose of Software Testing.

Understanding Software Behavior.

Understanding Software's Environment.

The Human User.

File System User.

The Operating System User.

The Software User.

Understanding Software's Capabilities.

Testing Input.

Testing Output.

Testing Data.

Testing Competition.

Summary and Conclusion.




2. Testing from the User Interface: Inputs and Outputs.

Using the Fault Model to Guide Testing.

Exploring the Input Domain.

First Attack: Apply inputs that force all the error messages to occur.

Second Attack: Apply inputs that force the software to establish default values.

Third Attack: Explore allowable character sets and data types.

Fourth Attack: Overflow input buffers.

Fifth Attack: Find inputs that may interact and test various combinations of their values.

Sixth Attack: Repeat the same input or series of inputs numerous times.

Exploring Outputs.

Seventh Attack: Force different outputs to be generated for each input.

Eighth Attack: Force invalid outputs to be generated.

Ninth Attack: Force properties of an output to change.

Tenth Attack: Force the screen to refresh.




3. Testing from the User Interface: Data and Computation.

Testing Inside the Box.

Exploring Stored Data.

Eleventh Attack: Apply inputs using a variety of initial conditions.

Twelfth Attack: Force a data structure to store too many/too few values.

Thirteenth Attack: Investigate alternate ways to modify internal data constraints.

Exploring Computation and Feature Interaction.

Fifteenth Attack: Force a function to call itself recursively.

Sixteenth Attack: Force computation results to be too large or too small.

Seventeenth Attack: Find features that share data or interact poorly.




4. Testing from the File System Interface.

Attacking Software from the File System Interface.

Media-based Attacks.

First Attack: Inject faults that simulate memory access problems.

Second Attack: Inject faults that simulate network problems.

Third Attack: Damage the media.

File-based Attacks.

Fourth Attack: Assign an invalid file name.

Fifth Attack: Vary file access permissions.

Sixth Attack: Vary/corrupt file contents.


5. Testing from the Software/OS Interface.

Attacking Software from Software Interfaces.

Record-and-Simulate Attacks.

Observe-and-Fail Attacks.




6. Some Parting Advice.

You'll Never Know Everything.

Bug Hunts.

Friday Afternoon Bug Fests.




Annotated Glossary of Programming Terms.

Appendix A. Testing Exception and Error Cases Using Runtime Fault Injection.


A Mechanism for Runtime Fault Injection.

Fault Selection.




Appendix B. Using HEAT: The Hostile Environment Application Tester.

Canned HEAT User Guide.

The Application Band.

The Monitor Band.

Fault Injection Bands and Their Functionality.

The Network Band.

Disk Storage.


Appendix C. What is Software Testing? And Why is it so Hard?


The Software Testing Process.

Phase One: Modeling the Software's Environment.

Phase Two: Selecting Test Scenarios.

Phase Three: Running and Evaluating Test Scenarios.

Phase Four: Measuring Testing Progress.



The Software Testing Problem.