Есть много способов тестирования, по разным оценкам в среднем их больше 30.
Каждый из видов тестирования направлен на проверку различных аспектов программного обеспечения. Условно их можно разделить на шесть групп
1. По характеру сценариев
Сценарий в тестировании — это описание того, как пользователь будет взаимодействовать с готовым продуктом.
Тестирование позитивных сценариев проверяет, как должна работать программа в нормальных условиях.
Тестирование негативных сценариев проверяет, как программа ведет себя в необычных или некорректных ситуациях.
2. По критериям запуска программы или кода
Критерии запуска программы или кода означают условия, которые необходимо выполнить для запуска тестов. То есть для тестирования необходимо, либо чтобы программа была запущена, либо, наоборот, не запущена. Под эту группу подходит статическое тестирование и динамическое тестирование.
Статическое тестирование — это вид проверки программного обеспечения, который выполняется без запуска программы. Вместо этого тестировщики анализируют исходный код программы или другие составляющие, например, документацию.
Динамическое тестирование — это вид проверки программного обеспечения, который выполняется во время работы программы.
3. По степени автоматизации тестирования
Ручное тестирование — это проверка программного обеспечения вручную, без использования автоматизированных инструментов. Тестировщик взаимодействует с программой как обычный пользователь.
Автоматизированное тестирование — это проверка программного обеспечения с использованием специальных программных инструментов, которые выполняют тесты автоматически, без участия человека. Тестировщик создает скрипты или сценарии тестирования, которые содержат инструкции для выполнения определенных действий и проверки результатов.
4. По объектам тестирования
Функциональное тестирование проверяет соответствие программы или системы заранее определенным функциональным требованиям и ожиданиям. Основная цель функционального тестирования — убедиться, что программа выполняет свои функции и операции согласно спецификациям, а также работает правильно и без сбоев.
Функциональное тестирование делится на подвиды:
Нефункциональное тестирование проверяет нефункциональные аспекты программы — производительность, безопасность, надежность, масштабируемость и совместимость. Основная цель нефункционального тестирования — убедиться, что программа не только выполняет свои функции, но также соответствует требованиям к качеству, производительности и безопасности.
Нефункциональное тестирование делится на подвиды:
5. По степени знания системы
Тестирование «черного ящика» — это способ проверки программного обеспечения, когда тестировщик не знает внутренней структуры или деталей работы самой программы. Он смотрит на нее как на «черный ящик», и проверяет, как система взаимодействует с внешним миром и выполняет свои функции.
Такой подход позволяет сосредоточиться на тестировании того, как программа взаимодействует с пользователем и окружающей средой, не вдаваясь в детали ее внутренней реализации.
Тестирование «белого ящика», наоборот, предполагает, что тестировщик имеет доступ к внутренней структуре и коду программы. Он изучает, как работает программа «изнутри», чтобы убедиться, что все компоненты и функции написаны правильно и соответствуют требованиям.
Такой подход позволяет проверить детали реализации программы и выявить возможные ошибки, которые могли бы остаться незамеченными при тестировании «черного ящика».
Существует еще и тестирование «серого ящика» — это комбинация тестирования «черного ящика» и «белого ящика». Тестировщик знает некоторые детали внутренней структуры программы, но не обладает полной информацией о них. Он проверяет как внешнее поведение программы, так и использует некоторые знания о коде для определения эффективности и корректности работы программы.
6. По времени проведения тестирования
Альфа-тестирование — это этап тестирования программного обеспечения, который происходит перед его официальным выпуском и предполагает проверку продукта внутри компании-разработчика или ограниченной группой тестировщиков. Альфа-тестирование помогает выявить возможные проблемы и ошибки перед предоставлением продукта пользователю.
Дымовое тестирование — это быстрая проверка программного обеспечения, которую выполняют после внесения значительных изменений или обновлений в код. Этот вид тестирования напоминает «пробный пуск» программы, чтобы убедиться, что основные функции работают без критических ошибок.
Если после дымового тестирования в продукт добавляют какую-то фичу или просто хотят убедиться, что все предыдущие функции работают правильно, то проводят регрессионное тестирование. Тестировщики убеждаются, что новая функция работает правильно и выполняет свои задачи так, как ожидается, а все остальное не вызывает новых ошибок.
Приемочное тестирование выполняют представители заказчика, чтобы удостовериться, что продукт вышел качественным, и что за него можно заплатить деньги. Чтобы успешно пройти приемочное тестирование, обычно нужно просто выполнить тесты, которые доказывают соответствие программы требованиям.
И последний этап — бета-тестирование. Тестировщики предоставляют готовую программу ограниченной группе реальных пользователей, которые могут сами с ней провзаимодействовать. Юзеры выявляют дополнительные проблемы, получить обратную связь от пользователей и улучшить программу перед ее окончательным выпуском для широкой аудитории.