Как проверить асинхронность запросов?
Что проверяют
Под асинхронностью тут понимают два сценария, и интервьюер ждёт, что вы их разведёте: запросы из интерфейса не блокируют страницу, или сервер принимает задачу и доделывает её в фоне. Следом обычно спрашивают, как автоматизировать такую проверку без sleep и нестабильных тестов.
Как отвечать
Уточните, какой случай имеется в виду, и назовите техники:
- фронтенд вручную: в DevTools на вкладке Network смотрите водопад, независимые запросы должны идти параллельно, а не лесенкой. Включите троттлинг сети и убедитесь, что интерфейс живой: есть лоадер, кнопки не зависают, остальные блоки отрисованы;
- гонки и порядок ответов: быстро переключите фильтр несколько раз. Устаревший ответ, пришедший позже, не должен затереть свежие данные. Задержать конкретный ответ можно через Charles, Fiddler или
page.routeв Playwright; - двойные действия: двойной клик по «Оплатить», повтор запроса после таймаута. Заказ не должен создаться дважды, это вопрос идемпотентности;
- фоновая обработка на бэкенде: API отвечает
202 Acceptedс идентификатором задачи, дальше статус проверяют поллингом, вебхуком или по записи в базе. Проверьте промежуточные статусы, ошибку и таймаут; - автотесты: ждать условие, а не время. В Java это Awaitility (
await().atMost(10, SECONDS).untilAsserted(...)) вместе с REST Assured, в Playwright автоожидание вexpect(locator).toBeVisible()иpage.waitForResponse, в Postman цикл поллинга в Collection Runner черезsetNextRequest.
Если обработка идёт через очередь, загляните и в брокер: ушло ли сообщение, не осело ли оно в dead letter очереди после ошибки.
Где спотыкаются
Ставят Thread.sleep(5000) или waitForTimeout. Тест то падает на медленном стенде, то тратит лишние минуты на быстром.
Проверяют только счастливый путь. Самые неприятные баги асинхронности прячутся в отменах, повторах, таймаутах и ответах, пришедших не в том порядке.
Вставляют в функциональный тест жёсткий порог времени ответа. Скорость отклика это задача нагрузочного тестирования, а в функциональном прогоне такая проверка даёт случайные падения.