← Назад к вопросам

Что такое граничные значения в тестировании?

1.0 Junior🔥 302 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое граничные значения в тестировании?

Граничные значения (Boundary Values) — это фундаментальная техника тестирования, основанная на идее, что дефекты чаще всего возникают на границах разделения областей эквивалентных значений, а не в их середине. Применяя эту технику, тестировщик фокусируется на значениях, которые находятся на самых «краях» допустимого диапазона входных данных, а также на значениях, непосредственно за этими границами.

Философия и теоретическая основа

Техника исходит из предположения, что разработчики часто допускают ошибки в условиях сравнения (например, используют > вместо >=, или ошибаются на единицу в счётчиках циклов). Поэтому проверка значений ровно на границе, а также значений сразу за границей с большой вероятностью выявит подобные ошибки. Это делает метод одним из самых эффективных с точки зрения затрат на создание и поддержку тестов.

Как применять технику граничных значений?

Классический подход, например, для поля, принимающего целые числа от 1 до 100 включительно, предполагает проверку следующих значений:

  • Минимальная граница (Min): 1
  • Немного ниже минимума (Min-1): 0
  • Немного выше минимума (Min+1): 2
  • Максимальная граница (Max): 100
  • Немного ниже максимума (Max-1): 99
  • Немного выше максимума (Max+1): 101

Также часто добавляют проверку любого типичного значения внутри диапазона (например, 50).

В современной практике, особенно при автоматизированном тестировании, часто используют упрощённый, но не менее эффективный набор: Min, Min-1, Max, Max+1.

Пример в коде (проверка валидатора)

Предположим, у нас есть функция валидации возраста пользователя.

def validate_age(age: int) -> bool:
    """
    Проверяет, что возраст находится в допустимом диапазоне от 18 до 120 лет включительно.
    Возвращает True, если проверка пройдена, иначе False.
    """
    return 18 <= age <= 120

Набор тестовых данных, построенных по технике граничных значений, будет выглядеть так:

# Набор тестов для граничных значений (ожидается: False, True, True, True, False)
test_cases = [
    (17, False),   # Min-1 (ниже нижней границы)
    (18, True),    # Min (ровно нижняя граница)
    (19, True),    # Min+1 (чуть выше границы)
    (120, True),   # Max (ровно верхняя граница)
    (121, False)   # Max+1 (чуть выше границы)
]

for age, expected_result in test_cases:
    result = validate_age(age)
    assert result == expected_result, f"Ошибка для age={age}. Ожидалось {expected_result}, получено {result}"
print("Все тесты граничных значений пройдены.")

Связь с другими техниками

  1. Эквивалентное разбиение (Equivalence Partitioning): Эти две техники почти всегда используются вместе. Сначала мы определяем классы эквивалентности (допустимые и недопустимые диапазоны), а затем для каждого класса выбираем граничные значения для тестирования. Это создаёт мощный синергетический эффект.

  2. Анализ граничных значений для нечисловых данных: Техника применима не только к числам. Например:

    *   Для поля, принимающего строку длиной до 255 символов, границами будут: пустая строка, строка из 1 символа, 255 символов, 256 символов.
    *   Для выпадающего списка из N элементов — первый и последний элемент.

Практические аспекты и важные замечания

  • Двух- и трёхточечный подход: Существует два основных подхода. Двухточечный (более современный) предполагает тестирование значений на и за границей (Min, Min-1, Max, Max+1). Трёхточечный (классический) добавляет значения внутри границы (Min+1, Max-1).
  • Внутренние границы: Система может иметь несколько допустимых диапазонов (например, скидки: 0-10%, 11-20%, 21-30%). В этом случае тестируются границы каждого диапазона.
  • Границы для дат, времени и массивов: Техника универсальна. Например, для массива проверяется обращение к первому элементу (индекс 0), последнему (индекс length-1), а также попытка обращения к элементу с индексом -1 или length.

Итог: Техника анализа граничных значений — это не просто «проверка минимального и максимального значения». Это систематический, основанный на рисках подход к выбору тестовых данных, который с минимальным количеством тест-кейсов позволяет обнаружить максимальное количество критических дефектов, связанных с ошибками в логике условий. Её применение — признак зрелого и эффективного процесса тестирования.