Includes bibliographical references (pages 335-337) and index.
CONTENTS NOTE
Text of Note
1. The testing challenge and those who take it on -- Software engineering evolution -- A tester's one true goal -- What is a user? -- Testers: what makes them special? -- Summary -- 2. Industrial-strength software: it's a product, not a science project -- Industrial-strength software -- Production environments -- Mission-critical software -- Case study: A pension plan management vendor -- Summary -- 3. Making sausage: the development process test process definitions -- Test process definitions -- Traditional software development models -- Iterative software development models -- The "Let's just skip SVT and go right to integration test" fallacy -- Summary -- 4. The test and development divide -- Should developers test their own software? -- A thick skin and diplomacy: test's relationship with development -- Summary -- 5. Where to start? snooping for information -- The importance of knowing what you test -- Viewing all software as a solution to a problem -- Customer reconnaissance -- A simple test preparation tool -- Summary -- 6. Divide and conquer: coping with complexity through teaming -- Complex software products: you can't know it all -- Reducing complexity through component spies -- Sharing expertise across the team -- Summary -- 7. I've got a plan: test plan focus areas -- The test plan document -- Unit test focus areas -- Function verification test focus areas -- System verification test focus areas -- Integration test focus areas -- Single vs. multi-system testing -- 8. Oops! testing for recoverability -- Function verification test -- System verification test -- Integration test -- Summary -- 9. Planning for trouble -- Scheduling -- Entry/exit criteria -- Injecting testability into development plans -- Case study: the testability of errors -- Summary -- 10. Reuse: how to steal and get paid for it -- Who writes more code: development or test? -- Reuse opportunities and techniques -- Case study: testing real memory management -- Summary -- 11. Developing good test programs -- Function verification test programs -- System verification test programs -- Summary -- 12. Corruption: it's not just for politicians -- Data integrity, what is it? -- Protecting against data corruption -- The need for special testing -- Data integrity monitors -- Summary -- 13. Tools---you can't build a house without them -- The magic tool myth -- Categories of tools -- Case study: a homegrown test tool framework -- Buy versus build -- Avoid the tool merry-go-round -- Summary -- 14. Emulating customers to find the bugs that matter -- Determining what tests to run -- It's not just what, but how you test -- Managing the test environments -- Summary -- 15. The main event: test execution -- Artistic testing -- An iterative approach: algorithm verification testing -- Catching problems -- Problem diagnosis -- Testing the documentation -- Summary -- 16. It's all virtual: using a virtual computer to test -- Partitioning -- Virtualization -- Partitioning and virtualization combinations -- Why go virtual? -- Case study: a closer look a z/VM -- Summary -- 17. All dressed up and no place to test: simulators and prototypes -- Simulators and prototypes: what are they? -- The case of the missing hardware -- Simulation -- The perils of simulation -- Prototypes -- Summary -- 18. It's a maaaad house: managing the test -- First, are you sure you're testing the correct code? -- Run logs: keeping track of what's going on -- Avoiding oversights through an end-of-day checklist -- Guarding the treasury: problem management -- Getting bugs fixed: the tester's weapon -- The constant tug-of-war: removing defects versus meeting schedules -- Summary -- 19. The customer's role in testing -- Controlled early introduction programs -- Pre-production testing -- Summary -- 20. You can't go home yet: the testing end game -- Continuous improvement -- The final lesson: bugs, you'll never find them all -- Summary.
0
SUMMARY OR ABSTRACT
Text of Note
Reliability and continuous availability have become crucial for computer software in the information economy. Well-publicized failures from both industry and government have underscored the need for mission-critical software to be thoroughly tested before being released into the marketplace. When it comes to industrial-strength reliability, no computer system is more renowned than the mainframe. But for years the actual approaches used to test mainframe software have been kept under wraps. What techniques are used? How do the teams in mainframe development labs test their systems to ensure they will deliver such extreme levels of robustness? How can these lessons be applied to other software projects? Software Testing Techniques: Finding the Defects that Matter answers these questions and provides practical testing techniques for achieving robust reliability with any large-scale software project. Written in a friendly, accessible style, the book highlights areas such as devising attacks to validate data integrity, wreaking havoc to ensure recoverability, exploiting virtualized environments to improve test efficiency, the tug of war between finding defects and meeting schedules, and approaches for emulating customer environments to find the most critical defects. Focusing on real-life techniques illustrated through examples and case studies gleaned from the authors' experiences with large server testing and operation, software engineers will discover tried and true techniques that are used for testing multimillion-dollar software products. Features: Covers multiple phases of testing that are relevant to large-scale projects, with an emphasis on the system-wide testing that is critical to establishing the reliability of enterprise-class software; Provides practical testing techniques for achieving robust reliability with large-scale software projects; Focuses on real-world issues, problems, and solutions; Emphasizes approaches for finding and removing the defects that matter most to customers; Highlights techniques for devising attacks to validate data integrity, wreaking havoc to ensure recoverability, developing effective test programs, exploiting virtualized environments to improve test efficiency, and emulating customer environments to find the most critical defects.