Определение тестовых случаев
Этот материал содержит объяснение термина “определение тестовых случаев”, включая вопросы для проверки знаний и теги. Эта тема была важна на моём AP2 и часто встречается в экзаменах.
Суть вопроса
- Классы эквивалентности: группирует входные данные, которые система обрабатывает одинаково
- Анализ граничных значений: проверяет поведение ровно на границах (мин, макс, мин±1, макс±1)
- Покрытие ветвей и путей: гарантирует, что код проходит все возможные пути выполнения
Краткое описание понятий
Классы эквивалентности
Разбивает диапазон входных данных на классы, для которых система одинаково реагирует. На каждый класс приходится один тестовый случай.
Анализ граничных значений
Проверяет поведение точно на границах и рядом с ними. Ошибки чаще всего обнаруживаются именно на границах.
Покрытие ветвей (Branch Coverage)
Каждая ветвь (if/else) должна быть пройдена хотя бы один раз с результатом True и один раз с результатом False.
Покрытие путей (Path Coverage)
Проверяются все возможные комбинации ветвей (требует больших затрат).
Покрытие операторов (Statement Coverage)
Каждая строка кода должна быть выполнена хотя бы один раз.
Важные моменты для экзамена
- Классы эквивалентности: формировать валидные и невалидные классы
- Анализ граничных значений: тестировать мин, макс, мин-1, макс+1
- Покрытие ветвей: охватывать все пути if/else
- Покрытие путей: проходить все пути (в теории)
- Покрытие операторов: выполнить каждую строку
- Белый ящик: требует знания внутренней структуры кода
- Чёрный ящик: работает только через интерфейсы
Основные компоненты
- Формирование классов эквивалентности
- Анализ граничных значений
- Покрытие ветвей
- Покрытие путей
- Покрытие операторов
- Каталог тестовых случаев
- Анализ покрытия
- Инструменты (Coverage Tools)
- Приоритизация на основе рисков
- Документация
Практический пример (проверка возраста)
// Правило: возраст должен быть между 18 и 65 годами
// Классы эквивалентности:
// - валидные: [18, 65]
// - невалидные: <18, >65
// Анализ граничных значений:
// 17, 18, 19 (нижняя граница)
// 64, 65, 66 (верхняя граница)
// Тестовые случаи:
// - 17 (невалидно)
// - 18 (валидно, граница)
// - 19 (валидно)
// - 64 (валидно)
// - 65 (валидно, граница)
// - 66 (невалидно)
Типичные вопросы на экзамене (с кратким ответом)
- Что такое класс эквивалентности? Группа входных данных с одинаковым ожидаемым поведением системы.
- Зачем нужен анализ граничных значений? Ошибки чаще всего обнаруживаются на границах.
- Покрытие ветвей и покрытие операторов: в чём различие? Ветви: все пути if/else; операторы: каждая строка кода.
- Что такое покрытие путей? Проверка всех возможных комбинаций ветвей (требует значительных затрат).
Основные источники
- https://www.istqb.org
- https://junit.org/junit5/docs/current/user-guide/
- https://testing.googleblog.com



