Think diabolically! Think of every possible thing a user could possibly do with your
system to demolish the software. You need to make sure your program is robust – in that
it can properly respond in the face of erroneous user input. This type of testing is called
robustness testing, whereby test cases are chosen outside the domain to test robustness to
unexpected, erroneous input [3], and is included in defensive testing which includes tests
under both normal and abnormal conditions [5]. Look at every input. Does the program
respond “gracefully” to these error conditions?