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

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

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

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

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

Где применяется

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

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

Пример

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

Частые вопросы

Какие виды тестирования существуют?

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

Можно ли протестировать программу полностью?

Нет, и это базовый принцип профессии. Число возможных комбинаций данных и сценариев практически бесконечно. Поэтому задача не «проверить всё», а грамотно выбрать проверки: где вероятность ошибки выше и где её последствия для бизнеса серьёзнее.

Чем баг отличается от дефекта и ошибки?

В строгой терминологии ошибка — действие человека, дефект — её след в коде или документации, отказ — видимое неправильное поведение системы. В повседневной работе «баг» используют как общее слово для дефекта, и это никого не смущает.

Когда нужно начинать тестировать?

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

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

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