Тестирование — понятие и виды¶
Тестирование — это процесс проверки свойств объекта (программного обеспечения, материалов, оборудования, методик, людей) путём сопоставления их фактических характеристик с заранее заданными ожиданиями или требованиями. В широком смысле тестирование применяется в информатике, медицине, образовании, промышленности, психологии и научных исследованиях. В узком, наиболее распространённом смысле под тестированием понимают проверку программного обеспечения (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»
