3.4 Модульное, интеграционное, системное и приемочное тестирование
Классификация по уровню детализации приложения
Модульное тестирование или юнит-тестирование
Модульное тестирование или юнит-тестирование (англ. unit testing) — проводится для тестирования какого-либо одного логически выделенного и изолированного элемента (модуля) системы в коде. Проводится самими разработчиками, так как предполагает полный доступ к коду.
Модульное тестирование производят сами разработчики, не тестировщики.
Для чего это нужно?
Рассмотрим с вами идеальную ситуацию этапов разработки и тестирования программного продукта: разработчику поступает задача, для реализации некого функционала. Он пишет программный код, далее он сам должен руками это все проверить, а также написать юнит тест, который будет запускаться каждый раз, при сборке нового билда, то есть версии нашего продукта. Далее он передает его уже тестировщику, который проверяет уже различные сценарии тестирования данного функционала. То есть понятно, что разработчики не на столько углублены в процесс тестирования и его подходы, но они в любом случае должны проверить хотя бы позитивный сценарий руками.
Идея юнит тестов состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
Интеграционное тестирование (Integration testing)
Интеграционное тестирование (Integration testing) — тестирование, направленное на проверку корректности взаимодействия нескольких модулей, объединенных в единое целое.
Взаимодействие компонентов, модулей и иных систем между собой. Тестирование части системы, состоящей из 2-х и более модулей.
Пример: у нас с вами есть возможность оплаты товара на сайте, разработчики разместили там платежную систему, которая связывает наш сайт с внешней системой банка, то есть это взаимодействие нескольких систем между собой. Мы проверяем прошла ли оплата в полной мере.
Другой пример: предположим, что мы разрабатываем сайт по доставке еды, пользователь выбрал любимые блюда, ввел нужный адрес в поле с адресными данными или решил выбрать «указать на карте». Как вы понимаете, разработчики сайта не будут разрабатывать свою карту города, не будут строить маршруты, они воспользуются уже разработанным данным функционалом, например яндекс или google картами и просто подключат данный функционал для нашего сайта. И мы проверяем что данный адрес действительно отображается корректно на нашем сайте, что пользователь не ввел несуществующий адрес.
Еще один пример: интернет-магазин, мы авторизовались, выбрали товар и перенесли в корзину. После чего мы проверяем, что у нас в корзине именно выбранный нами товар, по названию, характеристикам, цене.
Все три примера являются интеграционным тестированием, то есть проверкой взаимодействия нескольких модулей или систем между собой
Системное тестирование (System testing)
Системное тестирование (System testing) — тестирование взаимодействия между всеми компонентами системы или разных систем между собой или тестирование интерфейсов, между которыми взаимодействует система. Полная проверка приложения, всех модулей, можно ли пройти весь бизнес путь.
Тут можно привести пример из урока по дымовому тестированию, когда мы проводим тестирование основного бизнес-процесса нашего продукта. Так же можно его усложнить, добавив сюда подходы из теста критического пути, когда мы работаем с фильтрами.
Авторизация – переход в каталог – выбор товара используя фильтры – перенос в корзину – подтверждение товара - оплата товара, проверка списания денежных средств – получение данных когда товар будет выслан или готов к выдачи – подтверждение получения товара
Приёмочное тестирование (acceptance test)
Приёмочное тестирование (acceptance test) — тестирование на сдаче приемки всего программного продукта или его части Заказчику
А) Пользовательское приемное тестирование (User Acceptance Testing) – перед релизом собирается группа конечных пользователей, тестируется основной функционал, при наличии дефектов-устраняются.
Приведу простой пример – мы разрабатываем компьютерную игру, сделали некую ее версию и выкладываем либо в открытой доступ, то есть в сеть или же для ограниченного количества пользователей и просим в нее поиграть, сказать свои впечатления.
Б) Эксплуатационное (Operational acceptance testing) – производится пользователем или администратором в среде, которая имитирует реальные условия эксплуатации ПО, производится тестирование резервного копирования, аварийное восстановление системы, безопасность ПО.
В) На соответствие контракту – на соответствие гостов, нормативных актов и т.д