Что такое тестирование программного обеспечения?
Тестирование ПО — проверка того, что программа работает так, как задумано: соответствует требованиям, корректно ведёт себя при неожиданных данных и не ломается там, где раньше работала. Цель — найти дефекты до того, как их найдёт пользователь.
Виды тестирования группируют по нескольким осям. По объекту: функциональное (что делает программа) и нефункциональное (нагрузка, безопасность, удобство). По уровню: модульное, интеграционное, системное, приёмочное. По способу выполнения: ручное и автоматизированное.
Полностью протестировать программу невозможно: комбинаций входных данных бесконечно много. Поэтому работа тестировщика — это выбор: техники тест-дизайна помогают покрыть максимум рисков ограниченным числом проверок.
Где применяется
Тестирование идёт на всех уровнях сразу. Разработчик закрывает логику модульными тестами, автоматизатор проверяет связки сервисов и ключевые пользовательские сценарии, ручной тестировщик исследует новую функцию и неожиданные ситуации, которые сложно предусмотреть заранее.
Отдельные виды проверок подключают по необходимости: нагрузочное тестирование перед распродажей, тестирование безопасности для платёжных сервисов, проверка доступности для государственных порталов, совместимость с браузерами и устройствами для массовых продуктов.
Пример
Форма заказа работает, пока в неё вводят ожидаемые данные. Тестировщик пробует пустое имя, телефон из букв, сумму в минус и двойное нажатие кнопки — и находит сценарий, при котором заказ создаётся дважды, а списание проходит один раз.
Частые вопросы
Какие виды тестирования существуют?
По уровню — модульное, интеграционное, системное, приёмочное. По способу — ручное и автоматизированное. По цели — функциональное, нагрузочное, безопасности, удобства использования, совместимости. Комбинация выбирается под продукт: платёжному сервису и внутреннему справочнику нужны разные наборы проверок.
Можно ли протестировать программу полностью?
Нет, и это базовый принцип профессии. Число возможных комбинаций данных и сценариев практически бесконечно. Поэтому задача не «проверить всё», а грамотно выбрать проверки: где вероятность ошибки выше и где её последствия для бизнеса серьёзнее.
Чем баг отличается от дефекта и ошибки?
В строгой терминологии ошибка — действие человека, дефект — её след в коде или документации, отказ — видимое неправильное поведение системы. В повседневной работе «баг» используют как общее слово для дефекта, и это никого не смущает.
Когда нужно начинать тестировать?
Как можно раньше — в идеале с требований, до написания кода. Ошибка, найденная в требованиях, исправляется правкой формулировки. Та же ошибка, обнаруженная после релиза, обходится в разы дороже: переделка, повторное тестирование, испорченный опыт пользователей.