Quality Code: Software Testing Principles, Practices, and Patterns

Overview

Test-driven, test-first, and test-early development practices are helping thousands of software development organizations improve their software. Now, in Quality Code: Software Testing Principles, Practices, and Patterns, Stephen Vance builds on all that’s been learned about test-driven development, helping you achieve unprecedented levels of first-time quality. Using real-world code examples, this guide introduces patterns, principles, and more than two dozen detailed techniques for testing any software system ...

See more details below
Paperback (New Edition)
$41.87
BN.com price
(Save 6%)$44.99 List Price

Pick Up In Store

Reserve and pick up in 60 minutes at your local store

Other sellers (Paperback)
  • All (10) from $24.82   
  • New (8) from $24.82   
  • Used (2) from $41.86   
Quality Code: Software Testing Principles, Practices, and Patterns

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
$28.79
BN.com price
(Save 20%)$35.99 List Price

Overview

Test-driven, test-first, and test-early development practices are helping thousands of software development organizations improve their software. Now, in Quality Code: Software Testing Principles, Practices, and Patterns, Stephen Vance builds on all that’s been learned about test-driven development, helping you achieve unprecedented levels of first-time quality. Using real-world code examples, this guide introduces patterns, principles, and more than two dozen detailed techniques for testing any software system more fully, effectively, and painlessly. Vance presents a conceptual framework to help you focus your efforts and design recommendations for improving testability across the software lifecycle, and also provides hands-on guidance to simplify testing of the full spectrum of code constructs. You’ll learn how to choose the best testing techniques for every situation, from the most common scenarios to threading. Two complete case studies put it all together, walking you through testing a brand-new Java application and an untested “legacy” JavaScript jQuery plugin. Whether you’re developing cutting-edge code for a new start-up, or maintaining an unruly old system, this guide will help you deliver exactly what you need: quality code.

• Simplify unit testing of all your code—and improve integration and system testing

• Delineate intent and implementation to promote more reliable and scalable testing

• Overcome confusion and misunderstandings about the mechanics of writing tests

• Test “side effects,” behavioral characteristics, and contextual constraints

• Understand subtle interactions between design and testability—and make them work for, not against, you

• Discover core principles that guide your key testing decisions

• Explore testing getters/setters, string handling, encapsulation, override variations, visibility, singleton patterns, error conditions, and more

• Reproduce and test complex race conditions deterministically

Read More Show Less

Product Details

  • ISBN-13: 9780321832986
  • Publisher: Addison-Wesley
  • Publication date: 12/20/2013
  • Edition description: New Edition
  • Edition number: 1
  • Pages: 256
  • Sales rank: 1,467,743
  • Product dimensions: 6.90 (w) x 9.00 (h) x 0.80 (d)

Meet the Author

Stephen Vance has been a professional software developer, consultant, manager, mentor, and instructor since 1992. He has practiced and taught code-level, automated testing techniques since 1997. He has worked across a broad range of industries for companies ranging from start-ups to Fortune 100 corporations. He has spoken at software conferences throughout the United States and Europe. Stephen lives with his wife near Boston, Massachusetts.
Read More Show Less

Table of Contents

Preface xiii

Acknowledgments xvii

About the Author xix

Part I: Principles and Practices of Testing 1

Chapter 1: Engineering, Craftsmanship, and First-Time Quality 3

Engineering and Craftsmanship 4

The Role of Craftsmanship in First-Time Quality 4

Practices Supporting Software Craftsmanship 6

Unit Testing under Code Checker Constraints 10

Unit Testing for Coverage 10

Chapter 2: Intent of Code 17

Where Did I Put That Intent? 18

Separating Intent from Implementation 18

A Simple Example That Makes You Think 19

Chapter 3: Where Do I Start? 23

An Approach to Testing 23

Chapter 4: Design and Testability 37

A Word on Design Paradigms 37

Encapsulation and Observability 38

Coupling and Testability 42

Chapter 5: Testing Principles 47

Craft Your Tests Well 47

Avoid Test Code in Production 51

Verify Intent over Implementation 52

Minimize Coupling 53

Prefer Minimal, Fresh, Transient Fixtures 54

Use Available Facilities 55

Prefer Complete over Partial Verification 55

Write Small Tests 55

Separate Your Concerns 56

Use Unique Values 57

Keep It Simple: Remove Code 58

Don’t Test the Framework 58

Sometimes Test the Framework 60

Part II: Testing and Testability Patterns 61

Chapter 6: The Basics 63

Bootstrapping Constructors 63

Testing Simple Getters and Setters 66

Share Constants 67

Locally Redefine 70

Temporarily Replace 71

Encapsulate and Override 72

Adjust Visibility 75

Verification by Injection 77

Chapter 7: String Handling 81

Verification by Containment 81

Verification by Pattern 83

Exact Verification by Value 85

Exact Verification with Formatted Results 88

Chapter 8: Encapsulation and Override Variations 91

Data Injection 91

Encapsulate Loop Conditions 94

Error Injection 96

Replace Collaborators 98

Use Existing No-Op Classes 101

Chapter 9: Adjusting Visibility 105

Packaging Tests with Code 105

Break It Down 108

Changing Access Levels 109

Test-Only Interfaces 111

Naming the Unnamed 112

Becoming friend-ly 113

Coerced Access via Reflection 114

Declarative Scope Changing 116

Chapter 10: Interlude: Revisiting Intent 119

Testing the Singleton Pattern 120

Singleton Intent 121

The Testing Strategy 121

Discerning Intent 127

Chapter 11: Error Condition Verification 129

Check the Return Value 129

Verify the Exception Type 130

Verify the Exception Message 132

Verify the Exception Payload 134

Verify the Exception Instance 137

Thoughts on Exception Design 140

Chapter 12: Use Existing Seams 145

Direct Calls 146

Dependency Injection 147

Callbacks, Observers, Listeners, and Notifiers 150

Registries 154

Factories 156

Logging and Other Facilities of Last Resort 159

Chapter 13: Parallelism 165

A Brief Introduction to Threads and Race Conditions 166

A Strategy for Race Condition Reproduction 170

Test the Thread Task Directly 173

Synchronize through Common Lock 176

Synchronize through Injection 181

Use Supervisory Control 184

Statistical Verification 187

Debugger APIs 189

Part III: Worked Examples 193

Chapter 14: Test-Driven Java 195

Bootstrapping 196

First Functionality 197

Cutting the Cord 198

Moving to Multiples 199

Ghost Protocol 200

Exercising Options 203

Moving Downstream 204

Retrospective 207

Chapter 15: Legacy JavaScript 209

Getting Started 210

DOMination 211

On Toothpaste and Testing 213

Scaling Up 215

Software Archeology 217

Retrospective 218

Bibliography 219

Index 221

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)