В чем разница между латентным и замаскированным дефектом (багом)?

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

Ответ

Латентный дефект — ошибка, которая присутствует в коде, но еще не проявила себя, так как не были выполнены условия для ее срабатывания.

Замаскированный дефект — ошибка, которая уже активировалась, но ее симптомы скрыты другим поведением системы (например, перехватом исключения без логирования).

Ключевое отличие: Латентный баг еще не активен, замаскированный — уже активен, но неочевиден.

Пример латентного бага:

def calculate_discount(total, discount_rate):
    # Упадет, если discount_rate = 0, но это условие пока не встретилось
    return total / discount_rate

Пример замаскированного бага:

def calculate_discount(total, discount_rate):
    try:
        return total / discount_rate
    except ZeroDivisionError:
        # Ошибка перехвачена, но возвращается некорректное значение
        return total  # Симптом скрыт, логика нарушена

Почему это важно: Поиск латентных багов требует анализа кода и покрытия всех ветвлений, а замаскированных — проверки обработки ошибок и побочных эффектов.