← Назад к вопросам

Какие знаешь тестовые сценарии?

1.2 Junior🔥 161 комментариев
#Веб-тестирование#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные типы тестовых сценариев в QA

Тестовый сценарий (Test Case) — это формализованный набор шагов, условий и ожидаемых результатов для проверки конкретной функциональности или требования. Как QA Engineer с 10+ лет опыта, я разделяю сценарии по нескольким ключевым критериям: цель тестирования, уровень тестирования и характер проверки. Ниже — подробная классификация и примеры.

1. По цели тестирования (Functional vs Non-Functional)

Функциональные сценарии

Проверяют соответствие системы её функциональным требованиям. Основные типы:

  • Позитивные (Positive): Проверка, что система работает корректно при корректных входных данных.
    *   Пример: Ввод правильного логина и пароля → успешный вход в систему.
  • Негативные (Negative): Проверка реакции системы на некорректные данные или действия.
    *   Пример: Ввод неверного пароля → получение сообщения об ошибке, а не успешный вход.
  • Сценарии граничных значений (Boundary Value Analysis): Тестирование на границах допустимых диапазонов.
    *   Пример: Для поля «Возраст» (допустимо 18-65) проверка значений 17, 18, 65, 66.
  • Сценарии на основе бизнес-правил (Business Rule Validation): Проверка логики, специфичной для бизнеса.
    *   Пример: В банковском приложении: сумма перевода не может превышать баланс на счете.

Нефункциональные сценарии

Проверяют характеристики системы, не связанные с конкретной функцией.

  • Сценарии производительности (Performance): Нагрузка, стресс, стабильность.
    // Пример сценария для нагрузочного теста API
    // Цель: Проверить, что endpoint `/api/v1/users` обрабатывает 1000 запросов/сек.
    import http from 'k6/http';
    
    export const options = {
        stages: [
            { duration: '1m', target: 1000 }, // Рост нагрузки до 1000 пользователей
            { duration: '3m', target: 1000 }, // Стабильная нагрузка
        ],
    };
    
    export default function () {
        http.get('https://api.example.com/api/v1/users');
    }
    
  • Сценарии безопасности (Security): Проверка уязвимостей (например, SQL Injection).
    -- Пример негативного сценария для проверки на SQL Injection
    -- Входные данные в поле логина: admin' OR '1'='1
    -- Ожидаемый результат: Система должна отвергнуть запрос или безопасно его обработать,
    -- НЕ возвращая данные всех пользователей.
    
  • Сценарии удобства использования (Usability): Проверка UX, например, времени и шагов для завершения ключевой задачи.
  • Сценарии совместимости (Compatibility): Проверка работы в разных браузерах, устройствах, ОС.

2. По уровню тестирования (Testing Levels)

  • Модульные (Unit) сценарии: Пишутся разработчиками для тестирования отдельных функций/методов.
  • Интеграционные (Integration) сценарии: Проверка взаимодействия между модулями, системами или API.
    *   Пример: После создания пользователя через API, проверка, что его данные корректно появились в основной БД и в логах.
  • Системные (System) сценарии: Проверка полного, готового продукта в соответствии с требованиями — это основа работы QA Engineer. Часто представляют собой end-to-end (E2E) сценарии.
    # Пример E2E сценария для веб-приложения с использованием Selenium
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    def test_user_registration_and_login():
        driver = webdriver.Chrome()
        driver.get("https://example.com/register")
        # 1. Шаг регистрации
        driver.find_element(By.ID, "email").send_keys("test@example.com")
        driver.find_element(By.ID, "password").send_keys("securePass123")
        driver.find_element(By.ID, "submit-btn").click()
        # Ожидаемый результат: Сообщение "Регистрация успешна"
        assert "Регистрация успешна" in driver.page_source
        # 2. Шаг логина
        driver.get("https://example.com/login")
        driver.find_element(By.ID, "email").send_keys("test@example.com")
        driver.find_element(By.ID, "password").send_keys("securePass123")
        driver.find_element(By.ID, "login-btn").click()
        # Ожидаемый результат: Переход на страницу профиля
        assert driver.current_url == "https://example.com/profile"
        driver.quit()
    
  • Сценарии приемочного тестирования (Acceptance): Проверка, что система удовлетворяет критериям приемки (часто с участием бизнеса или пользователей), например, User Acceptance Testing (UAT).

3. По характеру проверки и подходу

  • Сценарии, основанные на состоянии (State-based): Проверка изменения состояния системы после действия (например, статус заказа меняется с «Оплачен» на «Отправлен»).
  • Сценарии, основанные на потоке данных (Data-driven): Одни шаги выполняются с разными наборы данных для проверки разнообразных условий.
  • Сценарии, основанные на пользовательских сценариях/путешествиях (User Journey/Scenario-based): Описывают последовательность действий реального пользователя для достижения цели (например, «Поиск товара → Добавление в корзину → Оформление доставки → Оплата»).
  • Сценарии для исследовательского тестирования (Exploratory): Не формализованы заранее, создаются и выполняются динамически для глубокого изучения системы и поиска неочевидных дефектов.

Ключевые элементы хорошего тестового сценария

Вне зависимости от типа, эффективный сценарий должен содержать:

  • Уникальный ID и четкое название.
  • Предусловия (состояние системы перед тестом).
  • Тестовые шаги — последовательные, атомарные действия.
  • Тестовые данные (если необходимы).
  • Ожидаемый результат для каждого шага или итоговый.
  • Постусловия (действия после теста, например, очистка данных).
  • Связь с требованием (Requirement ID).

Выбор и комбинация этих типов сценариев позволяет построить комплексное тестовое покрытие, которое обеспечивает проверку функциональности, надежности, безопасности и удобства программного продукта. На практике часто один сценарий может сочетать несколько типов (например, E2E сценарий, проверяющий бизнес-правило с негативными данными).