Братцы,
Так прикольно смотреть, как иногда люди спотыкаются на ровном месте.
На мой взгляд, проблема кроется в словах.
Давайте разбираться по порядку.
Этап 1. Видение проекта.
Определяем что должно получаться в результате работы программы. Это бизнес-функции. Другими словами, какие бизнес-задачи должны решаться посредством программы.
Этап 2. Детализация требований.
Описываем механизмы, которыми мы будем пользоваться для решения бизнес-задач. Это user stories.
Эти же самые user stories, но имеющие различные схемы и более высокий уровень детализации и формализации - требования. Составная часть требования - use case.
Этап 3. Реализация.
На основании требований (user stories) пишем код программы - функциональность.
Этап 3а. Разработка тестов.
На основании требований формулируем тесты. Это можно делать до кода, одновременно с кодом и после кода. Но из-за того, что тесты вторичны по отношению к коду, поэтому мы ставим их в трейси-цепочку после функционала. Но! Это условно и не принципиально.
Этап 4. Проверка.
Выполняем тесты и документируем дефекты.
В результате получаем:
Бизнес-функция -> user stories -> требования -> функциональность -> тесты -> дефекты