Почему стоит переносить часть шагов на нижний уровень интерфейса?

Здравствуйте.
Слышал мнение, что при автоматизации тестирования UI надо часть шагов переносить на уровень ниже (API, BD, HTTP).
Например, при тестировании создания пользователя, создать пользователя через UI, а авторизоваться под ним через API.
Меня такой подход смущает, потому что если мне удалось авторизоваться через API, то не факт, что я смогу это сделать через UI. Например страница будет 404, или пропадет поле для ввода пароля.

Плюс такого подхода, это сокращение времени выполнения тестов. Но минусы, это пропуск важного функционала и для его заполнения придется все равно писать новые тесты.

Какие ваши мнения?

имхо вы путаете мухи и котлеты
если есть задача писать UI автотесты, кейс - логин, то логиниться нужно через UI
создание пользователя которым нужно залогиниться это подготовка данных для тестов, И то откуда вы их берете (создан пользователь ранее, разворачивание базы, создание на лету etc ) это плод вашей фантазии не столь важно

1 лайк

Смысл в том, чтобы переносить на уровень ниже те шаги, которые не имеют отношения к тестируемой функциональности в самом тесте.

Другими словами если вы тестируете создание пользователя, то нужно создавать его по честному, так как это делает пользователь системы. Если тестируете авторизацию существующим пользователем, тогда создать пользователя для теста рациональнее через api.

1 лайк

На нижний уровень переносятся основные пре кондишены (которые покрываются через ui), для экономии времени, поскольку ui тесты и так не стабильные))

Доречі такий перенос дає додатковий бонус. Якщо скажімо обов’язкові поля для створення юзера відсутні (баг) а API робочий то впаде лише UI тест і чітко покаже де проблема.