Проведи негативное тестирование на примере домофона
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Негативное тестирование домофона: подход и примеры
Негативное тестирование — это проверка системы на устойчивость к нестандартным, ошибочным или вредоносным действиям. Цель — убедиться, что устройство корректно обрабатывает сбои, не ломается и не создаёт опасных ситуаций. Для домофона это критически важно, так как он работает в публичном пространстве и должен быть максимально отказоустойчивым.
Основные направления негативного тестирования домофона
- Некорректный ввод данных:
* Ввод букв вместо цифр в номер квартиры.
* Ввод спецсимволов (например, `#`, `*`, `!`) в любые поля.
* Ввод чрезмерно длинного номера квартиры (более 10 цифр).
* Попытка позвонить на несуществующий номер квартиры (например, 999 в 9-этажном доме).
* Многократное быстрое нажатие одной и той же кнопки.
- Нарушение последовательности действий (тестирование состояний):
* Попытка открыть дверь до того, как абонент ответил на вызов.
* Набор номера квартиры во время уже идущего звонка.
* Одновременный вызов с нескольких панелей домофона (если их несколько).
* Быстрое прерывание вызова (сброс) и немедленный новый вызов.
- Экстремальные условия эксплуатации:
* Работа при критически низких и высоких температурах (например, -30°C и +50°C).
* Воздействие прямой влаги (дождь, конденсат) на кнопки и микрофон/динамик.
* Сильные вибрации или удары по корпусу.
* Работа при нестабильном или пониженном напряжении в сети.
- Проверка на безопасность и устойчивость:
* Длительное (5-10 минут) удержание кнопки вызова или открытия двери.
* Попытка "переполнить буфер", быстро набирая номера или нажимая кнопки в течение длительного времени.
* Проверка, не приводит ли одновременное нажатие комбинации кнопок к сбросу настроек или получению несанкционированного доступа.
* Тестирование помехоустойчивости аудиоканала (сильный шум, свист, крик в трубку).
Пример сценария негативного тестирования
Цель: Проверить реакцию системы на ввод несуществующего номера квартиры с последующим быстрым повторным вводом.
Предусловия: Домофон находится в основном меню ("Введите номер квартиры").
Шаги теста:
- Набрать на клавиатуре номер квартиры, который заведомо не существует в системе (например,
000или999). - Нажать кнопку вызова.
- Зафиксировать реакцию системы (ожидаемо: звуковой сигнал "ошибка" или сообщение "Квартира не найдена", возврат в главное меню).
- Не дожидаясь полного возврата в меню, немедленно снова набрать другой несуществующий номер (например,
888) и нажать вызов. - Повторить п.4 5-10 раз подряд в быстром темпе.
Ожидаемый результат: Система должна корректно обрабатывать каждый ошибочный запрос, не зависать, не уходить в перезагрузку и не открывать дверь. После цикла быстрых ошибочных вызовов домофон должен оставаться в рабочем состоянии и корректно реагировать на последующий правильный вызов существующей квартиры.
Негативные сценарии, которые мы здесь проверяем:
- Обработка неверных данных.
- Устойчивость к "спам-атаке" ошибочными командами.
- Сохранение корректного состояния конечного автомата (state machine) устройства после серии ошибок.
Пример кода для автоматизации простой проверки (Python + pytest)
import pytest
import time
# Предполагаем, что у нас есть класс для эмуляции взаимодействия с домофоном
from domophone_emulator import DomophoneEmulator
class TestDomophoneNegative:
@pytest.fixture
def domophone(self):
# Инициализация эмулятора или подключение к тестовому стенду
return DomophoneEmulator()
def test_rapid_invalid_calls(self, domophone):
"""Быстрые последовательные вызовы на несуществующие номера."""
invalid_numbers = ["000", "999", "abc", "1234567890", ""]
for invalid_num in invalid_numbers:
# Шаг 1: Ожидаем главное меню (таймаут на случай зависания)
assert domophone.wait_for_state("main_menu", timeout=5), "Домофон завис в предыдущем цикле"
# Шаг 2: Вводим неверный номер и вызываем
domophone.enter_code(invalid_num)
domophone.press_call_button()
# Шаг 3: Проверяем, что вызов не прошёл
# Должно появиться сообщение об ошибке ИЛИ не должно быть состояния "calling"
time.sleep(0.5) # Небольшая задержка на обработку
current_state = domophone.get_current_state()
assert current_state != "calling", f"Домофон почему-то звонит по номеру {invalid_num}"
# Допустим, корректная реакция - состояние 'error' или возврат в 'main_menu'
assert current_state in ["error", "main_menu"], f"Неожиданное состояние {current_state} после ввода {invalid_num}"
# Финальная проверка: после всех ошибок система должна работать
domophone.enter_code("101") # Валидный номер
domophone.press_call_button()
assert domophone.wait_for_state("calling", timeout=3), "Система не работает после серии негативных сценариев"
Вывод: Негативное тестирование домофона фокусируется на его отказоустойчивости и безопасности. Оно имитирует действия невнимательных, неопытных или злонамеренных пользователей, а также проверяет работу в неидеальных условиях. Такой подход позволяет выявить критические дефекты, которые в реальной эксплуатации могли бы привести к поломке устройства, несанкционированному доступу или просто к недовольству пользователей.