What to tests?
- Happy path
- Sad path
- Valid input
- Valid edge cases (0, -1, empty string, etc.)
- Broken input (string instead of number, invalid values, too long input, etc.)
- Extreme load
- System failure (power failure, network outage, lack of memory, lack of disk, ...)
- Third-party error or failure - How does your system work if the 3rd party API returns rubbish?