Можно ли считать пользователя виновным в наличии багов в программном обеспечении?

«Можно ли считать пользователя виновным в наличии багов в программном обеспечении?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Нет, пользователь не несёт ответственности за наличие дефектов (багов) в программном обеспечении. Ответственность лежит на команде разработки, тестирования и менеджмента продукта.

Почему это так:

  1. Ожидание устойчивости: Система должна корректно обрабатывать любые пользовательские действия, включая ошибочные или нестандартные.
  2. Принцип «защитного программирования»: Код должен проверять входные данные и обрабатывать исключительные ситуации.

Пример:

# Проблемный код
def calculate_discount(price, discount_percent):
    return price - (price * discount_percent / 100)
# Упадёт, если discount_percent = None или строкой

# Защищённый код
def calculate_discount(price, discount_percent):
    try:
        discount = float(discount_percent)
    except (TypeError, ValueError):
        discount = 0.0
    return max(0, price - (price * discount / 100))

Исключение — злонамеренные действия: Если пользователь целенаправленно эксплуатирует уязвимости (например, SQL-инъекцию), это вопрос безопасности. Однако и здесь основная ответственность за защиту системы лежит на разработчиках.

Вывод для тестировщика: Тестирование должно включать сценарии с «неидеальным» пользователем, чтобы выявить подобные уязвимости до релиза.