Как протестировать функционал кофемашины пошагово?

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

Ответ

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

План тестирования:

  1. Внешний осмотр и базовый функционал:

    • Целостность корпуса, экрана, кнопок.
    • Реакция на включение/выключение (индикаторы, звук).
    • Работа дисплея и тактильная отдача кнопок.
  2. Тестирование модуля подачи ингредиентов:

    • Вода: Заполнение резервуара, срабатывание датчика минимального/максимального уровня, отсутствие протечек.
    • Кофе: Загрузка зерен/капсул, работа механизма помола (если есть), датчик отсутствия кофе.
    • Молоко/сироп (опционально): Аналогичные проверки для дополнительных резервуаров.
  3. Тестирование функционала приготовления:

    • Выбор каждого типа напитка (эспрессо, американо, капучино).
    • Запуск приготовления, контроль времени цикла.
    • Выходные параметры: Температура напитка (должна быть стабильной), объем порции, крепость.
    • Очистка/промывка после цикла.
  4. Тестирование уведомлений и ошибок:

    • Предупреждения о низком уровне воды/кофе.
    • Оповещение о необходимости очистки/декальцинации.
    • Сообщения об ошибках (замятие, перегрев).
  5. Дополнительные проверки:

    • Энергопотребление в режиме ожидания и работы.
    • Уровень шума.
    • Устойчивость интерфейса к быстрым повторным нажатиям.

Пример формализации проверки кнопки в виде теста:

# Псевдокод для иллюстрации логики тестирования
class TestCoffeeMachine:

    def test_start_button_initiates_brewing(self, machine):
        # Предусловие: машина включена, есть вода и кофе
        machine.power_on()
        machine.fill_water()
        machine.fill_coffee()

        # Действие: нажатие кнопки "Эспрессо"
        espresso_button = machine.get_button("espresso")
        assert espresso_button.is_enabled() == True
        espresso_button.press()

        # Проверка результата
        assert machine.current_state == "BREWING", "Машина не перешла в режим приготовления"
        assert machine.get_brewing_time() > 0, "Таймер приготовления не запущен"

        # Ожидание завершения цикла и проверка результата
        machine.wait_for_brewing_completion()
        assert machine.current_state == "READY"
        assert machine.last_coffee_volume_ml == 30  # Ожидаемый объем эспрессо