Можно ли автоматизировать процесс подтверждения параметров
Что проверяют
Формулировка размытая намеренно: интервьюер смотрит, уточните ли вы, о каких параметрах речь, и умеете ли отличить проверку, которую выгодно автоматизировать, от разовой. Следом обычно спрашивают, как вы встроите это в CI и откуда тест возьмёт ожидаемые значения.
Как отвечать
Начните с уточнения: параметры ответа API, настройки конфигурации, значения полей в интерфейсе или характеристики устройства. Дальше ответ «да, если выполнены три условия»: ожидаемое значение формализуется, проверка повторяется регулярно, а результат можно получить программно.
Подходы стоит назвать вместе с инструментами:
- параметризованные тесты: один сценарий на таблицу входов и ожиданий,
@pytest.mark.parametrizeв pytest или@ParameterizedTestс@CsvSourceв JUnit 5; - валидация по схеме: ответ API сверяется с JSON Schema или OpenAPI, так ловятся лишние, пропавшие и сменившие тип поля;
- контрактные тесты: Pact фиксирует, какие параметры потребитель ждёт от сервиса;
- проверка конфигураций: скрипт в пайплайне сравнивает настройки окружения с эталоном до деплоя;
- граничные значения и классы эквивалентности: дают осмысленную таблицу данных, а не случайный набор чисел.
Про оракул скажите отдельно: ожидаемые значения берутся из требований или эталонного файла, а не копируются из текущего ответа системы. Иначе тест закрепит баг.
Не всё стоит автоматизировать. Разовую сверку после миграции дешевле сделать руками или SQL-запросом, а автотест окупается, когда проверка идёт в каждой сборке.
Где спотыкаются
Отвечают «да, Selenium» без уточнения, что проверяется. Для параметров API браузер не нужен, через интерфейс это медленно и хрупко.
Зашивают ожидаемые значения прямо в код теста. Через месяц требования меняются, и никто не помнит, какое число правильное.
Не отделяют динамические поля: id, дату создания, токены. Тест падает на каждом прогоне, его помечают нестабильным и перестают смотреть.