Ответ
При ревью кода автотестов я фокусируюсь на качестве, стабильности и поддерживаемости. Вот мои основные пункты:
-
Архитектура и читаемость:
- Соблюдается ли выбранный паттерн (Page Object, Screenplay)?
- Локаторы вынесены в константы или Page Elements? Нет ли «магических строк» прямо в шагах теста.
-
Пример:
// Плохо: Локатор в методе теста driver.findElement(By.xpath("//div[@class='b-button']")).click(); // Хорошо: Локатор в Page Object @FindBy(css = "[data-qa='submit-button']") private WebElement submitButton;
-
Стабильность (устойчивость к flaky-тестам):
- Используются ли явные ожидания (Explicit Waits) вместо
Thread.sleep()? - Есть ли обработка нестабильных элементов (например, повторные клики)?
- Тесты изолированы? Не зависят от данных, оставленных другими тестами.
- Используются ли явные ожидания (Explicit Waits) вместо
-
Поддержка и отладка:
- Есть ли информативное логирование (
log.info("Нажимаю кнопку сохранения")) и скриншоты при падении? - Сообщения об ошибках понятны? Не просто
ElementNotClickableException, а"Кнопка 'Сохранить' не стала кликабельной за 10 секунд".
- Есть ли информативное логирование (
-
Эффективность и корректность:
- Тестовые данные параметризованы? Нет ли хардкода.
- Assert-проверки точные? Проверяется именно то, что нужно бизнес-сценарию.
- Пример плохого assert:
assertTrue(page.getTitle().contains("some")). - Пример хорошего assert:
assertEquals("Заказ №123 создан", orderPage.getSuccessMessage()).
Главная цель ревью — убедиться, что тест не только проходит «здесь и сейчас», но и будет стабильно работать в CI и легко поддерживаться коллегами через полгода.