Что такое постусловие (postcondition) в программировании и тестировании?

«Что такое постусловие (postcondition) в программировании и тестировании?» — вопрос из категории Тестовая документация, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Постусловие (postcondition) — это утверждение или условие, которое гарантированно истинно после успешного выполнения метода, функции или операции. Оно описывает ожидаемое состояние системы или результат.

Назначение:

  • Гарантировать корректность результата операции.
  • Формализовать контракт для модульного тестирования.
  • Упростить понимание поведения функции.

Пример на Java:

/**
 * Делит число a на b.
 * Постусловие: результат умноженный на b должен равняться a (для целочисленного деления).
 */
public int divide(int a, int b) {
    // Предусловие (precondition)
    if (b == 0) {
        throw new IllegalArgumentException("Divisor cannot be zero");
    }

    int result = a / b;

    // Постусловие (postcondition) - проверка в коде
    assert a == result * b : "Postcondition failed: division result is incorrect";

    return result;
}

В тестировании постусловия используются для создания проверок (assertions) в тестовых сценариях. Например, после вызова метода divide(10, 2) тест проверяет, что результат равен 5.