Тестирование ПО

Тема 5

Артефакт: План тестирования, тестовый сценарий, контрольный пример, отчет об ошибках, матрица прослеживаемости тестирования, тестовое покрытие.

1. Понятие тестирования

Тестирование (testing) – это набор операций, проводимых для обеспечения выявления и/или оценки свойств одного или более программных элементов.

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

Тестирование - это инженерная деятельность, которая начинается с концепции программной системы

Инженерная задача

Для заданного требования определить:

  • объект проверки;
  • условие проверки;
  • входные данные;
  • ожидаемый результат;
  • критерий прохождения.

Артефакт

Test Case

2. Уровни тестирования

ST_type.png

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): Эмуляция сбоев железа и сети для проверки тактик восстановления.

ST_s.png

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, пустые строки, отрицательные числа, переполнение
Мутационное тестирование Искусственное внесение ошибок в код и проверка, находят ли их тесты Качество набора тестов Для оценки эффективности автоматических тестов Изменить>на<и проверить, падает ли тест

Автоматизация тестирования

это инженерный механизм получения быстрой обратной связи о качестве программной системы. Ее цель не написать больше тестов, а встроить проверку качества в процесс разработки

📝 Стандартные задачи