Тестирование ПО: тест-кейсы, чек-листы, баг-репорты
Виды тестирования, структура тест-кейса и баг-репорта, техники тест-дизайна: классы эквивалентности, граничные значения, попарное тестирование.
Курсовая по тестированию обычно требует три вещи: описать виды тестирования применительно к своей системе, составить тест-кейсы и оформить найденные дефекты. Ниже — рабочие шаблоны для каждой части.
Классификация тестирования
| Признак | Виды |
|---|---|
| По знанию кода | Чёрный ящик, белый ящик, серый ящик |
| По уровню | Модульное, интеграционное, системное, приёмочное |
| По цели | Функциональное, нагрузочное, безопасности, удобства, совместимости |
| По исполнению | Ручное, автоматизированное |
| По времени | Дымовое (smoke), регрессионное, повторное (re-test) |
Пирамида тестирования: много быстрых модульных тестов внизу, меньше интеграционных, совсем немного медленных сквозных сверху. Перевёрнутая пирамида — типичный признак проблемного проекта.
Структура тест-кейса
| Поле | Содержание |
|---|---|
| ID | TC-001 |
| Заголовок | Авторизация с корректными данными |
| Предусловия | Пользователь зарегистрирован, находится на странице входа |
| Шаги | 1. Ввести логин. 2. Ввести пароль. 3. Нажать «Войти» |
| Тестовые данные | login: user@mail.ru, pass: Qwerty123 |
| Ожидаемый результат | Переход в личный кабинет, отображается имя пользователя |
| Приоритет | Высокий |
Техники тест-дизайна
Полный перебор невозможен даже для формы из трёх полей, поэтому применяют техники сокращения количества проверок.
- Классы эквивалентности: диапазон делят на группы, внутри которых поведение одинаково, и берут по одному представителю. Возраст 18-65: проверяем 30 (валидный), 10 и 80 (невалидные).
- Граничные значения: ошибки живут на границах. Для 18-65 проверяем 17, 18, 19, 64, 65, 66.
- Таблица решений: когда результат зависит от комбинации условий — например, скидка от суммы заказа и статуса клиента.
- Попарное тестирование: вместо всех комбинаций параметров проверяют все пары значений — покрытие падает незначительно, число тестов сокращается в разы.
- Диаграмма состояний: для объектов с жизненным циклом — заказ, заявка, документ.
Баг-репорт
Заголовок: [Личный кабинет] Не сохраняется телефон с кодом +7 в формате 8
Окружение: Chrome 120, Windows 11, версия 2.4.1
Приоритет: Средний Серьёзность: Major
Шаги воспроизведения:
1. Войти в личный кабинет
2. Открыть «Профиль» → «Редактировать»
3. В поле «Телефон» ввести 89001234567
4. Нажать «Сохранить»
Фактический результат:
Страница перезагружается, поле пустое, сообщения об ошибке нет
Ожидаемый результат:
Номер сохраняется и приводится к формату +7 900 123-45-67
Воспроизводимость: 5 из 5
Вложения: скриншот, запись экрана, лог консоли
Заголовок пишут по формуле «где — что — при каких условиях». Разработчик должен понять суть, не открывая описание.
Приоритет и серьёзность
| Понятие | Что означает | Кто определяет |
|---|---|---|
| Серьёзность (Severity) | Насколько сильно дефект ломает функциональность | Тестировщик |
| Приоритет (Priority) | Насколько срочно чинить с точки зрения бизнеса | Менеджер |
Они независимы: опечатка в названии компании на главной — низкая серьёзность, но высочайший приоритет. Падение редкого отчёта — высокая серьёзность при низком приоритете.
Автотесты для практической части
import pytest
from app import calculate_discount
@pytest.mark.parametrize('amount,status,expected', [
(500, 'обычный', 0), # ниже порога
(1000, 'обычный', 5), # граница
(1001, 'обычный', 5),
(1000, 'премиум', 10), # комбинация условий
(0, 'обычный', 0), # граничный ноль
])
def test_discount(amount, status, expected):
assert calculate_discount(amount, status) == expected
def test_negative_amount_raises():
with pytest.raises(ValueError):
calculate_discount(-100, 'обычный')
Параметризация — самый выигрышный приём для курсовой: одна функция закрывает все классы эквивалентности и границы, а в отчёте это выглядит как продуманное покрытие.
Частые вопросы
Чем чек-лист отличается от тест-кейса?
Чек-лист — список того, что надо проверить, без шагов и ожидаемых результатов. Он быстрее в составлении и годится для дымового тестирования, тест-кейс — для детальной и повторяемой проверки.
Сколько тест-кейсов нужно для курсовой?
Обычно хватает 20-30, но с показанной логикой отбора: классы эквивалентности, границы, негативные сценарии. Сто однотипных кейсов ценятся меньше, чем двадцать продуманных.