| Что такое тест-покрытие? |
| 20.01.2026 00:00 |
|
Мы живём во времена, когда измерить можно что угодно. Веб-сайты отслеживают посещения пользователей со всего мира; видео на YouTube фиксируют просмотры и лайки; мобильные приложения собирают статистику сбоев. Поэтому логично, что менеджеры по разработке программного обеспечения стремятся замерить качество процессов. К сожалению, у нас не всегда есть чёткий язык для описания измеряемого. Возможно, вы слышали, как менеджер говорил о достижении «100% тест-покрытия». Но что именно он имеет в виду под этим утверждением? Вот несколько вариантов, что это может означать, и один вариант, чего это значить ни в коем случае не может. Тест-покрытие может означать покрытие кода Иногда, когда говорят о тест-покрытии, на самом деле имеют в виду покрытие кода. Покрытие кода — это количество строк кода, которые выполняются при запуске автоматизированных тестов для продукта или функции. Области, не затронутые автоматизированными тестами, могут указывать на пробелы в тестировании. Юнит-тесты — отличный способ увеличить покрытие кода, так как они предназначены для непосредственной проверки кода. Существует множество инструментов для измерения покрытия кода – например, DotCover, Coverlet, Cobertura и SonarQube. Тест-покрытие не означает количество всех возможных тестовРаспространённая ошибка людей, которые никогда не тестировали ПО, заключается в том, что они считают, будто количество тестируемого в приложении ограничено, и поэтому можно достичь 100% тест-покрытия. Это просто невозможно. Нет предела количеству тестов, которые можно создать даже для самых простых приложений. Рассмотрим простую веб-форму с пятью полями, ни одно из которых не является обязательным. Пользователь может заполнить только одно поле (пять разных вариантов), только два поля (десять вариантов), три поля (десять вариантов), четыре поля (пять вариантов) или все пять полей. Это уже 31 тест-кейс, и это без учёта негативного тестирования. Что если одно поле содержит ошибку, а два поля заполнены правильно? Что если три поля содержат ошибку, а одно правильно? Легко увидеть, как количество тестовых сценариев может быстро вырасти до миллионов. Поэтому ни одна команда никогда не достигнет 100% тест-покрытия в таком понимании. Тест-покрытие может означать покрытие автоматизациейТермин «тест-покрытие» может использоваться для обозначения процента ручных тест-кейсов, которые были автоматизированы. Это полезно для отображения статуса проекта автоматизации. Если у вас 500 задокументированных ручных тест-кейсов, и вы автоматизировали 200 из них, покрытие автоматизацией составит 40%. Однако это значение менее полезно, если у вас ещё нет задокументированного набора ручных тестов. Если задокументировано лишь несколько тестов, команда может заявить о 100% покрытии автоматизацией после автоматизации этих тестов, в то время как сотни других тест-кейсов могут остаться без внимания. Тест-покрытие может означать покрытие функцийЕщё одно возможное значение тест-покрытия — это измерение того, для каких функций приложения существуют тесты. Если продукт имеет десять функций, а тестировщик выполняет тесты для пяти из них, можно сказать, что 50% функций протестированы. При этом важно уточнять, что подразумевается под «тестированием». Это может означать проведение и документирование исследовательского тестирования без создания регрессионного набора тестов. Или это может означать создание ручных регрессионных тестов, или написание кода автоматизации. Также учтите, что нельзя утверждать, что функция имеет 100% покрытие – по вышеуказанной причине. О чем может рассказать тест-покрытие?Тест-покрытие может показать, сколько строк кода выполняется тестами, сколько тестирования проведено для функции, сколько регрессионных тестов создано или сколько автоматизированных тестов написано. Но это имеет смысл только в том случае, если все члены команды или организации согласовали значение термина. Если вашей команде предложат начать измерять «тест-покрытие», поделитесь этой статьёй с инициатором и попросите уточнить, какую именно информацию он хочет получить. |