Артефакт: План тестирования, тестовый сценарий, контрольный пример, отчет об ошибках, матрица прослеживаемости тестирования, тестовое покрытие.
1. Понятие тестирования
Тестирование (testing) – это набор операций, проводимых для обеспечения выявления и/или оценки свойств одного или более программных элементов.
Тестирование не доказывает совершенство программы — оно увеличивает обоснованность доверия к ней. и служит механизмом получения доказательств качества на всех этапах создания системы
Тестирование - это инженерная деятельность, которая начинается с концепции программной системы
Инженерная задача
Для заданного требования определить:
- объект проверки;
- условие проверки;
- входные данные;
- ожидаемый результат;
- критерий прохождения.
Артефакт
2. Уровни тестирования

2.1 Модульное тестирование
Объект тестирования: Минимально возможный, изолированный компонент исходного кода (отдельная функция, метод класса или сам класс).
Unit-тест проверяет поведение элемента в контролируемой изоляции.
Инженерная задача
разделить на отдельные задачи как в главе 1
Для метода:
calculateDiscount(age, status, amount)
Определить набор тестов, позволяющий проверить:
- нормальные значения;
- граничные значения;
- ошибочные значения;
- комбинации условий.
Артефакт
Unit Test Suite
2.2 Интеграционное тестирование
Объект тестирования: Взаимодействие и интерфейсы между несколькими модулями, компонентами или сторонними подсистемами.
2.3 Системное тестирование
Объект тестирования: Вся программная система в целом, развернутая на окружении, максимально близком к реальному (Staging / Pre-production).
- Кто выполняет: Отдельная команда инженеров по тестированию (QA/Testing Team).
- Главная цель: Проверить соответствие всей системы как функциональным, так и нефункциональным (системным) требованиям спецификации.
- Виды проверок на системном уровне:
- Функциональное тестирование: Проверка реализации сквозных бизнес-сценариев (End-to-End, E2E).
- Нагрузочное тестирование (Performance/Stress): Проверка работы системы под пиковыми нагрузками.
- Тестирование безопасности (Security): Проверка устойчивости к атакам и уязвимостям.
- Тестирование отказоустойчивости (Failover): Эмуляция сбоев железа и сети для проверки тактик восстановления.

3. Приемочное тестирование
Объект тестирования: Готовая система, оцениваемая с точки зрения соответствия бизнес-целям, контракту и ожиданиям пользователей.
Инженерная задача
Из бизнес-требования построить критерии приемки
Business Goal
↓
Acceptance Criterion
↓
Acceptance Test
↓
Decision
Артефакт
Acceptance Test Specification
6. Методы проектирования тестов
| Метод проектирования тестов | Идея метода | Что проверяет | Когда применять | Пример |
|---|---|---|---|---|
| Эквивалентное разбиение | Разделение входных данных на классы, внутри которых система должна вести себя одинаково | Корректную обработку групп однотипных данных | Когда количество возможных входов слишком велико | Поле «Возраст»:<0— ошибка,0–120— корректно,>120— ошибка |
| Анализ граничных значений | Проверка значений на границах допустимых диапазонов | Ошибки, возникающие на границах условий | Для диапазонов, ограничений, размеров, количеств | Для диапазона 1–100 проверить:0, 1, 2, 99, 100, 101 |
| Таблицы решений | Представление сложной логики в виде комбинаций условий и действий | Корректность бизнес-правил | Когда результат зависит от нескольких условий | Скидка зависит от возраста, статуса клиента и суммы покупки |
| Диаграммы переходов состояний | Построение тестов на основе модели состояний объекта | Корректность изменения состояния системы | Для объектов с жизненным циклом | Заказ: создан → оплачен → отправлен → доставлен |
| Попарное тестирование | Проверка всех пар значений параметров вместо полного перебора комбинаций | Ошибки взаимодействия параметров | При большом числе настроек и комбинаций | Браузер × ОС × язык × тип пользователя |
| Тестирование на основе сценариев | Проверка типичных пользовательских действий | Сквозное поведение системы | Для пользовательских процессов | Регистрация → покупка → оплата → получение заказа |
| Исследовательское тестирование | Одновременное изучение системы и создание тестов | Неочевидные ошибки | Когда требования неполные или система сложная | Поиск неожиданных сценариев работы интерфейса |
| Предугадывание ошибок | Использование опыта тестировщика для поиска вероятных ошибок | Типовые дефекты | На основе опыта и истории ошибок | null, пустые строки, отрицательные числа, переполнение |
| Мутационное тестирование | Искусственное внесение ошибок в код и проверка, находят ли их тесты | Качество набора тестов | Для оценки эффективности автоматических тестов | Изменить>на<и проверить, падает ли тест |
Автоматизация тестирования
это инженерный механизм получения быстрой обратной связи о качестве программной системы. Ее цель не написать больше тестов, а встроить проверку качества в процесс разработки