Ответ
Метод анализа граничных значений (BVA) — это фундаментальная техника тест-дизайна. Её суть в том, что дефекты чаще всего возникают на границах разделения областей допустимых и недопустимых входных значений, а не в "середине". Поэтому мы тестируем значения на самих границах и непосредственно рядом с ними.
Стандартный подход (двухточечный): Для диапазона [min, max] тестируются:
- Минимальное значение (min).
- Значение чуть ниже минимума (min - 1).
- Максимальное значение (max).
- Значение чуть выше максимума (max + 1).
| Пример для поля "Возраст пользователя" от 18 до 65 лет включительно: | Тестовое значение | Ожидаемый результат | Пояснение |
|---|---|---|---|
| 17 | Ошибка | Ниже нижней границы (min-1) | |
| 18 | Успех | Нижняя граница (min) | |
| 50 | Успех | Номинальное значение внутри диапазона | |
| 65 | Успех | Верхняя граница (max) | |
| 66 | Ошибка | Выше верхней границы (max+1) |
Применение не только к числам:
- Длина строки: Максимально допустимая длина, длина на 1 символ больше.
- Количество элементов в списке: Минимальное/максимальное количество, 0 элементов, на 1 больше максимума.
- Даты: Первый и последний день допустимого периода, день перед и день после.
Практический пример в автотесте (Python, Pytest):
# Функция, которую тестируем (условно)
def is_valid_discount_coupon(code: str) -> bool:
# Купон должен быть длиной от 5 до 10 символов и состоять из букв и цифр
return 5 <= len(code) <= 10 and code.isalnum()
# Тесты на граничные значения для длины
import pytest
def test_coupon_length_boundaries():
# Граничные и недопустимые значения длины
assert is_valid_discount_coupon("A1234") == True # min длина = 5
assert is_valid_discount_coupon("A123") == False # min-1 = 4
assert is_valid_discount_coupon("A123456789") == True # max длина = 10
assert is_valid_discount_coupon("A1234567890") == False # max+1 = 11
# Номинальное значение внутри диапазона
assert is_valid_discount_coupon("ABC123") == True
Сила метода: Позволяет небольшим набором тестовых данных (4-6 значений) эффективно обнаруживать ошибки, связанные с некорректными операторами сравнения (например, > вместо >=).