Что такое DRY, KISS, YAGNI?qa-39

1. DRY - Не повторяйся

Суть принципа

Каждая часть знания должна иметь единственное, однозначное представление в системе.

Примеры применения в QA

Плохо (нарушение DRY):

// Тест 1
void testLoginSuccess() {
    driver.findElement(By.id("username")).sendKeys("user1");
    driver.findElement(By.id("password")).sendKeys("pass1");
    // ...остальные шаги
}

// Тест 2
void testLoginFailure() {
    driver.findElement(By.id("username")).sendKeys("wrong");
    driver.findElement(By.id("password")).sendKeys("wrong");
    // ...повторение тех же действий
}

Хорошо (соблюдение DRY):

class LoginSteps {
    void performLogin(String user, String pass) {
        driver.findElement(By.id("username")).sendKeys(user);
        driver.findElement(By.id("password")).sendKeys(pass);
    }
}

// Тесты теперь используют общий метод
void testLoginSuccess() {
    new LoginSteps().performLogin("user1", "pass1");
}

2. KISS - Делай проще

Суть принципа

Системы работают лучше всего, если они остаются простыми, а не усложняются.

Примеры в тестировании

Плохо (излишняя сложность):

@Test
void checkSearchResults() {
    List<WebElement> results = driver.findElements(
        By.xpath("//div[contains(@class,'result') and not(contains(@style,'hidden'))]"));
    // Сложная логика проверки
}

Хорошо (простое решение):

@Test
void checkSearchResults() {
    List<WebElement> results = driver.findElements(By.cssSelector(".result:visible"));
    assertFalse(results.isEmpty());
}

3. YAGNI - Вам это не понадобится

Суть принципа

Не добавляйте функциональность, пока она действительно не понадобится.

Примеры из практики

Плохо (преждевременная оптимизация):

// Создание сложной системы отчетности
// для проекта, который только начался
class AdvancedReportGenerator {
    void generatePDF() { /*...*/ }
    void generateExcel() { /*...*/ }
    void generateHTML() { /*...*/ }
}

Хорошо (минимально достаточное решение):

// Простое логирование результатов пока достаточно
class SimpleLogger {
    void logToConsole(String message) {
        System.out.println(message);
    }
}

Сравнительная таблица

Принцип Основная идея Польза для QA
DRY Избегай дублирования Легче поддерживать тесты, меньше ошибок
KISS Упрощай решения Тесты понятнее, стабильнее
YAGNI Не делай "на будущее" Экономия времени, фокус на важном

Практическое применение в тест-дизайне

DRY в тест-кейсах

1. Использование шаблонов для похожих проверок
2. Вынесение общих шагов в отдельные методы
3. Параметризованные тесты

KISS в отчетах

1. Четкие названия багов
2. Простые шаги воспроизведения
3. Минимально достаточная информация

YAGNI в тестовом покрытии

1. Сначала покрываем основные сценарии
2. Не тестируем маловероятные edge-cases на ранних этапах
3. Постепенное расширение покрытия

Резюмируем

DRY:

  • Устраняет дублирование
  • Упрощает поддержку
  • Особенно важен для автотестов

KISS:

  • Делает тесты понятными
  • Уменьшает хрупкость проверок
  • Применим к документации и отчетам

YAGNI:

  • Фокусирует на актуальных задачах
  • Экономит ресурсы
  • Предотвращает over-engineering

Эти принципы особенно важны для:

  • Разработки тестовых фреймворков
  • Поддержки тестовой документации
  • Планирования тестового покрытия
  • Коммуникации в команде