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

Что такое KDT?

2.2 Middle🔥 191 комментариев
#Soft skills и карьера

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

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

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

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

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

Ключевые компоненты KDT

  • Ключевые слова (Keywords): Это "строительные блоки" тестов. Каждое ключевое слово представляет собой атомарное действие, например, OpenBrowser, EnterText, ClickButton, VerifyText. Они скрывают сложность реального кода (например, поиск элемента на странице через XPath и выполнение клика).
  • Таблица данных (Data Table) или Тестовый скрипт: Обычно это Excel-файл, CSV или таблица в среде исполнения, где тесты описываются в виде последовательности ключевых слов и соответствующих им параметров. Это — "сценарий" теста, понятный даже не-техническим специалистам.
  • Драйвер (Driver) или Интерпретатор (Interpreter): Это "движок", который читает таблицу данных, выполняет сопоставление ключевых слов с соответствующими функциями или методами в коде и исполняет тест.
  • Функциональные скрипты (Function Libraries): Это библиотеки кода (например, на Python, Java), где реализована логика каждого ключевого слова. Один скрипт может содержать реализацию для нескольких ключевых слов.

Пример KDT в действии

Представьте таблицу Excel для теста логина:

Test StepKeywordParameter1Parameter2Parameter3
1OpenBrowserChrome
2NavigateTohttps://example.com/login
3EnterTextusername_fieldtestUser
4EnterTextpassword_fieldPa$$w0rd
5ClickButtonlogin_button
6VerifyTextwelcome_messageДобро пожаловать
7CloseBrowser

Драйвер читает эту таблицу построчно. Для строки с ключевым словом EnterText он вызывает соответствующую функцию из библиотеки.

Пример реализации ключевого слова EnterText на Python с использованием Selenium:

# Файл keyword_library.py
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class KeywordLibrary:
    def __init__(self, driver):
        self.driver = driver

    def enter_text(self, locator, text):
        """
        Реализация ключевого слова 'EnterText'.
        locator: идентификатор элемента (например, 'username_field')
        text: текст для ввода
        """
        # Маппинг "логических имен" на реальные локаторы (лучше вынести в отдельный файл)
        locators_map = {
            "username_field": (By.ID, "username"),
            "password_field": (By.ID, "password"),
        }

        by, value = locators_map[locator]
        element = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((by, value))
        )
        element.clear()
        element.send_keys(text)
        print(f"Введён текст '{text}' в поле {locator}")

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

  • Высокая читаемость: Тестовые сценарии выглядят как простые инструкции.
  • Переиспользуемость: Ключевые слова (Login, CreateOrder) могут использоваться в сотнях тестов без дублирования кода.
  • Разделение обязанностей: Тест-аналитики или бизнес-пользователи могут разрабатывать и читать тестовые таблицы, а инженеры по автоматизации — реализовывать и поддерживать библиотеки ключевых слов.
  • Упрощённая поддержка: При изменении в приложении (например, изменился локатор кнопки) правки вносятся в одном месте — в функции ключевого слова или в маппинге локаторов, а не в каждом тесте.
  • Независимость от инструментов: В теории, можно сменить инструмент автоматизации (с Selenium на Playwright), переписав только библиотеки ключевых слов, в то время как тестовые таблицы останутся неизменными.

Недостатки и сложности KDT

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

Сравнение с Data-Driven Testing (DDT) и Hybrid Testing

  • DDT фокусируется на отделении тестовых данных от скриптов. Один скрипт выполняется с множеством наборов данных.
  • KDT фокусируется на отделении действий (ключевых слов) от скриптов.
  • Гибридный подход — это чаще всего KDT + DDT. Ключевые слова управляют логикой, а тестовые данные (например, разные логины/пароли) подаются в эти ключевые слова из внешних источников, что делает подход чрезвычайно мощным.

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

Что такое KDT? | PrepBro