Фреймворк, управляемый ключевыми словами и данными, в Selenium: что это такое и как его создать?

В мире автоматизированного тестирования веб-приложений Selenium WebDriver занимает лидирующие позиции. Для организации и структурирования тестовых скриптов используются различные типы фреймворков. Два популярных подхода – фреймворки, управляемые ключевыми словами (Keyword-Driven Framework) и данными (Data-Driven Framework).

Что такое фреймворк, управляемый ключевыми словами (Keyword-Driven Framework)?

Фреймворк, управляемый ключевыми словами (также известный как таблично-ориентированное тестирование), – это методология автоматизации тестирования, в которой действия, выполняемые в тестовом скрипте, определяются ключевыми словами. Каждое ключевое слово представляет собой определенную операцию, например, «открыть браузер», «ввести текст», «нажать кнопку». Тестовые сценарии создаются путем комбинирования этих ключевых слов в определенной последовательности.

Что такое фреймворк, управляемый данными (Data-Driven Framework)?

Фреймворк, управляемый данными, позволяет выполнять один и тот же тестовый скрипт с различными наборами входных данных. Данные хранятся во внешних источниках (например, Excel, CSV, JSON) и считываются тестовым скриптом во время выполнения. Это особенно полезно для проверки функциональности с различными граничными значениями или наборами данных.

Преимущества и недостатки каждого подхода

  • Keyword-Driven:
    • Преимущества: Повышенная модульность, возможность повторного использования кода, упрощение поддержки, возможность написания тестов нетехническими специалистами.
    • Недостатки: Требуется значительная начальная настройка, возможная сложность при разработке сложных ключевых слов.
  • Data-Driven:
    • Преимущества: Упрощение тестирования с различными наборами данных, сокращение объема кода, улучшение читаемости.
    • Недостатки: Может быть сложнее для реализации сложных тестовых сценариев, зависимость от структуры данных.

Комбинированный подход: фреймворк, управляемый ключевыми словами и данными

Комбинированный фреймворк, управляемый ключевыми словами и данными, объединяет преимущества обоих подходов. Он позволяет определять действия с помощью ключевых слов и выполнять эти действия с различными наборами данных. Это обеспечивает максимальную гибкость и масштабируемость тестового решения.

Архитектура фреймворка, управляемого ключевыми словами и данными

Описание основных компонентов: файлы с ключевыми словами, файлы с данными, драйвер скриптов, объекты страниц

  • Файлы с ключевыми словами: Содержат список ключевых слов и их соответствие действиям Selenium WebDriver. Обычно это Excel или CSV файлы.
  • Файлы с данными: Содержат наборы входных данных, используемых в тестовых сценариях. Могут быть в форматах Excel, CSV, JSON.
  • Драйвер скриптов (Script Driver): Основной компонент фреймворка, который считывает ключевые слова и данные из соответствующих файлов и выполняет соответствующие действия Selenium WebDriver.
  • Объекты страниц (Page Objects): Представляют собой классы, инкапсулирующие элементы и методы взаимодействия со страницами веб-приложения. Это способствует повторному использованию кода и упрощает поддержку.

Взаимодействие компонентов между собой

Драйвер скриптов считывает ключевые слова и данные. Ключевые слова определяют, какие действия необходимо выполнить, а данные предоставляют входные параметры для этих действий. Драйвер скриптов использует объекты страниц для взаимодействия с элементами веб-приложения.

Схема архитектуры фреймворка

(Текстовое описание, в реальной статье здесь была бы схема)

  1. Файлы данных (Excel, CSV, JSON) -> Драйвер скриптов
  2. Файлы ключевых слов (Excel, CSV) -> Драйвер скриптов
  3. Драйвер скриптов -> Объекты страниц
  4. Объекты страниц -> Selenium WebDriver -> Веб-приложение

Шаги по созданию фреймворка, управляемого ключевыми словами и данными в Selenium

Определение ключевых слов и их соответствие действиям Selenium WebDriver

Необходимо определить набор ключевых слов, которые будут использоваться для описания действий в тестовых сценариях. Каждое ключевое слово должно быть четко сопоставлено с конкретным действием Selenium WebDriver. Например:

  • openBrowser -> driver = webdriver.Chrome()
  • enterText -> element.send_keys(value)
  • clickElement -> element.click()

Создание файлов с ключевыми словами (например, Excel, CSV)

Файлы с ключевыми словами содержат информацию о том, какие действия необходимо выполнить для каждого тестового шага. Обычно они имеют следующую структуру:

| Test Case ID | Keyword | Element Locator | Data |
|—————|————|——————|————|
| TC001 | openBrowser| | |
| TC
001 | navigate | | url |
| TC001 | enterText | usernamefield | user123 |
| TC001 | enterText | passwordfield | pass456 |
| TC001 | clickElement| loginbutton | |

Создание файлов с данными (например, Excel, CSV, JSON)

Файлы с данными содержат наборы входных данных, используемых в тестовых сценариях. Они могут иметь различную структуру в зависимости от потребностей тестирования.

Реклама

Пример JSON:

[
  {
    "test_case_id": "TC_001",
    "username": "user123",
    "password": "pass456"
  },
  {
    "test_case_id": "TC_002",
    "username": "user789",
    "password": "pass012"
  }
]

Разработка драйвера скриптов, считывающего ключевые слова и данные и выполняющего соответствующие действия

