Семь уроков подряд ты строил тестовые наборы: искал позитив и негатив, резал диапазоны на классы эквивалентности, ловил границы, собирал таблицы решений, гонял состояния и переходы, комбинировал условия попарно и включал воображение через error guessing. Через две недели руководитель или заказчик спросит не «какими техниками ты пользовался», а короче и жёстче: «мы всё проверили?» Интуитивное «вроде да» тут не годится — нужен ответ, который можно посчитать и показать в отчёте. Отсюда понятие покрытия (coverage).
Чему научишься за этот урок:
— посчитать покрытие требований по формуле на числовом примере;
— объяснить, чего покрытие НЕ гарантирует, и не попасться на ложное чувство полноты;
— не путать покрытие требований с покрытием кода и покрытием рисков.
Покрытие требований: формула и число
Покрытие требований — это доля требований, для которых существует хотя бы один тест. Представь: 1 требование, тест на него уже есть — покрытие 100%. Добавилось второе требование, а тест пока написан только на первое — покрытие упало до половины, 50%. Добавилось третье требование, и на него тоже нашёлся тест — покрытие снова выросло, до двух третей. На любом количестве требований работает одна и та же формула: количество требований, у которых есть хотя бы один тест, делим на общее количество требований, и умножаем на 100%. Число получается конкретное, его можно сравнить с прошлым спринтом и показать в отчёте руководителю без слова «вроде».
Возьмём раздел «Регистрация» учебного полигона. К нему записано 10 требований:
- Email обязателен для заполнения
- Пароль должен быть от 8 до 20 символов
- Пароль должен содержать хотя бы одну цифру
- Имя обязательно для заполнения
- Email должен быть в корректном формате (наличие «@» и домена)
- После регистрации пользователю приходит письмо-подтверждение
- Повторная регистрация с уже существующим email запрещена
- Согласие с политикой конфиденциальности обязательно
- Пароль не должен совпадать с email
- Дата регистрации сохраняется в профиле пользователя
Тесты уже написаны для первых восьми требований. На требования 9 («пароль не совпадает с email») и 10 («дата регистрации сохраняется») тестов пока нет. Считаем: 8 требований из 10 имеют хотя бы один тест. 8 / 10 = 0,8, умножаем на 100% — покрытие требований раздела «Регистрация» равно 80%.
Чего покрытие НЕ означает
Здесь кроется главная ловушка метрики. 100% покрытие требований означает только «на каждое требование есть хотя бы один тест». Это НЕ означает «для каждого требования проверены все классы эквивалентности, все границы и все комбинации». Можно честно отчитаться о 100% покрытии и одновременно пропустить критичный баг.
Разберём на требовании 1 из списка выше — «Email обязателен для заполнения». Тестировщик написал один тест: вводит корректный email, нажимает «Зарегистрироваться», аккаунт создаётся. Тест есть, требование формально покрыто — вносим его в те самые 8 из 10. Но этот тест ни разу не проверил слово «обязателен»: он не оставлял поле пустым и не смотрел, что произойдёт. Баг «форма создаёт аккаунт без email, если стереть значение уже после ввода» остаётся живым — а отчёт о покрытии этого не покажет, потому что отчёт считает наличие теста, а не то, ЧТО именно тест проверяет.
Число покрытия отвечает на вопрос «есть ли тест?». Оно не отвечает на вопрос «достаточно ли глубоко проверено?». Это два разных вопроса, и путать их — значит вводить в заблуждение и себя, и того, кому отчитываешься.
Другие метрики с похожим названием
Слово «покрытие» в тестировании используют ещё для двух разных вещей, и их легко перепутать с покрытием требований:
- Покрытие кода (code coverage). Доля строк или веток исходного кода, которые были выполнены хотя бы раз во время тестов. Это метрика уровня кода, её обычно считают автоматические инструменты при модульном тестировании — это не задача ручного тестировщика, но термин часто путают с покрытием требований в разговоре.
- Покрытие рисков (risk coverage). Подход, при котором сначала проверяются зоны с высоким риском — деньги, персональные данные, безопасность, — а не всё подряд поровну. Например, в разделе «Оплата курса» сумма списания и данные карты проверяются раньше и тщательнее, чем текст на кнопке «Оплатить», даже если формально оба — «требования».
Раздел "Регистрация" - 10 требований, есть тест или нет 1. Email обязателен для заполнения............ [x] 2. Пароль от 8 до 20 символов................... [x] 3. Пароль содержит хотя бы одну цифру........... [x] 4. Имя обязательно для заполнения............... [x] 5. Email в корректном формате.................... [x] 6. Письмо-подтверждение после регистрации........ [x] 7. Запрет повторной регистрации с тем же email... [x] 8. Согласие с политикой конфиденциальности....... [x] 9. Пароль не совпадает с email................... [ ] 10. Дата регистрации сохраняется в профиле....... [ ] Покрыто тестами: 8 из 10 = 80% ВАЖНО: 80% - это "на 8 требований есть хотя бы один тест", а НЕ "эти 8 требований проверены достаточно глубоко" (границы, негатив, комбинации могли остаться без теста).
Итог:
— покрытие требований = (требования с тестом) / (все требования) × 100% — конкретное, измеримое число;
— 100% покрытия НЕ значит «протестировано достаточно глубоко» — оно значит только «тест есть»;
— покрытие кода и покрытие рисков — другие метрики с похожим названием: не путай их с покрытием требований в отчёте.
Контрольный вопрос. Как правильно посчитать покрытие требований тестами?
Подсказка: Формула считает долю требований, а не долю тестов или багов.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. На разделе полигона «Каталог курсов» 12 требований. Тесты написаны для 9 из них. Каково покрытие требований в процентах?
Подсказка: Раздели число требований с тестом на общее число требований, результат умножь на 100.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Как называется метрика, которая показывает долю требований, у которых есть хотя бы один тест? Ответь двумя словами.
Подсказка: Название метрики из этого урока, состоит из двух слов.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Требование «Email обязателен для заполнения» покрыто одним тестом: тестировщик вводит корректный email и проверяет, что регистрация проходит успешно. Теста на пустой email не написано. Какие из утверждений верны (выбери все подходящие)?
Выберите все верные варианты.
Подсказка: Вспомни: покрытие отвечает на вопрос «есть ли тест», а не «что именно он проверяет».
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Какая метрика показывает, какая доля строк исходного кода была выполнена хотя бы раз во время тестов?
Подсказка: Речь про исходный код, а не про список требований.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Какой подход описывает принцип «сначала проверяем зоны с высоким риском — деньги, персональные данные, безопасность, — а не всё подряд поровну»?
Подсказка: Речь про приоритет по риску, а не про долю требований или строк кода.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. На разделе «Оплата курса» 10 требований. Тесты написаны для всех 10 — покрытие требований 100%. При этом на требование «сумма списывается со счёта один раз за одну оплату» есть только один позитивный тест: успешная разовая оплата картой. Теста на двойной клик по кнопке «Оплатить» нет. Означает ли покрытие 100%, что баг с двойным списанием денег невозможен?
Подсказка: Вспомни разницу между «есть тест» и «проверено достаточно глубоко».
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. На разделе полигона «Личный кабинет» 15 требований. Тесты написаны для 12 из них. Посчитай покрытие требований в процентах. Ответ — целое число со знаком %, например «50%».
Подсказка: Раздели число требований с тестом на общее число требований, результат умножь на 100.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. На сервере сборки настроен автоматический подсчёт: какая доля строк кода выполнилась хотя бы раз при прогоне тестов. Это описание какой из метрик покрытия из урока? Ответь двумя словами.
Подсказка: Речь идёт про строки исходного кода, а не про список требований и не про риски.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. На разделе «Личный кабинет» учебного полигона 10 требований к работе профиля пользователя (вход, смена имени, смена email, история оплат и другие). Тесты написаны для 7 требований, для оставшихся 3 тестов пока нет. Посчитай покрытие требований раздела в процентах. Ответ — одно число со знаком %.
Подсказка: Раздели число требований с тестом на общее число требований, результат умножь на 100.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Руководитель написал в чат: «Покрытие требований раздела «Оплата» — 100%, можно принимать раздел в работу и выкатывать в продакшен». Тебе известно, что на каждое из требований написан ровно один позитивный тест, а негативных проверок (пустые поля, обрыв соединения, двойной клик по кнопке оплаты) нет ни одной. Объясни руководителю в 2-3 предложениях, почему цифра 100% сама по себе не значит, что раздел проверен достаточно глубоко для запуска, и что нужно сделать перед выкаткой оплаты в продакшен.
Принято, если ответ объясняет: (1) 100% покрытия требований значит только «на каждое требование есть хотя бы один тест», а не «проверены негативные и граничные случаи»; (2) в разделе с деньгами и персональными данными нужны ещё негативные проверки (пустые поля, повторный клик, обрыв соединения) до выкатки в продакшен; (3) поэтому выкатывать раздел по одной цифре покрытия без негативных тестов рискованно.
Раздел «Оплата курса», 100% покрытие требований, только позитивные тесты, деньги и данные карты пользователя.
Подсказка: Раздели два вопроса: «есть тест на каждое требование?» и «проверены ли негативные сценарии внутри каждого требования?».
✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.
Онлайн-проверка ответа появится позже
Задание. До дедлайна успеваешь протестировать только половину из 20 требований раздела «Оплата курсов». 4 требования касаются суммы списания и данных банковской карты, остальные 16 — второстепенных вещей вроде отображения истории платежей и текста на кнопках. Если считать только покрытие требований, любые 10 из 20 протестированных требований дадут одинаковый результат — 50%. Какой принцип из урока подскажет протестировать в первую очередь именно 4 требования про деньги и данные карты, а не случайные 10 из 20? Ответь названием подхода — двумя словами.
Подсказка: Речь не про долю требований, а про то, какие зоны опаснее для бизнеса при пропуске бага.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Что дальше
Покрытие даёт число, которым можно отчитаться, но само по себе не отвечает на вопрос «а в какой форме записать тест, чтобы его вообще можно было посчитать и повторить?» В следующем, последнем уроке главы разберём выбор между двумя формами документации теста — чек-листом и тест-кейсом — и когда какая нужна.
← Назад к уроку 5.7 · ↑ В начало урока · ⌂ В начало курса · Вперёд →
