Открыть сервисСервис

Виды тестирования программного обеспечения

Виды тестирования — это классификация способов проверки программного обеспечения, при которой программа или её отдельные компоненты исследуются на соответствие требованиям, корректность работы и наличие дефектов. В инженерии программного обеспечения (software engineering) тестирование рассматривается как самостоятельная дисциплина, а его виды выделяются по нескольким независимым основаниям: по объекту проверки, по цели, по степени автоматизации, по доступу к внутренней структуре кода и по моменту проведения в жизненном цикле разработки. Единой универсальной классификации не существует: на практике виды тестирования комбинируются, а их набор зависит от типа продукта, требований заказчика и модели разработки.

Классификация по цели и уровню

Функциональное и нефункциональное тестирование

Функциональное тестирование проверяет, что система выполняет заявленные функции: корректно обрабатывает входные данные, выдаёт ожидаемый результат, соблюдает бизнес-логику. К нему относятся проверка сценариев пользователя, обработка ошибок и граничных значений.

Нефункциональное тестирование оценивает качества системы, не связанные напрямую с функциями:

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

По масштабу проверяемого объекта выделяют четыре основных уровня:

УровеньЧто проверяетсяКто выполняет
Модульное (unit)Отдельные функции, классы, методыРазработчик
ИнтеграционноеВзаимодействие модулей и сервисовРазработчик, тестировщик
СистемноеПродукт целикомТестировщик
ПриёмочноеСоответствие требованиям заказчикаЗаказчик, конечный пользователь

Классификация по доступу к коду

Тестирование «чёрного ящика» предполагает, что проверяющий не знает внутреннего устройства программы и работает только через интерфейс, подавая входные данные и сравнивая результат с ожидаемым. Этот подход характерен для системного и приёмочного тестирования.

Тестирование «белого ящика» основано на знании исходного кода: анализируются ветвления, циклы, покрытие строк и условий. Такой подход применяется преимущественно на уровне модулей.

Тестирование «серого ящика» — промежуточный вариант, при котором тестировщик частично осведомлён о внутренней структуре, например знает схему базы данных или архитектуру API.

По степени автоматизации

Ручное тестирование выполняется человеком без применения специальных скриптов. Оно незаменимо при исследовательском (exploratory) тестировании, проверке юзабилити и в случаях, когда сценарии сложно формализовать.

Автоматизированное тестирование использует программные средства: фреймворки модульных тестов, инструменты для тестирования интерфейса, системы непрерывной интеграции. Автотесты применяются для регрессионных проверок, которые нужно повторять многократно.

Отдельно выделяют полуавтоматизированное тестирование, где часть шагов выполняет человек, а часть — скрипты.

Специальные виды

  • Регрессионное тестирование — повторная проверка после изменений в коде, чтобы убедиться, что новые правки не нарушили ранее работавшие функции.
  • Дымовое тестирование (smoke) — быстрая проверка ключевых функций сразу после сборки; если она не проходит, дальнейшее тестирование нецелесообразно.
  • Санитарное тестирование (sanity) — узкая проверка конкретного исправления или небольшого участка.
  • Нагрузочное и стресс-тестирование — оценка поведения системы при пиковых и запредельных нагрузках.
  • Тестирование безопасности (пентест) — имитация атак для выявления уязвимостей.
  • Локализационное тестирование — проверка корректности перевода, форматов дат, валют и раскладок.
  • Исследовательское тестирование — одновременное изучение продукта и поиск дефектов без заранее составленных сценариев.
  • A/B-тестирование — сравнение двух версий продукта на разных группах пользователей для выбора более эффективной.

Организация процесса

В зависимости от момента проведения различают каскадное тестирование (после завершения разработки) и итеративное, встроенное в короткие циклы. Гибкие методологии (Agile) предполагают непрерывное тестирование на протяжении всего проекта, а практика разработки через тестирование (TDD) требует написания тестов до появления самого кода.

Документирование видов тестирования ведётся в тест-планах, чек-листах и тест-кейсах. Для оценки полноты проверок применяются метрики покрытия: покрытие требований, покрытие кода, покрытие ветвлений.

Значение

Выбор видов тестирования определяет, насколько полно будет проверен продукт и какие риски останутся невыявленными. Избыточное тестирование увеличивает сроки и стоимость разработки, недостаточное — приводит к дефектам у пользователей. На практике набор видов тестирования подбирают исходя из критичности системы: для банковских и медицинских приложений требования к безопасности и надёжности выше, чем для внутренних утилит.

Источники: стандарты IEEE 829 и ISO/IEC/IEEE 29119, материалы по методологиям разработки программного обеспечения, учебные курсы по тестированию ПО.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru