Ответ
Техники тест-дизайна используются для систематического создания эффективных тестовых случаев. Вот практические примеры их применения:
-
Эквивалентное разбиение (Equivalence Partitioning):
- Задача: Поле "Возраст пользователя" принимает значения от 18 до 65.
- Применение: Разбиваем входные данные на классы эквивалентности:
- Валидный класс:
[18, 65](тестируем одно значение, например, 30). - Невалидный класс "меньше":
<18(тестируем 17). - Невалидный класс "больше":
>65(тестируем 66).
- Валидный класс:
-
Анализ граничных значений (Boundary Value Analysis):
- Задача: То же поле "Возраст" (
[18, 65]). - Применение: Тестируем значения на границах и рядом с ними:
17(нижняя граница -1) → ошибка.18(нижняя граница) → успех.19(нижняя граница +1) → успех.64(верхняя граница -1) → успех.65(верхняя граница) → успех.66(верхняя граница +1) → ошибка.
- Задача: То же поле "Возраст" (
-
Попарное тестирование (Pairwise Testing):
- Задача: Фильтр товаров с параметрами:
Цена(низкая, средняя, высокая),Бренд(A, B),Наличие(есть, нет). - Применение: Вместо 3x2x2=12 комбинаций, инструмент (например, AllPairs) генерирует набор, где каждая пара значений встречается хотя бы раз. Это резко сокращает число тестов.
- Задача: Фильтр товаров с параметрами:
-
Таблица решений (Decision Table):
- Задача: Логика начисления скидки: Скидка 10% дается, если
(Постоянный клиент ИЛИ Сумма > 1000) И Не было возвратов. - Применение: Строим таблицу, покрывающую все комбинации условий (T/F) и проверяем итоговое действие (дать/не дать скидку).
- Задача: Логика начисления скидки: Скидка 10% дается, если
Пример кода для проверки граничных значений в корзине:
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