Так как задача описана гипотетически, без конкретного примера, опишу его сам, чтобы проще было применю достаточно широкую, но не совсем тупую технологию - AWS:
Представим, я AWS Cloud тестировщик, и я проверяю Имплементацию NAT Gateway. Например, его создание
Вот несколько предикатов, описывающих контекст работы с NAT Gateway (я подглядел в документации, можете и вы посмотреть
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating):
required:
NAT Gateway невозможно сделать без NAT.
NAT Gateway входит в Subnet
Nat Gateway ассоциируется с одним и только одним Elastic IP.
optional:
Nat Gateway имеет лимит на кол-во в определенной Availiability zone.
из описанного видно, что тестируя nat gateway на создание, так или иначе будет one-to-many / one-to-one связей с другими сущностями.
реализация теста:
контекст (в данном представляется паттерном data provider):
получение токена пользователя у которого есть VPC, nat. реализуется посредством bd запроса, например. Может быть ORM обертка fluent стиля
db().Get_user().with("vpc").having("nat").get_token()
далее из него можно проверить функционал следующим образом:
UI - иньекция токена в сессию (здесь мы упускаем необходимую 2FA у AWS для простоты случая)
API - подпись запросов в коде формированием Bearer token
положительные сценарии:
с указанием валидных required параметров
негативные сценарии:
с указанием невалидных requried параметров (несответствие типа \ маски)
с указанием недостаточного кол-ва requried параметров
Т.е. формально тестирование через код будет осуществляться путем нахождения юзера с нужными для теста критериями (контекст) и выполнение атомарной операции добавления NAT.
Если представить, что так называемое в условии задачи"много разных компонентов, от которых зависит создание большого компонента" для NAT есть много других компонентов для создания, то, в зависимости от линейности этих связей в части датапровайдера (в моем случае ORM запроса к бд) с развитием продукта просто количество токенов бы увеличилось с одного до N, если важно протестировать, что например NAT нельзя создавать, если баланса на счете нет.
так называемая архитектурная сложность в таком подходе будет расти в требовании получения более изощренной сессии пользователя (т.е. формально имеющей разные состояния этих компонент в момент теста). В зависимости дремучести и нагроможденности связей между моделями бизнес логики, датапровайдер может быть тривиальным, а можем быть и сложнее. Но общая идея такая, что тестируя такие гипотезы, очень удобно пользоваться декларативным описанием сессии. При желании, обертку ORM можно написать с получением продукта пермутаций параметров и начать тестить расширенный сет.