Какие проверки включает анализ граничных значений?

Ответ

Анализ граничных значений (Boundary Value Analysis, BVA) — техника тест-дизайна, фокусирующаяся на значениях на границах допустимых диапазонов. Основные проверки для диапазона [min, max]:

1. Проверка непосредственно на границах (Valid Boundaries)

  • Минимальное допустимое значение (min)
  • Максимальное допустимое значение (max)

2. Проверка за границами (Invalid Boundaries)

  • Значение чуть ниже минимума (min - 1)
  • Значение чуть выше максимума (max + 1)

3. Проверка типичных значений внутри диапазона (Robustness)

  • Значение чуть выше минимума (min + 1)
  • Значение чуть ниже максимума (max - 1)

4. Проверка особых случаев

  • Пустое значение (если поле необязательное).
  • Нулевое значение (если 0 входит или не входит в диапазон).

Пример теста для поля "Возраст" с допустимым диапазоном от 18 до 99 лет:

def test_age_field_boundaries():
    # Недопустимые значения за границами
    assert not is_valid_age(17), "17 (min-1) должно быть недопустимо"
    assert not is_valid_age(100), "100 (max+1) должно быть недопустимо"

    # Допустимые значения на границах
    assert is_valid_age(18), "18 (min) должно быть допустимо"
    assert is_valid_age(99), "99 (max) должно быть допустимо"

    # Допустимые значения внутри диапазона
    assert is_valid_age(19), "19 (min+1) должно быть допустимо"
    assert is_valid_age(98), "98 (max-1) должно быть допустимо"

Ответ 18+ 🔞

Да ты посмотри на эту красоту, блядь! Анализ граничных значений, сука! Ну, это как если бы ты проверял, насколько крепкий у тебя забор, ага? Не просто по центру пнуть, а именно там, где доски сходятся, где гвозди торчат — вот где вся соль, ёпта!

Смысл в том, чтобы не просто ввести "25 лет" и сказать "работает, похуй". Нет, ты подходишь к этому делу с подвохом, как хитрая жопа! Система говорит: "Возраст от 18 до 99". Ну окей. А ты ей такой: "А 17, сука? А 100, блядь? А 18 ровно? А 99, ебать? А 19? А 98?" Вот это и есть проверка на вшивость!

Основные приколы, на которые надо давить:

1. По самые помидоры в границу (Valid Boundaries)

  • Самое нижнее пограничное (min) — 18 лет. Можно или нет? Должно можно!
  • Самое верхнее пограничное (max) — 99 лет. Можно или нет? Тоже должно можно!

2. Залезть за буфер, куда не просили (Invalid Boundaries)

  • Чуть-чуть не дотянул (min - 1) — 17 лет. Вот тут должен быть пиздец и ошибка!
  • Чуть-чуть переборщил (max + 1) — 100 лет. И тут тоже должен быть отлуп!

3. Поковыряться рядом с границей, но внутри (Robustness)

  • Чуть выше дна (min + 1) — 19 лет. Ну должно ж работать.
  • Чуть ниже потолка (max - 1) — 98 лет. Тоже должно.

4. Особые художества, чтоб совсем добить

  • Вообще ничего не вводить (если можно).
  • Ноль вписать (интересно же, как оно с нулём, он же часто особый случай, блядь).

Вот смотри, как это в коде выглядит, на примере возраста "от 18 до 99":

def test_age_field_boundaries():
    # Эти уродцы за забором — им тут не рады
    assert not is_valid_age(17), "17 (min-1) должно быть недопустимо"
    assert not is_valid_age(100), "100 (max+1) должно быть недопустимо"

    # А эти стоят на самом краю забора — и всё ок
    assert is_valid_age(18), "18 (min) должно быть допустимо"
    assert is_valid_age(99), "99 (max) должно быть допустимо"

    # Эти уже внутри гуляют — тем более
    assert is_valid_age(19), "19 (min+1) должно быть допустимо"
    assert is_valid_age(98), "98 (max-1) должно быть допустимо"

Вот и весь анализ, ебать мои старые костыли! Не дай системе расслабиться, проверяй её на прочность именно там, где она ждёт подвоха меньше всего — на самых краях!