Как бы вы спланировали негативное тестирование для домофона?

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

Ответ

Негативное тестирование домофона направлено на проверку его устойчивости к некорректным данным, нештатным ситуациям и злоупотреблениям.

Ключевые области и тест-кейсы:

  1. Некорректный ввод данных:

    • Ввод букв (ABC) или спецсимволов (#!@) вместо цифр номера квартиры.
    • Ввод номера квартиры, выходящего за допустимые пределы (например, 000 или 9999 при 100 квартирах).
    • Очень быстрый последовательный ввод цифр.
    • Долгое удержание кнопки.
  2. Нестандартные условия эксплуатации:

    • Среда: Работа при экстремальных температурах (мороз/жара), высокой влажности.
    • Питание: Имитация скачков напряжения или работы от почти разряженного аккумулятора.
    • Физическое воздействие: Нажатие мокрыми/грязными пальцами, одновременное нажатие нескольких кнопок.
  3. Некорректные сценарии использования:

    • Попытка вызова квартиры во время уже идущего разговора.
    • Многократный вызов одной квартиры за короткий промежуток времени (проверка на спам).
    • Отключение сети во время вызова/разговора.

Пример формализации теста (если домофон имеет API):

import requests

# Тест на обработку нечислового ввода
def test_alphabetic_input_rejected():
    payload = {"apartment_number": "A12"}  # Некорректный ввод
    response = requests.post("http://domofon/api/call", json=payload)
    # Ожидаем статус ошибки и понятное сообщение
    assert response.status_code == 400
    assert "invalid" in response.json().get("message", "").lower()

# Тест на обработку несуществующей квартиры
def test_nonexistent_apartment_handling():
    payload = {"apartment_number": "999"}
    response = requests.post("http://domofon/api/call", json=payload)
    # Ожидаем корректную обработку: вызов не должен проходить
    assert response.status_code == 404  # Или 200 с сообщением "Квартира не найдена"

Цель — выявить потенциальные сбои, которые могут привести к отказу службы, нарушению безопасности или неудобству пользователей.