Что такое граничные тесты и как их проводить?

«Что такое граничные тесты и как их проводить?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Граничные тесты (boundary value testing) — это техника тестирования, направленная на выявление ошибок на крайних (граничных) значениях входных данных.

Цель: Проверить поведение системы на значениях на границах допустимых диапазонов, а также сразу за ними, где чаще всего возникают ошибки (off-by-one, переполнения).

Пример: Для метода, проверяющего допустимый возраст (от 18 до 100 лет включительно), тестируются:

@Test
void testAgeBoundaries() {
    assertTrue(isValidAge(18));  // Нижняя граница
    assertTrue(isValidAge(100)); // Верхняя граница
    assertFalse(isValidAge(17)); // Непосредственно ниже границы
    assertFalse(isValidAge(101)); // Непосредственно выше границы
}

Типичные граничные случаи для проверки:

  • Минимальные и максимальные значения для числовых типов (Integer.MIN_VALUE, Integer.MAX_VALUE).
  • Пустые коллекции, строки и null.
  • Нулевые и отрицательные значения, если они допустимы или должны быть отсеяны.
  • Первый и последний элемент в последовательностях.