Тестирование это многоуровневый процесс. В него входит достаточно много различных видов тестирования. Нужны они как раз для того, чтобы можно было систематизировать различные подходы и принципы. Давайте начнём по порядку.
Разделим тестирование по уровню детализации приложения:
Модульное тестирование
Модульное тестирование — это метод проверки программного обеспечения, направленный на анализ отдельных модулей или компонентов программы.
Цель такого тестирования заключается в подтверждении работоспособности каждого модуля и его соответствия установленным требованиям.
Пример модульного тестирования:
Допустим, у нас есть функция, которая складывает два числа и возвращает их сумму. Мы можем создать несколько тестов для этой функции, чтобы проверить её работу в различных сценариях:
- Тест на корректность работы функции при сложении двух положительных чисел.
- Тест на корректность работы функции при сложении отрицательного и положительного чисел.
- Тест на корректность работы функции при сложении двух отрицательных чисел.
- Тест на обработку исключительных ситуаций, например, попытку сложить числа разных типов.
Каждый из этих тестов проверяет определённый аспект работы функции, что позволяет убедиться в её надёжности и правильности работы.
Такими тестами покрываются небольшие участки кода. Ошибки в таких тестах можно быстро обнаружить, и как следствие быстро исправить.
Преимущества модульного тестирования
- Каждый отдельный модуль легко документировать, что упрощает его поддержку и модификацию в дальнейшем.
- Регулярное выполнение модульных тестов позволяет оперативно находить ошибки и исправлять их до того, как они станут критическими.
- Тестирование гарантирует, что каждый модуль выполняет свою функцию правильно. Это особенно важно для сложных программных систем.
Недостатки модульного тестирования
- Разработка и поддержка модульных тестов требует много времени, так как таких тестов достаточно много.
- Если тесты написаны некачественно или не полностью покрывают функционал модуля, они могут пропустить ошибки.
- Отсутствие ошибок в отдельных модульных тестах не гарантируют, что при взаимодействии модулей ошибок не будет.
Интеграционное тестирование
Интеграционное тестирование — это процесс проверки взаимодействия и совместной работы нескольких программных модулей или компонентов как единого целого.
Цель — убедиться, что все модули работают вместе корректно и выполняют свои функции в соответствии с требованиями.
Пример интеграционного тестирования:
Предположим, у нас есть система, состоящая из трёх модулей: пользовательского интерфейса, бизнес-логики и базы данных. Интеграционное тестирование будет включать проверку следующих аспектов:
- Взаимодействие пользовательского интерфейса с бизнес-логикой: Пользователь взаимодействует в веб приложением (ищет товар, вводит данные)
Взаимодействие бизнес-логики с базой данных:
- Система корректно возвращает данные из БД, открывает нужные вкладки и показывает корректную информацию.
Обработка исключений:
- Система обрабатывает данные полученные от пользователя, валидирует их, корректно выводит ошибки и информирует о неточностях.
Интеграционное тестирование помогает обнаружить проблемы, которые невозможно выявить на уровне модульного тестирования, когда каждый модуль тестируется изолированно.
Также проверка взаимодействия между модулями важна, так как эти модули могли писаться разными разработчиками, с использованием разных классов и методов. Что в свою очередь может вызывать сбои.
Преимущества интеграционного тестирования
- Интеграционное тестирование выявляет проблемы, возникающие при взаимодействии между различными компонентами системы, которые могут быть пропущены при модульном тестировании.
- Успешные тесты в интеграционном тестировании, дают больше гарантий о работоспособности системы.
Недостатки интеграционного тестирования
- Так как это совокупность модулей, выявить ошибку сложнее, может быть непонятно какой компонент вызвал ошибку.
- После исправления ошибки, нужно будет протестировать связанный функционал, что отнимает больше времени. Не получится запускать отдельные модули, так как проверить нужно взаимосвязь между ними
Системное тестирование
Системное тестирование — это финальный этап проверки программного обеспечения перед его выпуском. Оно включает в себя комплексное тестирование всей системы, чтобы убедиться в её стабильности и соответствии требованиям.
Цель системного тестирования — проверить, корректно ли работает программное обеспечение в различных условиях, удовлетворяет ли оно требованиям заказчика или стандартам, а также выявить и исправить ошибки и проблемы, которые могут возникнуть при взаимодействии компонентов системы.
Пример системного тестирования:
Представим, что вы создали веб-приложение для управления задачами. Системное тестирование такого приложения может включать следующие шаги:
- Авторизация на сайте для покупки товаров
- Поиск и оформление заказа, для дальнейшей покупки
- Оплата заказа
Этот пример показывает, что здесь тестируются уже пользовательские сценарии.
Мы убеждаемся в работе системы в целом. Наше тестирование максимально приближено к поведению системы с точки зрения конечного пользователя.
Приемочное тестирование
Приемочное тестирование - конечный этап тестирования, в котором проверяется соответствие системы требованиям и бизнес процессам.
Цель - определить, соответствует ли продукт требованиям заказчика и готов ли он к использованию конечными пользователями.
Пример приемочного тестирования:
Разрабатывается мобильное приложение для отслеживания физической активности. В ходе UAT-тестирования проверяется, корректно ли отображаются данные о тренировках, синхронизируется ли приложение с фитнес-трекерами, удобно ли пользоваться интерфейсом и т.д. Также проверяется, соответствует ли приложение требованиям безопасности и защиты данных.
Ошибок на данном этапе быть не должно, если есть то их исправление очень дорого обойдется.
Формы приёмочного тестирования:
- Бета-тестирование — это форма приёмочного тестирования, при которой продукт предоставляется ограниченному кругу пользователей для тестирования и предоставления обратной связи до его официального выпуска. Бета-тестирование позволяет выявить серьёзные проблемы и получить отзывы пользователей перед массовым распространением продукта.
- Пользовательское приемочное тестирование (UAT) — это форма приёмочного тестирования, при которой пользователи проверяют продукт на соответствие их потребностям и ожиданиям. UAT проводится после того, как продукт прошёл функциональное и нефункциональное тестирование, и предназначен для подтверждения того, что продукт готов к использованию.
- Контрактное приемочное тестирование — это форма приёмочного тестирования, которая используется в контексте проектов, основанных на контрактах. В рамках контрактного приемочного тестирования заказчик проверяет соответствие продукта условиям контракта и требованиям к проекту.
- Эксплуатационное приемочное тестирование — это форма приёмочного тестирования, которая проводится после установки продукта в рабочей среде. Эксплуатационное приемочное тестирование предназначено для проверки того, что продукт соответствует требованиям к эксплуатации и обеспечивает ожидаемую производительность.
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!