I read this book that I got a few months ago, and thought you might like to know a little about the contents and what I thought about the book. Software Testing (2nd Edition) by Ron Patton (ISBN-13: 978-0672327988) is a Sams book that covers basic software development testing techniques. Written with an easy to understand style that is clear and concise style, Patton covers the basics of software testing. He summarizes the essential elements into six sections while keeping the overall length to about 400 pages. I found the topics were covered in a introductory manner, with broad overviews and just the important elements for the novice to beginner. In general, this is targeted at people new to testing software or for someone just beginning to apply their existing development skills to a formal software testing environment.
After reading this book (and others on the subject), your main takeaways should include:
- Find bugs early. The sooner bugs are discovered the less expensive to fix.
- It is impossible to test every program completely, but if test smartly you can perform more complete testing.
- Smart people automate testing when possible, which allows for quickly repeating tests and duplicating errors.
Who Should Read This Book?
This book is written for three groups of people:
- Students, computer hobbyists interested in software testing, or someone looking for a full-time job in development. Reading this book before an interview or before your first day on the job to brush up on your testing knowledge.
- Career changers wanting to move from their field of expertise into the software industry. There are lots of opportunities for non-software experts to apply their knowledge to software testing.
- Programmers, software project managers, and other people who make up a software development team who want to improve their knowledge and understanding of what software testing is all about.
What Will You Learn From This Book?
This book covers nearly every aspect of software testing:
- Software testing as part of the software development process
- Basic and advanced software testing techniques
- Applying testing skills to common development tasks
- Using automation to improve test efficiency
- Planning, documenting, and reporting your testing effort and results
- Measuring your test effort and your product’s progress
- Knowing the difference between testing and quality assurance
- How to find a job as a software tester
This book is a good place to start for programmers who want to get into testing or Quality Assurance. It is also excellent for beginners who are looking to learn more about software testing.
Table of Contents
About the Second Edition
Who Should Use This Book?
What This Book Will Do for You
Software Necessary to Use This Book
How This Book Is Organized
Part I: The Big Picture
Part II: Testing Fundamentals
Part III: Applying Your Testing Skills
Part IV: Supplementing Your Testing
Part V: Working with Test Documentation
Part VI: The Future
Conventions Used in This Book
I. THE BIG PICTURE.
1. Software Testing Background.
Infamous Software Error Case Studies
Disney’s Lion King, 1994-1995
Intel Pentium Floating-Point Division Bug, 1994
NASA Mars Polar Lander, 1999
Patriot Missile Defense System, 1991
The Y2K (Year 2000) Bug, circa 1974
Dangerous Viewing Ahead, 2004
What Is a Bug?
Terms for Software Failures
Software Bug: A Formal Definition
Why Do Bugs Occur?
The Cost of Bugs
What Exactly Does a Software Tester Do?
What Makes a Good Software Tester?
2. The Software Development Process.
What Effort Goes Into a Software Product?
What Parts Make Up a Software Product?
Software Project Staff
Software Development Lifecycle Models
3. The Realities of Software Testing.
It’s Impossible to Test a Program Completely
Software Testing Is a Risk-Based Exercise
Testing Can’t Show That Bugs Don’t Exist
The More Bugs You Find, the More Bugs There Are
The Pesticide Paradox
Not All the Bugs You Find Will Be Fixed
When a Bug’s a Bug Is Difficult to Say
Product Specifications Are Never Final
Software Testers Aren’t the Most Popular Members of a Project Team
Software Testing Is a Disciplined Technical Profession
Software Testing Terms and Definitions
Precision and Accuracy
Verification and Validation
Quality and Reliability
Testing and Quality Assurance (QA)
II. TESTING FUNDAMENTALS.
4. Examining the Specification.
Black-Box and White-Box Testing
Static and Dynamic Testing
Static Black-Box Testing: Testing the Specification
Performing a High-Level Review of the Specification
Pretend to Be the Customer
Research Existing Standards and Guidelines
Review and Test Similar Software
Low-Level Specification Test Techniques
Specification Attributes Checklist
Specification Terminology Checklist
5. Testing the Software with Blinders On.
Dynamic Black-Box Testing: Testing the Software While Blindfolded
Test-to-Pass and Test-to-Fail
Default, Empty, Blank, Null, Zero, and None
Invalid, Wrong, Incorrect, and Garbage Data
Testing the Software’s Logic Flow
Testing States to Fail
Other Black-Box Test Techniques
Behave Like a Dumb User
Look for Bugs Where You’ve Already Found Them
Think like a Hacker
Follow Experience, Intuition, and Hunches
6. Examining the Code.
Static White-Box Testing: Examining the Design and Code
Coding Standards and Guidelines
Examples of Programming Standards and Guidelines
Generic Code Review Checklist
Data Reference Errors
Data Declaration Errors
Control Flow Errors
Subroutine Parameter Errors
7. Testing the Software with X-Ray Glasses.
Dynamic White-Box Testing
Dynamic White-Box Testing Versus Debugging
Testing the Pieces
Unit and Integration Testing
An Example of Module Testing
Formulas and Equations
Program Statement and Line Coverage
III. APPLYING YOUR TESTING SKILLS.
8. Configuration Testing.
An Overview of Configuration Testing
Isolating Configuration Bugs
Sizing Up the Job
Approaching the Task
Decide the Types of Hardware You’ll Need
Decide What Hardware Brands, Models, and Device Drivers Are Available
Decide Which Hardware Features, Modes, and Options Are Possible
Pare Down the Identified Hardware Configurations to a Manageable Set
Identify Your Software’s Unique Features That Work with the Hardware Configurations
Design the Test Cases to Run on Each Configuration 136
Execute the Tests on Each Configuration
Rerun the Tests Until the Results Satisfy Your Team
Obtaining the Hardware
Identifying Hardware Standards
Configuration Testing Other Hardware
9. Compatibility Testing.
Compatibility Testing Overview
Platform and Application Versions
Backward and Forward Compatibility
The Impact of Testing Multiple Versions
Standards and Guidelines
High-Level Standards and Guidelines
Low-Level Standards and Guidelines
Data Sharing Compatibility
10. Foreign-Language Testing.
Making the Words and Pictures Make Sense
ASCII, DBCS, and Unicode
Hot Keys and Shortcuts
Computations on Characters
Reading Left to Right and Right to Left
Text in Graphics
Keep the Text out of the Code
Configuration and Compatibility Issues
Foreign Platform Configurations
How Much Should You Test?
11. Usability Testing.
User Interface Testing
What Makes a Good UI?
Follows Standards and Guidelines
Testing for the Disabled: Accessibility Testing
Accessibility Features in Software
12. Testing the Documentation.
Types of Software Documentation
The Importance of Documentation Testing
What to Look for When Reviewing Documentation
The Realities of Documentation Testing
13. Testing for Software Security.
Understanding the Motivation
Is Software Security a Feature? Is Security Vulnerability a Bug?
Understanding the Buffer Overrun
Using Safe String Functions
14. Website Testing.
Web Page Fundamentals
Objects and Other Simple Miscellaneous Functionality
Configuration and Compatibility Testing
IV. SUPPLEMENTING YOUR TESTING.
15. Automated Testing and Test Tools.
The Benefits of Automation and Tools
Viewers and Monitors
Stress and Load Tools
Interference Injectors and Noise Generators
Software Test Automation
Macro Recording and Playback
Fully Programmable Automated Testing Tools
Random Testing: Monkeys and Gorillas
Realities of Using Test Tools and Automation
16. Bug Bashes and Beta Testing.
Having Other People Test Your Software
Outsourcing Your Testing
V. WORKING WITH TEST DOCUMENTATION.
17. Planning Your Test Effort.
The Goal of Test Planning
Test Planning Topics
People, Places, and Things
What Will and Won’t Be Tested
Metrics and Statistics
Risks and Issues
18. Writing and Tracking Test Cases.
The Goals of Test Case Planning
Test Case Planning Overview
Test Case Organization and Tracking
19. Reporting What You Find.
Getting Your Bugs Fixed
Isolating and Reproducing Bugs
Not All Bugs Are Created Equal
A Bug’s Life Cycle
The Standard: The Test Incident Report
Manual Bug Reporting and Tracking
Automated Bug Reporting and Tracking
20. Measuring Your Success.
Using the Information in the Bug Tracking Database
Metrics That You’ll Use in Your Daily Testing
Common Project-Level Metrics
VI. THE FUTURE.
21. Software Quality Assurance.
Quality Is Free
Testing and Quality Assurance in the Workplace
Other Names for Software Testing Groups
Test Management and Organizational Structures
Capability Maturity Model (CMM)
22. Your Career as a Software Tester.
Your Job as a Software Tester
Finding a Software Testing Position
Gaining Hands-On Experience
Formal Training Opportunities
Professional Organizations Dedicated to Software or Software Quality
Note: I have no personal interest in the reviewed book. I paid for my own copy and have received no money or other payment for this review.