Какие знаешь тестовые сценарии?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные типы тестовых сценариев в 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 сценарий, проверяющий бизнес-правило с негативными данными).