Мы хотим протестировать в первую очередь логику работы, а не сам код. Если вдруг код окажется не верным, но при этом покрыт тестами - тесты ничего не покажут. Вполне может быть ситуация, когда a&&b и a&&!b возвращают одно и то же и программист решил сократить эту ветку. А может быть они возвращают временно похожие значения, которые могут потом поменяться и тогда это логическая ошибка.
если я правильно понял то логика в этом такая что эта стадия 4 может в жизни и не наступит никогда, но если, вдруг, случится такое что наступило, то программа должна уметь обрабатывать эту стадию иначе будет крахнута...у меня в работе часто такое тестируется