-
What?
-
Opposite of Positive Testing
- Challenges pre-conditions
- Challenges usage modes
- Adds Constraints & Limitations
-
In Short
- Here, you don't fulfil at least one condition the software needs in order to work at all.
-
Examples
- Not giving enough memory
Ex: Operating in a low memory (RAM or HDD Space) environment.
- Not giving valid inputs.
Ex: Entering an invalid IP Address in IP Address field.
- Not doing the correct connections.
Ex: Incorrect connection to IO Pins
- Blocking certain parts of the system.
Ex: Disabling JS in Browser
-
What it is NOT?
- Positive Testing
- Edge Case Testing
- Corner Case Testing
- Unusual Operation Testing
- Important for providing good test coverage for any feature or functionality.
-
What's Different Compared to Positive Testing?
-
Positive Testing
- Positive testing means to test while AFFIRMING every required condition.
-
Negative Testing
- Negative testing means to NEGATE at least ONE required condition.
-
Is usually NOT based on:
- Documented Requirements
- Required conditions
-
Focuses on:
- Undocumented requirements
- Discovering unknown Information
- Ensuring graceful failures or exits
- Risks from the app's outer eco-system
- Challenging the boundaries and limits
- Unexpected usage patterns & Error Proofing
-
Safeguarding app from potential attacks
-
Ex:
- SQL Injections
- XSS Attacks
- JS Script Attacks, etc.
- Compliments positive testing in increasing coverage.
-
Key Activities for Systematic Negative Testing
-
Preparation
- Identify Product Constraints
-
Research about Failures
- Social Media
- Create Alerts
- Community Forums
- #Software #Failures
-
Refer to Requirements
-
Find Boundaries
- Valid
- Outside
-
Find Class Partitions
- Valid
- Invalid
-
Consider Negative Personas
- Hackers
- Attackers
- Script Kiddies
- Unintentional Mistake
-
Work towards Constraints & Conditions
- Identify them
-
Reverse them
- One at a time
- Multiple at a time
-
Remove them
- One at a time
- Multiple at a time
-
Verify Error Handling & Check for
- Error Control
- Error Protection | Prevention
- Meaningful Messages
- Error Correction | Guidance
- Error Recovery
- System Recovery
-
Tools & Resources
-
Browser Extensions
- Counterstring
- Bug Magnet
-
Good Resources
- GitHub - minimaxir/big-list-of-naughty-strings: The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data.
- Common Software Errors – Checklist - Testing Titbits | Rahul Parwal
- Software Bug Stories