Приведите примеры применения техник тест-дизайна на практике.

«Приведите примеры применения техник тест-дизайна на практике.» — вопрос из категории Техники тест-дизайна, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Техники тест-дизайна используются для систематического создания эффективных тестовых случаев. Вот практические примеры их применения:

  1. Эквивалентное разбиение (Equivalence Partitioning):

    • Задача: Поле "Возраст пользователя" принимает значения от 18 до 65.
    • Применение: Разбиваем входные данные на классы эквивалентности:
      • Валидный класс: [18, 65] (тестируем одно значение, например, 30).
      • Невалидный класс "меньше": <18 (тестируем 17).
      • Невалидный класс "больше": >65 (тестируем 66).
  2. Анализ граничных значений (Boundary Value Analysis):

    • Задача: То же поле "Возраст" ([18, 65]).
    • Применение: Тестируем значения на границах и рядом с ними:
      • 17 (нижняя граница -1) → ошибка.
      • 18 (нижняя граница) → успех.
      • 19 (нижняя граница +1) → успех.
      • 64 (верхняя граница -1) → успех.
      • 65 (верхняя граница) → успех.
      • 66 (верхняя граница +1) → ошибка.
  3. Попарное тестирование (Pairwise Testing):

    • Задача: Фильтр товаров с параметрами: Цена (низкая, средняя, высокая), Бренд (A, B), Наличие (есть, нет).
    • Применение: Вместо 3x2x2=12 комбинаций, инструмент (например, AllPairs) генерирует набор, где каждая пара значений встречается хотя бы раз. Это резко сокращает число тестов.
  4. Таблица решений (Decision Table):

    • Задача: Логика начисления скидки: Скидка 10% дается, если (Постоянный клиент ИЛИ Сумма > 1000) И Не было возвратов.
    • Применение: Строим таблицу, покрывающую все комбинации условий (T/F) и проверяем итоговое действие (дать/не дать скидку).

Пример кода для проверки граничных значений в корзине:

def test_add_to_cart_quantity_boundaries():
    product_id = 123
    # Граничные и невалидные значения
    test_cases = [
        (0, False),   # Невалидно: 0
        (1, True),    # Нижняя валидная граница
        (99, True),   # Верхняя валидная граница
        (100, False)  # Невалидно: 100
    ]
    for quantity, should_succeed in test_cases:
        result = add_to_cart(product_id, quantity)
        assert result.success == should_succeed