Designing good test cases is a complex art. The complexity comes from three sources:

1. Test cases help us discover information. Different types of tests are more effective for different classes of information.2. Test cases can be “good” in a variety of ways. No test case will be good in all of them.3. People tend to create test cases according to certain testing styles, such as domain testing or risk-based testing. Good domain tests are different from good risk-based tests. (Cem Kaner)