Что такое тестирование программного обеспечения?
Тестирование ПО — проверка того, что программа работает так, как задумано: соответствует требованиям, корректно ведёт себя при неожиданных данных и не ломается там, где раньше работала. Цель — найти дефекты до того, как их найдёт пользователь.
Виды тестирования группируют по нескольким осям. По объекту: функциональное (что делает программа) и нефункциональное (нагрузка, безопасность, удобство). По уровню: модульное, интеграционное, системное, приёмочное. По способу выполнения: ручное и автоматизированное.
Полностью протестировать программу невозможно: комбинаций входных данных бесконечно много. Поэтому работа тестировщика — это выбор: техники тест-дизайна помогают покрыть максимум рисков ограниченным числом проверок.
Связанные термины
QA (Quality Assurance) — обеспечение качества продукта: работа над тем, чтобы дефекты не появлялись, а не только находились. QA охватывает весь процесс разработки — от анализа требований до выпуска версии.
Manual TestingРучное тестирование — проверка продукта человеком без запуска автотестов: тестировщик сам проходит сценарии, изучает поведение интерфейса и фиксирует расхождения с ожидаемым результатом.
Test AutomationАвтоматизация тестирования — написание программ, которые сами выполняют проверки и сравнивают результат с ожидаемым. Такие тесты запускают при каждом изменении кода, чтобы быстро замечать поломки в уже работающей функциональности.
Unit TestingМодульное тестирование — проверка отдельной небольшой части кода — функции или класса — в изоляции от остальной системы. Такой тест не обращается к базе данных и внешним сервисам: вместо них подставляют заглушки.
E2E TestingE2E (end-to-end) тестирование — проверка полного пользовательского сценария на собранной системе: тест открывает браузер, регистрируется, добавляет товар в корзину, оплачивает и убеждается, что заказ появился. Все компоненты при этом работают по-настоящему.
Regression TestingРегрессионное тестирование — повторная проверка уже работавшей функциональности после изменений в коде. Его цель — убедиться, что новая функция или исправление бага не сломали ничего из того, что раньше работало.