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

Тестирование — понятие и виды

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

Тестирование программного обеспечения

Тестирование ПО — это вид деятельности, направленный на обнаружение дефектов программного продукта и предоставление заинтересованным сторонам информации о качестве тестируемого объекта. Согласно определению IEEE, тестирование — это процесс выполнения программы с целью обнаружения ошибок. Важно понимать, что тестирование само по себе не доказывает отсутствие дефектов — оно лишь выявляет их наличие.

Основные цели

  • Выявление расхождений между фактическим и ожидаемым поведением системы.
  • Оценка качества программного продукта и степени готовности к выпуску.
  • Предоставление объективных данных для принятия решений о релизе.
  • Снижение рисков, связанных с эксплуатацией программного обеспечения.

Классификация видов тестирования

ВидОбъект проверки
Модульное (unit testing)Отдельные модули или функции
ИнтеграционноеВзаимодействие между модулями
СистемноеРабота системы в целом
Приёмочное (acceptance testing)Соответствие требованиям заказчика
РегрессионноеОтсутствие новых дефектов после изменений
ПроизводительностьВремя отклика, нагрузка, масштабируемость
БезопасностьУстойчивость к угрозам
ЮзабилитиУдобство использования

Подходы к тестированию

Чёрный ящик — тестировщик не имеет доступа к внутренней структуре программы и проверяет только результаты работы системы на основе входных данных. Белый ящик — тестирование с полным знанием внутренней логики и структуры кода. Серый ящик — комбинированный подход, при котором тестировщик частично знаком с устройством системы.

Методы тестирования

Тестирование на основе требований — тестовые случаи формируются из анализа документации. Тестирование на основе рисков — приоритет отдаётся наиболее критичным функциям. Тестирование на основе пользовательских историй — проверяется поведение с точки зрения конечного пользователя. Тестирование с использованием случайных данных (fuzzing) — система подвергается воздействию некорректных или неожиданных входных данных.

Тестирование в разработке: место в жизненном цикле

В классической каскадной модели тестирование выделено в отдельную фазу после реализации. В гибких методологиях (Scrum, Kanban) тестирование интегрировано в каждую итерацию. В DevOps-подходе тестирование автоматизируется и выполняется непрерывно в рамках процессов CI/CD (непрерывная интеграция и непрерывная доставка).

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

Автоматизированное тестирование предполагает использование программных инструментов для выполнения тестовых сценариев. Популярные инструменты: Selenium, JUnit, pytest, Appium, Postman. Автоматизация снижает трудоёмкость регрессионного тестирования и повышает скорость выпуска обновлений. Полная автоматизация нецелелесообразна — ручное тестирование остаётся необходимым для проверки сценариев, требующих экспертного суждения.

Тестирование в других областях

В образовании

Тестирование — форма контроля знаний, предполагающая выполнение заданий стандартизированной формы. Различают тесты закрытой формы (несколько вариантов ответа) и открытой (свободный ответ). В России ЕГЭ и ОГЭ являются основными формами массового тестирования выпускников школ.

В медицине и психологии

Диагностические тесты используются для выявления заболеваний (лабораторные тесты, тесты на беременность, экспресс-тесты на инфекции). Психологические тесты (тесты интеллекта, личностные опросники) предназначены для измерения психических свойств. Их разработка требует соблюдения норм валидности, надёжности и стандартизации.

В промышленности

Испытания материалов и конструкций (на прочность, износостойкость, коррозионную стойкость) также относятся к тестированию. Стандарты ГОСТ и ISO определяют методы и условия проведения таких испытаний.

Роль тестирования в экономике

Стоимость исправления дефекта растёт экспоненциально в зависимости от этапа его обнаружения. Дефект, найденный на этапе эксплуатации, может обойтись в десятки и сотни раз дороже, чем дефект, выявленный при проектировании. Это обстоятельство обуславливает вклад средств в раннее тестирование и профилактику ошибок.

Источники:

  • IEEE 829 — Стандарт документирования тестирования программного обеспечения
  • ISO/IEC/IEEE 29119 — Международный стандарт тестирования программного обеспечения
  • ГОСТ Р ИСО/МЭК 12207 — Процессы жизненного цикла программных систем
  • Р. С. Pressman «Software Engineering: A Practitioner's Approach»
  • I. Sommerville «Software Engineering»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru