Для начала, что такое уровень тестирования? Как определяет ISTQB:
“Уровни тестирования — это группы тестовых активностей (мероприятий), которые организуются и управляются совместно.
Каждый уровень тестирования представляет собой экземпляр процесса тестирования, выполняемого в отношении программного обеспечения на определенной стадии разработки, от отдельных компонентов до полных систем.
Уровни тестирования связаны с другими активностями в SDLC-цикле. В последовательных SDLC-моделях уровни тестирования часто описываются таким образом, что критерии выхода с одного уровня являются частью критериев входа на следующий уровень (но в некоторых итеративных моделях это может быть не так).
Активности по разработке могут охватывать несколько уровней тестирования. Уровни тестирования могут пересекаться во времени.
Типы тестов — это группы тестовых активностей, связанных с определенными характеристиками качества, и большинство из этих активностей могут быть выполнены на каждом уровне тестирования.”
Итак, в версии 4.0 свода правил CTFL появляются Component integration testing и System integration testing:
- Компонентное тестирование: Это то, что намного чаще называется юнит- или модульным тестированием. Это тестирование изолированных компонентов, и для этого нам могут понадобиться тестовые обвязки или фреймворки для юнит-тестов. Тестовые обвязки — это например моки и стабы в фреймворке для юнит-тестирования. Стабы позволяют ускорить процесс, если продакшн-инфраструктура приложения недоступна; также может использоваться in-memory БД для тестирования функции, которая взаимодействует с базой данных. Компонентное тестирование должно выполняться разработчиками в своих dev-окружениях.
- Тестирование интеграции компонентов: также интеграционное тестирование модулей в терминологии ISTQB. Фокусируется на тестировании интерфейсов и взаимодействий между компонентами. Например, если мы тестируем компонент в системе с микросервисной архитектурой, связанной REST API, при тестировании интеграции компонентов мы проверяем, что ожидаемые ответы в JSON возвращаются нашему компоненту от другого компонента.
- Системное тестирование: На этом уровне проверяем поведение и функциональность всей системы (продукта). Тесты системного уровня чаще выполняются отдельной QA-командой. Наличие независимой команды позволяет передать системные тесты этой другой команде — с другим пониманием продукта. Это предотвращает возникновение дефектов, связанных с неправильным пониманием требований. На этом уровне проводим также тестирование нефункциональных требований, в первую очередь удобства и скорости.
- Тестирование интеграции системы: На этом уровне мы тестируем интерфейсы нашей системы и других систем. Пример: тестирование интеграции платежной системы с нашей системой.
- Приемочное тестирование: Этот уровень нацелен на проверку того, что система удовлетворяет бизнес-потребностям пользователя. Основными формами приемочного тестирования, определенными ISQTB, являются: пользовательское приемочное тестирование, эксплуатационное приемочное тестирование, контрактное приемочное тестирование и нормативное приемочное тестирование, а также альфа- и бета-тестирование.
Также: