← Назад к вопросам

Что такое Keyword-Driven Testing?

1.3 Junior🔥 201 комментариев
#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Keyword-Driven Testing (KDD)?

Keyword-Driven Testing (KDD), также известное как таблично-ориентированное тестирование или действие-словное тестирование, — это продвинутая методология автоматизации тестирования, которая отделяет описание тестовых сценариев от их фактической программной реализации. В её основе лежит идея, что тест-кейсы могут быть описаны с помощью набора заранее определённых ключевых слов (keywords), каждое из которых представляет собой атомарное действие или проверку, а сама логика выполнения этих действий инкапсулирована в независимом слое кода.

Основные принципы и архитектура KDD

Модель KDD обычно строится по трехуровневой архитектуре:

  1. Уровень данных (Data Layer / Test Scripts): Это, по сути, входные данные для теста. Сценарии описываются в виде таблиц (часто в Excel, CSV или XML), где строки — это шаги теста, а столбцы — это ключевые слова и их параметры.
    **Пример таблицы (представление в Excel или CSV):**

    | Шаг | Ключевое слово       | Параметр 1       | Параметр 2       | Ожидаемый результат   |
    |-----|----------------------|------------------|------------------|----------------------|
    | 1   | `OpenBrowser`        | Chrome           |                  |                      |
    | 2   | `NavigateToURL`      | https://example.com |                |                      |
    | 3   | `InputText`          | id=username      | testUser         |                      |
    | 4   | `InputText`          | id=password      | Pass123          |                      |
    | 5   | `ClickElement`       | name=login       |                  |                      |
    | 6   | `VerifyTextPresent`  | Добро пожаловать |                  | Текст отображается   |

  1. Уровень обработки ключевых слов (Keyword Layer / Function Library): Это "мозг" фреймворка. На этом уровне реализованы функции или методы, которые выполняют действия, соответствующие каждому ключевому слову. Эти функции написаны на целевом языке программирования (например, Python, Java, C#).

    # Пример библиотеки ключевых слов на Python с использованием Selenium WebDriver
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    class KeywordLibrary:
        def __init__(self, driver):
            self.driver = driver
    
        def open_browser(self, browser_name):
            if browser_name.lower() == "chrome":
                self.driver = webdriver.Chrome()
            # ... другие браузеры
    
        def navigate_to_url(self, url):
            self.driver.get(url)
    
        def input_text(self, locator, text):
            locator_type, locator_value = locator.split('=')
            by = getattr(By, locator_type.upper())
            self.driver.find_element(by, locator_value).send_keys(text)
    
        def click_element(self, locator):
            # ... логика поиска и клика
            pass
    
        def verify_text_present(self, expected_text):
            page_source = self.driver.page_source
            assert expected_text in page_source, f"Текст '{expected_text}' не найден на странице"
    
  2. Исполняющий движок (Test Execution Engine): Это основная программа, которая читает сценарии из уровня данных (таблицы), интерпретирует каждую строку, находит соответствующую функцию в библиотеке ключевых слов и исполняет её, передавая необходимые параметры.

    # Упрощённый пример движка
    import csv
    
    def run_test_script(script_file, keyword_lib):
        with open(script_file, 'r', encoding='utf-8') as file:
            reader = csv.DictReader(file)
            for row in reader:
                keyword = row['Ключевое слово']
                param1 = row['Параметр 1']
                param2 = row['Параметр 2']
    
                # Получаем метод из библиотеки по имени ключевого слова
                keyword_method = getattr(keyword_lib, keyword.lower())
    
                # Вызываем метод с параметрами (фильтруем пустые)
                args = [p for p in [param1, param2] if p]
                keyword_method(*args)
    

Ключевые преимущества и недостатки

Преимущества:

  • Низкий порог вхождения для тестировщиков: Автоматизацию могут создавать специалисты с минимальными навыками программирования, так как они работают с понятными таблицами и ключевыми словами.
  • Высокая реюзабельность: Один раз созданная библиотека ключевых слов (например, Login, CreateOrder) может использоваться в бесчисленном количестве тестовых сценариев.
  • Лёгкость поддержки и модификации: Изменение бизнес-логики часто требует правки только в одном месте — в функции ключевого слова. Сами тестовые таблицы остаются неизменными.
  • Разделение обязанностей: Стратегическое проектирование тестов (таблицы) отделено от технической реализации (код). Это позволяет эффективно распределять работу в команде.
  • Читаемость и прозрачность: Таблицы с ключевыми словами часто более наглядны и понятны для всех членов команды (менеджеров, бизнес-аналитиков).

Недостатки:

  • Высокие начальные затраты: Требуется значительное время и экспертиза для проектирования и разработки устойчивого фреймворка, библиотеки ключевых слов и движка.
  • Сложность отладки: Когда тест падает, может быть нетривиально определить, проблема в данных таблицы, в реализации ключевого слова или в самом движке исполнения.
  • Избыточность для простых проектов: Для небольших приложений с ограниченным количеством тестов создание полноценного KDD-фреймворка может быть неоправданно сложным.
  • Зависимость от качества библиотеки ключевых слов: Если базовая библиотека ненадёжна или плохо спроектирована, это скажется на всех тестах.

Применение и инструменты

KDD идеально подходит для:

  • Крупных проектов с долгим жизненным циклом.
  • Команд, где над автоматизацией работают как программисты (разрабатывают фреймворк), так и ручные тестировщики (пишут сценарии).
  • Тестирования сложных бизнес-процессов, которые можно описать последовательностью стандартных действий.

Популярные инструменты, поддерживающие или реализующие этот подход: Robot Framework (является ярчайшим примером), Selenium IDE (с экспортом в KDD-форматы), HP UFT/QTP, а также множество кастомных фреймворков, построенных поверх Selenium или Appium.

Вывод: Keyword-Driven Testing — это мощный подход к проектированию автоматизации, который превращает создание тестов в более управляемый и масштабируемый процесс. Он не является инструментом сам по себе, а скорее архитектурной парадигмой, которая при грамотной реализации значительно повышает эффективность команды автоматизации, особенно в условиях высокой сложности бизнес-логики и необходимости тесного взаимодействия между техническими и нетехническими специалистами.

Что такое Keyword-Driven Testing? | PrepBro