Последние 10 лет сфера тестирование ПО стремительно развивалась. Появилось множество инструментов и процессов, которые существенно упрощают и улучшают процесс тестирования. Тем не менее проблема эффективного и качественного тестирования приложений остается актуальной, особенно если речь идет о тестировании системы, имеющую микросервисную архитектуру.
Говоря о тестировании, стоит понимать, что существуют общие принципы тестирования программного обеспечения, которые адаптируются под тестируемый объект. В зависимости от сути объекта подбираются и используются подходящие, иногда специфические инструменты. В этой статье мы расскажем вам об общих методах тестирования, которые применимы к микросервисной архитектуре, а также поделимся некоторыми специальными инструментами, которые могут быть полезны при тестировании микросервисов.
Микросервисная архитектура представляет собой вариант сервисно-ориентированной архитектуры программного обеспечения, направленный на взаимодействие насколько это возможно небольших, слабо связанных и легко изменяемых модулей — микросервисов.
Тестирование микросервисов является непростой задачей, потому что сервисы независимы и часто обмениваются данными между собой.
Чтобы выяснить, как эффективно тестировать микросервисы, важно знать шесть основных тестов, которые должны выполнять группы разработчиков программного обеспечения, и общие инструменты, которые они могут использовать для реализации тестирования.
Шесть основных тестов ПО
Существует шесть основных типов тестирования, которые применимы также и к микросервисам.
Unit-тест. Проверяет наименьший фрагмент тестируемого программного кода, чтобы убедиться, что он работает правильно.
Модульный тест. Тестирует микросервисы в изолированной среде, при необходимости поддерживая фиктивные двойники, чтобы убедиться, что они соответствуют требованиям.
Интеграционный тест. Проверяет правильность работы связи и взаимодействия между компонентами.
Контрактный тест. Подтип интеграционного теста. Проверяет взаимодействия на границе внешней службы, чтобы убедиться, что она выполняет контракт, который ожидает потребляющая служба.
Сквозной тест. Гарантирует совместную работу всех компонентов, соответствие внешним требованиям и достижение намеченной функциональности.
Тест производительности. Гарантирует, что система обеспечивает высокую доступность, устойчивое потребление ресурсов и соответствующую балансировку рабочей нагрузки.
Популярные инструменты тестирования микросервисов
Существует множество инструментов для отслеживания, контроля и, при необходимости, корректировки работы и дизайна микросервисов. Собрали для вас основные инструменты тестирования микросервисов, обычно используемые в индустрии разработки.
Gatling — это инструмент нагрузочного тестирования, написанный на Scala, который позволяет запускать симуляции на нескольких платформах. В конце моделирования Gatling автоматически сообщает такие показатели, как количество активных пользователей и время отклика. Обычно он используется для тестирования микросервисов и производительности веб-приложений.
Hoverfly — это автоматизированный инструмент моделирования связи API с открытым исходным кодом, который помогает в интеграционном тестировании. Пользователь может проверить, как API реагируют на определенные события, такие как сетевая задержка и ограничение скорости. Он также выполняет тестовые вызовы между микрослужбами, имитируя связь, а затем фиксирует запросы и ответы в режиме прокси, чтобы убедиться, что они работают должным образом.
Pact — это инструмент тестирования контрактов, который проверяет взаимодействие HTTP и сообщений, чтобы убедиться, что приложения работают правильно по контракту. По сути, службы-потребители определяют, как службы-поставщики должны предоставлять им необходимые данные. Предоставляющая услуга затем непрерывно тестирует, чтобы убедиться, что они соответствуют контрактам, предоставляя индивидуальную методологию тестирования, которая в идеале сокращает количество крупных модульных тестов.
Vagrant от HashiCorp - инструмент виртуализации, который позволяет ИТ-командам создавать уникальные среды разработки программного обеспечения, тестировать сценарии управления инфраструктурой и отслеживать развертывания.
VCR — это инструмент модульного тестирования, который перехватывает HTTP-вызовы. Он сохраняет эти вызовы и воспроизводит их в будущих тестах, чтобы ускорить процесс. Другой пример — WireMock, фиктивный HTTP-сервер, который можно использовать для записи и воспроизведения взаимодействий с API, создания ошибок, отслеживания задержек связи и имитации поведения с отслеживанием состояния.