Software Test Design: Write comprehensive test plans to uncover critical bugs in web, desktop, and mobile apps
- Length: 426 pages
- Edition: 1
- Language: English
- Publisher: Packt Publishing
- Publication Date: 2022-12-02
- ISBN-10: 1804612561
- ISBN-13: 9781804612569
- Sales Rank: #0 (See Top 100 Books)
A guide to writing comprehensive test plans covering exploratory testing and feature specification; black and white box testing; security, usability, and maintainability; and load and stress testing
Key Features
- Cover all key forms of testing for modern applications systematically
- Understand anti-patterns and pitfalls in system design with the help of practical examples
- Learn the strengths and weaknesses of different forms of testing and how to combine them effectively
Book Description
Software Test Design details best practices for testing software applications and writing comprehensive test plans. Written by an expert with over twenty years of experience in the high-tech industry, this guide will provide you with training and practical examples to improve your testing skills.
Thorough testing requires a thorough understanding of the functionality under test, informed by exploratory testing and described by a detailed functional specification. This book is divided into three sections, the first of which will describe how best to complete those tasks to start testing from a solid foundation.
Armed with the feature specification, functional testing verifies the visible behavior of features by identifying equivalence partitions, boundary values, and other key test conditions. This section explores techniques such as black- and white-box testing, trying error cases, finding security weaknesses, improving the user experience, and how to maintain your product in the long term.
The final section describes how best to test the limits of your application. How does it behave under failure conditions and can it recover? What is the maximum load it can sustain? And how does it respond when overloaded?
By the end of this book, you will know how to write detailed test plans to improve the quality of your software applications.
What you will learn
- Understand how to investigate new features using exploratory testing
- Discover how to write clear, detailed feature specifi cations
- Explore systematic test techniques such as equivalence partitioning
- Understand the strengths and weaknesses of black- and white-box testing
- Recognize the importance of security, usability, and maintainability testing
- Verify application resilience by running destructive tests
- Run load and stress tests to measure system performance
Who this book is for
This book is for anyone testing software projects for mobile, web, or desktop applications. That includes Dedicated QA engineers managing software quality, Test and test automation engineers writing formal test plans, Test and QA managers running teams responsible for testing, Product owners responsible for product delivery, and Developers who want to improve the testing of their code.
Cover Title Page Copyright and Credits Contributors Table of Contents Preface Part 1 – Preparing to Test Chapter 1: Making the Most of Exploratory Testing What is exploratory testing? Advantages, disadvantages, and alternatives Understanding when testing should begin Understanding the test activities The spiral model of test improvement Identifying if a feature is ready for testing Performing the first test Mapping out new features Using your naivety while testing Running complete exploratory testing Using exploratory testing by necessity Checking exploratory test results Using curiosity in testing Summary Chapter 2: Writing Great Feature Specifications Advantages, disadvantages, and alternatives to feature specifications Alternatives to feature specifications Improving the handover from the product owner Understanding the requirements format Numbering Sections Requirement priority Improving requirement statements Specific Be precisely wrong rather than vaguely right Measurable Agreed Realistic Complete Independent Consistent Round-up of requirement statement improvements Improving requirement content Keep it obvious, cover everything Version requirements Describing configuration Completing the specification Functional test requirements Error cases User experience specification Security test requirements Maintainability Non-functional tests Documentation Round-up of specification sections The first draft of a feature specification Turning a specification into a test plan Countering arguments against specifications “This feature is too small to be specified” “We don’t know that behavior” “We don’t have time to write a specification” Summary Chapter 3: How to Run Successful Specification Reviews Why do we need a specification review? Advantages, disadvantages, and alternatives of specification review meetings Advantages of specification review meetings Disadvantages of specification review meetings Alternatives to specification review meetings Inviting the right people Scheduling the meeting Running the meeting Fixing incorrect requirements Opening the black box Setting a good tone for the meeting Prioritizing requirement testing Review meeting checklist Summary Chapter 4: Test Types, Cases, and Environments Understanding different levels of testing Test level examples Test ordering The testing pyramid Advantages and disadvantages of unit tests Advantages and disadvantages of integration tests Advantages and disadvantages of system tests Defining test cases Prescriptive and descriptive test steps Evaluating different test environments Using temporary test environments Using permanent staging areas Setting the correct version, configuration, and environment Performing systematic testing Testing in the release cycle Using curiosity and feedback Summary What we learned from Part 1, Preparing to Test Part 2 – Functional Testing Chapter 5: Black-Box Functional Testing Advantages and disadvantages of black-box testing Enabling new features Performing API testing Performing CRUD testing Testing deletion operations Testing update operations Testing creation operations Testing read operations Performing negative testing Identifying worse-case scenarios Understanding equivalence partitioning Using boundary value analysis Mapping dependent and independent variables Using decision tables Using cause-effect graphing Testing variable types Testing generic text input fields Testing email text input fields Testing numeric text input fields Testing password text input fields Testing time input fields Testing user-facing textboxes Testing file uploads Testing numeric processing Uncovering hidden defects Optimizing error guessing Using feedback Determining what to check Trading off precision versus brittleness in automated testing Test prioritization Comparing bugs and features Summary Chapter 6: White-Box Functional Testing Advantages and disadvantages of white-box testing Using code analysis Using static testing Code format Code conciseness Defensive coding Code functionality Unit tests Measuring code coverage Function coverage Calculating code coverage Statement coverage Decision coverage Understanding condition coverage Understanding condition/decision coverage Understanding modified condition/decision coverage Understanding multiple condition coverage Understanding parameter value coverage Understanding loop coverage Understanding state and path coverage Choosing appropriate test coverage Testing modules and messages API testing Considering states and transitions State transition test example N-switch coverage Checking asynchronous applications Duplicate messages Out-of-order messages Missing update messages Missing response messages Error guessing White-box checks Checking code inefficiencies Checking for two wrongs making a right Gray-box testing Summary Chapter 7: Testing of Error Cases Advantages and disadvantages of error testing Classifying expected versus unexpected problems Error handling philosophies Fail as early as possible Failing early in the release cycle Catching errors in the frontend Catching errors in the backend Catching errors written into the storage Catching stored errors Fail as little as possible Understanding defect cascading Prioritizing error case testing Testing beyond the limits Testing timeouts Understanding network degradation Sources of network degradation Testing degraded networks Data failures Fuzzing Giving user feedback on errors Summary Chapter 8: User Experience Testing Defining UX testing Advantages and disadvantages of UX testing Understanding usability and the feature specification Running UX reviews Setup versus ongoing usage Testing the user interface’s look and feel Interoperability Testing displays Scroll bars Using touch screens Choosing clear words Testing localization Testing time zones Ensuring accessibility Testing information display Displaying information in tables Visual elements Testing notifications Information display overview Testing user interaction Counting user steps Required combinations of steps Requiring restarts Providing freedom and feedback Hidden tools Irreversible operations Menu systems Accessing features in multiple ways Data structure design User interaction overview Testing the documentation Testing error feedback Preventing errors Presenting errors Avoiding spurious errors Policing errors Spurious errors Internal failures UX and loading Running usability studies Recorded sessions Questionnaires A/B testing Instrumentation Comparing bugs and feature requests Summary Chapter 9: Security Testing Advantages and disadvantages of security testing Attack types Discovering the attack area Running security scans Security scan results Running code analysis Upgrading everything Logging in Authentication Authorization Testing injection attacks SQL injection HTML injection Code injection Cross-site scripting attacks Validating file inputs Testing file uploads Testing file storage Testing web application security Information leakage 404 content injection Clickjacking Long password attack Host header attacks CSRF attacks CORS attacks Handling personally identifiable information Running a bug bounty program Avoiding security through obscurity Considering security beyond the application Summary Chapter 10: Maintainability Understanding maintainability use cases Advantages and disadvantages of maintainability testing Goals of maintainability Tools for observability Identifying system degradation Improving your system Debugging issues Designing monitoring Instrumentation Filtering alerts Performing active checks System resources versus customer outcomes Hierarchies of system failures Automatic problem reporting Monitoring overview Testing maintenance operations Worst-case maintenance operations Centralized commands Testing upgrade types Testing upgrade control Testing upgrade processes Client upgrades Recovery and rollback Testing transitions Testing maintenance operations overview Using logging Finding “the” log Understanding the debugging steps The importance of messages How to log messages The Goldilocks zone of logging Logging usability Logging overview Summary What we learned from Part 2, Functional Testing Part 3 – Non-Functional Testing Chapter 11: Destructive Testing Advantages and disadvantages of destructive testing Failover testing Classes of redundancy Performing failovers Failover error reporting Failover recovery System recovery System shutdowns Shutdown test plan Shutdown error reporting Killing processes Starting back up Communication failure Chaos engineering Backup and restore testing Summary Chapter 12: Load Testing Advantages and disadvantages of load testing Prerequisites Identifying load operations Dynamic versus static load Soak testing versus spikes of load Loading combinations Load test design Load runner architecture for client-server applications Other load runner architectures Load runner interfaces Load runner functions Raising system limits What to check during load testing Memory leaks System resource leaks Reporting results Defect hiding Race conditions and asynchronous systems Startup and shutdown Loading inefficiencies Loading messages between modules Performance testing Identifying bottlenecks Load tests in the release cycle Filtering load test errors Result sensitivity Loading reliability Debugging load test issues Summary Chapter 13: Stress Testing The advantages and disadvantages of stress testing Stress test architecture Breaching transaction rates Policed and unpoliced limits Identifying positive feedback loops Graceful degradation Limited resources Soak testing Spikes in load Testing queues Stress testing with errors What to check when stress testing Summary Conclusion Appendix – Example Feature Specification Index Other Books You May Enjoy
Donate to keep this site alive
How to download source code?
1. Go to: https://github.com/PacktPublishing
2. In the Find a repository… box, search the book title: Software Test Design: Write comprehensive test plans to uncover critical bugs in web, desktop, and mobile apps
, sometime you may not get the results, please search the main title.
3. Click the book title in the search results.
3. Click Code to download.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.