На что обращаешь внимание при Code Review автотестов?

«На что обращаешь внимание при Code Review автотестов?» — вопрос из категории Софт-скиллы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

При ревью кода автотестов я фокусируюсь на качестве, стабильности и поддерживаемости. Вот мои основные пункты:

  1. Архитектура и читаемость:

    • Соблюдается ли выбранный паттерн (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;
  2. Стабильность (устойчивость к flaky-тестам):

    • Используются ли явные ожидания (Explicit Waits) вместо Thread.sleep()?
    • Есть ли обработка нестабильных элементов (например, повторные клики)?
    • Тесты изолированы? Не зависят от данных, оставленных другими тестами.
  3. Поддержка и отладка:

    • Есть ли информативное логирование (log.info("Нажимаю кнопку сохранения")) и скриншоты при падении?
    • Сообщения об ошибках понятны? Не просто ElementNotClickableException, а "Кнопка 'Сохранить' не стала кликабельной за 10 секунд".
  4. Эффективность и корректность:

    • Тестовые данные параметризованы? Нет ли хардкода.
    • Assert-проверки точные? Проверяется именно то, что нужно бизнес-сценарию.
    • Пример плохого assert: assertTrue(page.getTitle().contains("some")).
    • Пример хорошего assert: assertEquals("Заказ №123 создан", orderPage.getSuccessMessage()).

Главная цель ревью — убедиться, что тест не только проходит «здесь и сейчас», но и будет стабильно работать в CI и легко поддерживаться коллегами через полгода.