В моем мире, фреймворк это тот код, который занимается взаимодействием с окружением, логгированием и подготовкой данных. Сами тесты и "тестовый код" уже занимаются непосредственно логикой без реализации. То есть фреймворк умеет например десериализовывать объекты и класть их базу. А в тестах будет просто какой-то get и put. Соотвественно архитектура предполагает набор ограничений для упрощения самих тестов: заранее определнный формат подготовки тестовых данных, возможно набор конкретных действий, которые можно в тестах выполнять как шаги, формирование репортов, правила настройки окружения etc