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)