Prog Academy
RU UA
QA и тестирование

Что такое тестирование программного обеспечения?

Тестирование ПО — проверка того, что программа работает так, как задумано: соответствует требованиям, корректно ведёт себя при неожиданных данных и не ломается там, где раньше работала. Цель — найти дефекты до того, как их найдёт пользователь.

Виды тестирования группируют по нескольким осям. По объекту: функциональное (что делает программа) и нефункциональное (нагрузка, безопасность, удобство). По уровню: модульное, интеграционное, системное, приёмочное. По способу выполнения: ручное и автоматизированное.

Полностью протестировать программу невозможно: комбинаций входных данных бесконечно много. Поэтому работа тестировщика — это выбор: техники тест-дизайна помогают покрыть максимум рисков ограниченным числом проверок.

Подробная статья в блоге →

Связанные термины

QA

QA (Quality Assurance) — обеспечение качества продукта: работа над тем, чтобы дефекты не появлялись, а не только находились. QA охватывает весь процесс разработки — от анализа требований до выпуска версии.

Manual Testing

Ручное тестирование — проверка продукта человеком без запуска автотестов: тестировщик сам проходит сценарии, изучает поведение интерфейса и фиксирует расхождения с ожидаемым результатом.

Test Automation

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

Unit Testing

Модульное тестирование — проверка отдельной небольшой части кода — функции или класса — в изоляции от остальной системы. Такой тест не обращается к базе данных и внешним сервисам: вместо них подставляют заглушки.

E2E Testing

E2E (end-to-end) тестирование — проверка полного пользовательского сценария на собранной системе: тест открывает браузер, регистрируется, добавляет товар в корзину, оплачивает и убеждается, что заказ появился. Все компоненты при этом работают по-настоящему.

Regression Testing

Регрессионное тестирование — повторная проверка уже работавшей функциональности после изменений в коде. Его цель — убедиться, что новая функция или исправление бага не сломали ничего из того, что раньше работало.