Заинтересовался сабжем... Но, честно сказать, практически не могу представить как сделать так, чтобы сабж был полезен и написание тестов было не сложнее написания самой программы.
Попробуем рассмотреть на простом практическом примере. Предположим, нужно сделать систему для пополнения счета телефона.
Упростим максимально и разделим на этапы (укажем только 4 первых шага):
1. Ввод номера телефона и суммы пользователем (на сайте).
2. Проверка существования номера (XML-запрос к сервису оператора).
3. Проверка суммы (от ... до).
4. Занесение операции в базу данных (ИД, номер телефона, сумма, статус 0 (не оплачено)) и возврат ИД