Проблема подготовки тестовых данных в системе со сложным воркфлоу

Здравствуйте, хотелось бы задать философоский вопрос.
Допустим, есть приложение, в котором некоторые сущности должны пройти некий воркфлоу. Соответственно, есть тесты, которые тестируют эти сущности в разных стадиях этого воркфлоу.
Т.е. Изолированные тесты должны работать с данными, которые раз за разом проходят одни и те же шаги, прежде чем станут пригодными для данного теста.
Как я решал в своих практиках:

  1. Вставлял в базу подготовленные данные.
  • быстро
  • поддержка может стать адом
  • при падении теста очень тяжело разобраться в данных
  1. Писал гибкие скрипты, которые подготавливали данные (через api)
  • очень все нативно и читабельно
  • много времени занимает

Кроме того понимаю, что есть практики с дата сидингом и использованием существующих в системе данных, но эти подходы отметаю сразу.

Если кто знает другие решения или может поделиться опытом по существующим, буду благодарен.