Что такое принцип KISS в контексте написания автотестов?

«Что такое принцип KISS в контексте написания автотестов?» — вопрос из категории SOLID и принципы программирования, который задают на 28% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте QA Automation, принцип KISS (Keep It Simple, Stupid) означает, что каждый тест должен решать одну четкую задачу максимально простым и прямолинейным способом. Сложность — главный враг стабильности и поддерживаемости тестовой базы.

Как я применяю KISS:

  1. Один тест — одна ответственность. Тест проверяет один конкретный сценарий или бизнес-правило.
  2. Минимум шагов и проверок (assertions). Я включаю только те шаги, которые абсолютно необходимы для проверки целевого функционала.
  3. Прямые и понятные селекторы. Использую data-testid атрибуты, а не сложные XPath, зависящие от верстки.
  4. Изоляция тестов. Каждый тест независим и сам управляет своими тестовыми данными (setup/teardown).

Пример нарушения и следования принципу:

// НЕ KISS: Тест делает слишком много, смешивает логику, сложные условия.
@Test
public void testUserCheckoutFlow() {
    // Шаг 1: Логин
    login("user", "pass");
    assert dashboard.isLoaded();
    // Шаг 2: Поиск товара
    search("laptop");
    assert searchResults.hasItems();
    // Шаг 3: Добавление в корзину... и т.д.
    // Слишком длинный и хрупкий тест. Если падает логин, мы не проверим checkout.
}

// KISS: Разбиваем на несколько простых, сфокусированных тестов.
@Test
public void testLoginWithValidCredentials() {
    LoginPage loginPage = new LoginPage(driver);
    HomePage homePage = loginPage.login(VALID_USER, VALID_PASS);
    assertTrue("Login should be successful", homePage.isUserMenuDisplayed());
}

@Test
public void testAddItemToCartFromCatalog() {
    // Предусловие: пользователь уже на странице каталога
    CatalogPage catalog = new CatalogPage(driver);
    catalog.addFirstItemToCart();
    assertEquals("Cart badge should show 1 item", "1", catalog.getCartBadgeCount());
}

Простые тесты легче читать, отлаживать, и они реже ломаются из-за незначительных изменений в приложении.

Видео-ответы