Design intimately involves testing. The analysis of the program during design suggests test cases. What cannot be proven must be asserted or tested.
During architectural design, requirements suggest pre- and post- conditions. Some designs bring up their own issues (like zero-divide). Every requirement generates at least one test case.
Termination is its own unique problem.