Использовали ли вы Data Provider (DP) в тестировании?

«Использовали ли вы Data Provider (DP) в тестировании?» — вопрос из категории Linux и командная строка, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, активно использую Data Providers (Провайдеры данных) для параметризации тестов. Это позволяет запускать один и тот же тестовый метод с разными наборами входных данных и ожидаемых результатов, что повышает покрытие и уменьшает дублирование кода.

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

  • Уменьшение кода: Один тест вместо многих.
  • Удобство поддержки: Добавление нового кейса — это добавление новой строки данных.
  • Четкая отчетность: Каждый набор данных обычно отображается как отдельный тестовый прогон.

Пример параметризованного теста на Python (pytest):

import pytest

# Data Provider в виде декоратора @pytest.mark.parametrize
@pytest.mark.parametrize("username, password, expected_result", [
    ("valid_user", "correct_pwd", "login_success"),  # Позитивный кейс
    ("valid_user", "wrong_pwd", "login_fail"),      # Негативный кейс
    ("", "correct_pwd", "login_fail"),               # Граничный кейс: пустой логин
    ("valid_user", "", "login_fail"),                # Граничный кейс: пустой пароль
])
def test_login_functionality(username, password, expected_result):
    # Вызов тестируемой функции
    actual_result = login(username, password)
    assert actual_result == expected_result, f"Failed for user '{username}'"

Источники данных для DP:

  • Прямое перечисление в коде (как в примере выше).
  • Внешние файлы (JSON, CSV, Excel).
  • Функции-генераторы, которые создают данные динамически.