Моделирование архитектуры программного продукта является важной частью процесса разработки. Выбор конкретного архитектурного решения зависит от многих факторов, в частности от назначения разрабатываемой системы. Несмотря на разнообразие подходов построения архитектуры приложений, в рамках современных проектов, нуждающихся в легкой масштабируемости, в последнее время предпочтение отдается микросервисам. Термин «Microservice Architecture» описывает технологию разработки программного обеспечения, при которой приложение представляет собой совокупность слабосвязанных сервисов. Сервисы строятся вокруг бизнес-логики и имеют возможность независимого развертывания. Каждый сервис работает в своем процессе и взаимодействует с другими сервисами при помощи легковесных механизмов, например, таких как HTTP [2]. При этом разработка каждого сервиса может происходить независимо от других, это позволяет организовать процесс разработки гибко и распределено.
Предоставление качества программного продукта - один из важных этапов в его разработке. На данный момент качественное программное обеспечение является необходимым требованием в области информационных технологий. Во время этапов планирования и реализации проекта важно использовать эффективные средства и методы контроля качества [3]. В связи с ростом значимости микросервисов, возникает необходимость пересмотреть стратегию тестирования, которая применялась к монолитным приложениям. Согласно ресурсам NGINX, в 2015 году 68% организаций проводили исследования по внедрению микросервисов [4]. Такой рост отражает переход от крупных приложений с кодовым содержанием (монолитов) к более легким приложениям. Учитывая, что приложения, построенные в архитектуре микросервисов, обеспечивают высокую функциональность и производительность, тестирование должно охватывать каждый уровень сервисов и их взаимодействие.
Целью работы является создание методики эффективной автоматизации тестирования приложения с микросервисной архитектурой. Объектом является архитектура микросервисов, а предметом сформированный набор тестов для автоматизации тестирования. В приведенном ниже исследовании будут рассмотрены несколько этапов:
• Изучение особенностей разработки и тестирования приложения с микросервисной архитектурой
• Изучение существующих методов тестирования приложений
• Описание эффективного метода автоматизации тестирования с учетом архитектуры
• Реализация автоматизации тестирования по выбранному методу
В ходе выполненной работы были изучены особенности тестирования приложений с микросервисной архитектурой, в том числе практики по автоматизации тестирования и развертывания, позволяющие улучшить качество программного обеспечения, построенного в архитектуре сервисов.
Были изучены виды тестирования и рассмотрены существующие методы автоматизации. В ходе исследования были выявлены причины, по которым существующие техники тестирования недостаточно применимы к микросервисным приложения, был описан метод автоматизации тестирования, подходящий для микросервисов.
Результатом выполнения выпускной квалификационной работы стало новое решение по автоматизации тестирования приложений, построенных в микросервисной архитектуре. Автоматизация веб-приложения по описанному методу позволила своевременно уведомлять инженеров-тестировщиков об обнаруженных дефектах и улучшить качество веб-приложения.
Также данное решение помогло сократить расходы на тестирование в 2 раза, существенно уменьшить количество ручного тестирования и сократить время, затраченное на оценку качества продукта в 2,5 раза.
Данная работа и исходный код были размещены в GitLab - http: //gititis. kpfu.ru/AEPorfileva/Autotesting