Драйвер скриптов является ядром фреймворка. Он считывает ключевые слова и данные, определяет соответствующие действия Selenium WebDriver и выполняет их.

Пример реализации фреймворка

Структура проекта и файлов

project_root/
├── keywords.xlsx
├── data.json
├── page_objects/
│   └── login_page.py
├── script_driver.py
└── utils.py

Пример файла с ключевыми словами (с объяснением полей)

Файл keywords.xlsx:

| Test Case ID | Keyword | Element Locator | Data Column |
|—————|————|——————|————-|
| TC001 | openBrowser| | |
| TC
001 | navigate | | URL |
| TC001 | enterText | usernamefield | Username |
| TC001 | enterText | passwordfield | Password |
| TC001 | clickElement| loginbutton | |

  • Test Case ID: Идентификатор тестового случая.
  • Keyword: Ключевое слово, определяющее действие.
  • Element Locator: Локатор элемента, с которым выполняется действие.
  • Data Column: Название столбца в файле данных, содержащего значение для действия.

Пример файла с данными (с объяснением полей)

Файл data.json:

[
  {
    "Test Case ID": "TC_001",
    "URL": "https://example.com/login",
    "Username": "testuser",
    "Password": "password123"
  }
]
  • Test Case ID: Идентификатор тестового случая (должен совпадать с Test Case ID в файле ключевых слов).
  • URL: URL страницы для навигации.
  • Username: Имя пользователя для ввода в поле.
  • Password: Пароль для ввода в поле.

Пример кода драйвера скриптов (с комментариями)

import json
import openpyxl
from selenium import webdriver
from selenium.webdriver.common.by import By

# Функция для чтения данных из Excel
def read_excel_data(file_path: str) -> list:
    """Читает данные из Excel файла и возвращает список строк."""
    workbook = openpyxl.load_workbook(file_path)
    sheet = workbook.active
    data = []
    for row in sheet.iter_rows(values_only=True):
        data.append(row)
    return data


# Функция для чтения данных из JSON
def read_json_data(file_path: str) -> list:
    """Читает данные из JSON файла и возвращает список словарей."""
    with open(file_path, 'r') as f:
        data = json.load(f)
    return data


# Функция для выполнения ключевых слов
def execute_keyword(driver, keyword: str, locator: str = None, data: str = None):
    """Выполняет действие на основе ключевого слова."""
    if keyword == 'openBrowser':
        driver = webdriver.Chrome()
        return driver # Возвращаем driver, чтобы его можно было использовать дальше
    elif keyword == 'navigate':
        driver.get(data)
    elif keyword == 'enterText':
        element = driver.find_element(By.ID, locator)
        element.send_keys(data)
    elif keyword == 'clickElement':
        element = driver.find_element(By.ID, locator)
        element.click()
    else:
        print(f'Неизвестное ключевое слово: {keyword}')


# Основная функция драйвера скриптов
def run_test(keywords_file: str, data_file: str):
    """Запускает тестовый сценарий, считывая ключевые слова и данные."""
    keywords_data = read_excel_data(keywords_file)
    data_list = read_json_data(data_file)

    driver = None  # Инициализируем driver перед использованием

    for keyword_row in keywords_data[1:]:
        test_case_id, keyword, locator, data_column = keyword_row

        # Находим данные для текущего тестового случая
        test_data = next((item for item in data_list if item['Test Case ID'] == test_case_id), None)

        if not test_data:
            print(f'Данные для тестового случая {test_case_id} не найдены')
            continue

        data = test_data.get(data_column) if data_column else None

        # Выполняем ключевое слово
        if keyword == 'openBrowser':
            driver = execute_keyword(None, keyword) # Передаем None, т.к. драйвер еще не создан
        else:
            execute_keyword(driver, keyword, locator, data)

    if driver:
        driver.quit()


# Пример использования
if __name__ == '__main__':
    run_test('keywords.xlsx', 'data.json')

Преимущества и недостатки фреймворка, управляемого ключевыми словами и данными

Преимущества: масштабируемость, повторное использование кода, простота поддержки, возможность использования нетехническими специалистами

  • Масштабируемость: Фреймворк легко масштабируется путем добавления новых ключевых слов и данных.
  • Повторное использование кода: Объекты страниц и ключевые слова могут быть повторно использованы в различных тестовых сценариях.
  • Простота поддержки: Изменения в веб-приложении требуют внесения изменений только в объекты страниц или файлы с ключевыми словами, а не в сами тестовые скрипты.
  • Возможность использования нетехническими специалистами: Тестовые сценарии могут быть созданы нетехническими специалистами путем комбинирования ключевых слов.

Недостатки: сложность начальной настройки, зависимость от файлов данных и ключевых слов

  • Сложность начальной настройки: Создание фреймворка требует значительных усилий на начальном этапе.
  • Зависимость от файлов данных и ключевых слов: Фреймворк зависит от правильной структуры и содержания файлов данных и ключевых слов.

Рекомендации по использованию и поддержке фреймворка

  • Тщательно спланируйте структуру файлов с ключевыми словами и данными.
  • Используйте понятные и осмысленные имена для ключевых слов.
  • Реализуйте обработку ошибок и логирование.
  • Поддерживайте актуальность объектов страниц.
  • Документируйте фреймворк и проводите обучение для новых пользователей.

Добавить комментарий