Quality Code: Software Testing Principles, Practices, and Patterns
- Length: 256 pages
- Edition: 1
- Language: English
- Publisher: Addison-Wesley Professional
- Publication Date: 2013-12-14
- ISBN-10: 0321832981
- ISBN-13: 9780321832986
- Sales Rank: #2950535 (See Top 100 Books)
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
Table of Contents
Part I: Principles and Practices of Testing
Chapter 1. Engineering, Craftsmanship, and First-Time Quality
Chapter 2. Intent of Code
Chapter 3. Where Do I Start?
Chapter 4. Design and Testability
Chapter 5. Testing Principles
Part II: Testing and Testability Patterns
Chapter 6. The Basics
Chapter 7. String Handling
Chapter 8. Encapsulation and Override Variations
Chapter 9. Adjusting Visibility
Chapter 10. Interlude: Revisiting Intent
Chapter 11. Error Condition Verification
Chapter 12. Use Existing Seams
Chapter 13. Parallelism
Part III: Worked Examples
Chapter 14. Test-Driven Java
Chapter 15. Legacy JavaScript