Testing is completed to ensure that the software/application does what it is supposed to do
True !! But it’s not that...The program should also not do what it is not supposed to do. Nice test cases are the only way to establish a reasonable level of confidence on the program product. The Tester should think of all possible scenarios based on the test requirements or test plan. Though there's various methods to prepare a gigantic
number of test cases like Equivalence Partioning, Boundary Value Analysis and so on,
a lot depends on one's own intuition to come up with some nice cases which reveals defects in the program.