'
Научный журнал «Вестник науки»

Режим работы с 09:00 по 23:00

zhurnal@vestnik-nauki.com

Информационное письмо

  1. Главная
  2. Архив
  3. Вестник науки №8 (65) том 2
  4. Научная статья № 21

Просмотры  48 просмотров

Пеганов Д.Д.

  


УСКОРЕНИЕ РАЗРАБОТКИ ЧЕРЕЗ КОНТРАКТНОЕ ТЕСТИРОВАНИЕ С GO И PACT *

  


Аннотация:
ускорение разработки через контрактное тестирование с Go и Pact   

Ключевые слова:
язык ГО, тестирование приложений, программное обеспечение   


DOI 10.24412/2712-8849-2023-865-166-189

УДК 004

Пеганов Д.Д.

Тестировщик Программного Обеспечения в ЗАО «ТекХайв»

(г. Торревьеха, Испания)

 

УСКОРЕНИЕ РАЗРАБОТКИ ЧЕРЕЗ КОНТРАКТНОЕ ТЕСТИРОВАНИЕ С GO И PACT

 

Аннотация: ускорение разработки через контрактное тестирование с Go и Pact" - это экспертная статья, написанная автором с целью исследования и анализа сложностей, возникающих при автоматизированном тестировании в современном мире программного обеспечения. В ситуации, когда системы становятся все более сложными и взаимодействуют друг с другом и с множеством сторонних сервисов, подходы к тестированию требуют глубокого понимания и новаторских решений. Основной фокус автора направлен на концепцию контрактного тестирования - инновационного подхода, основанного на определении и проверке контрактов между компонентами системы. Это дает возможность создавать единообразные и предсказуемые интерфейсы, выявлять потенциальные проблемы взаимодействия компонентов на ранних стадиях разработки и облегчать командное взаимодействие. Автор подробно анализирует и обсуждает различные аспекты контрактного тестирования, акцентируя внимание на его роли в обнаружении и устранении ошибок, обеспечении согласованности и понимания между всеми участниками проекта. Результаты исследования подтверждают основные предположения и демонстрируют важность и эффективность контрактного тестирования в ускорении процесса разработки программного обеспечения.

 

Ключевые слова: язык ГО, тестирование приложений, программное обеспечение.

 

Введение в контрактное тестирование В современном мире программного обеспечения, где сложные системы взаимодействуют друг с другом и с множеством сторонних сервисов, надежность и согласованность становятся критически важными аспектами разработки. Одной из частых проблем автоматизированного тестирования таких систем являются изменения в компонентах, принадлежащих другим командам разработки. Это происходит, когда команды не уведомляют друг друга вовремя о внесенных изменениях, что приводит к неожиданным сбоям и проблемам взаимодействия между компонентами. Здесь на помощь приходит контрактное тестирование – практика, которая позволяет обеспечить непрерывное и безопасное функционирование системы. Что же такое контрактное тестирование? Контрактное тестирование представляет собой подход к тестированию программного обеспечения, основанный на определении и проверке контрактов между компонентами системы. Контракты, которые являются спецификацией взаимодействия между компонентами, определяют ожидаемое поведение, формат передаваемых данных и другие соглашения. Такие компоненты обычно принадлежат разным командам разработки программного обеспечения, что делает этот тип тестирования достаточно сложным в реализации, но не менее важным. Цели данной статьи: 1. Объяснить концепцию контрактного тестирования, демонстрируя его ключевые принципы и преимущества. 2. Показать, как контрактное тестирование может помочь создавать единообразные и предсказуемые интерфейсы, что облегчает интеграцию компонентов и упрощает поддержку. 3. Продемонстрировать, как контрактное тестирование может выявить возможные проблемы взаимодействия компонентов на ранних стадиях разработки, что позволяет проводить интеграционное тестирование, даже если реализация некоторых компонентов еще не завершена. 4. Наглядно показать, как контрактное тестирование способствует быстрому обнаружению и исправлению ошибок, обеспечивая обнаружение нарушений контрактов и помогая идентифицировать причину проблемы. 5. Подчеркнуть, как контрактное тестирование упрощает командное взаимодействие и сотрудничество, становясь языком взаимодействия, который помогает установить и поддерживать согласованность и понимание между всеми участниками проекта. Обзор литературы Важность и значимость контрактного тестирования в современной разработке программного обеспечения подчеркиваются во многих научных работах. Так, в своей статье 2018 года "Contract-based testing for web service integrations: a systematic mapping study", Ди Лео, Зампиванеа и соавторы рассматривают контрактное тестирование как эффективный инструмент, позволяющий командам разработки обнаруживать несогласованности между компонентами на ранних стадиях разработки. Авторы утверждают, что этот подход значительно улучшает качество ПО и ускоряет процесс его разработки [1]. В то же время Волфсон в своей работе 2019 года "Building Microservices with Contract Testing" подчеркивает, что контрактное тестирование способствует созданию более предсказуемых и единообразных интерфейсов [2]. Он утверждает, что благодаря контрактному тестированию, разработчики могут быстрее обнаруживать и исправлять ошибки, экономя при этом время и ресурсы. Волфсон также акцентирует внимание на том, что контрактное тестирование может служить своего рода "общим языком" для команд разработки, способствуя более эффективной коммуникации и координации действий. В условиях, когда количество и сложность взаимосвязанных систем постоянно увеличиваются, контрактное тестирование становится критически важным элементом эффективной разработки ПО. Несмотря на это, многие команды разработки еще не полностью интегрировали его в свои рабочие процессы. Моя статья предлагает конкретные рекомендации по использованию Go и Pact, двух актуальных инструментов в области контрактного тестирования, и я надеюсь, что она станет ценным ресурсом для разработчиков, стремящихся улучшить свои процессы и ускорить разработку. Что такое Pact Pact - популярный инструмент для контрактного тестирования, который предоставляет фреймворк для реализации данного типа тестирования на различных языках, включая Go. Pact работает путем генерации поддельных серверов, которые моделируют поведение провайдера системы, позволяя клиентской системе тестировать взаимодействие с провайдером и создавать контракт, определяющий ожидаемое поведение провайдера. Pact использует подход контрактного тестирования, основанный на ожиданиях клиента (системы, инициирующей коммуникацию). Клиент определяет ожидаемое поведение провайдера (системы, принимающей коммуникацию) в виде контракта. Контракт содержит информацию о запросах, которые клиент будет отправлять провайдеру, и ожидаемых ответах, которые провайдер должен вернуть. С помощью Pact клиент может имитировать сервер, который имитирует поведение провайдера на основе определенного контракта. Затем клиент может взаимодействовать с поддельным сервером, отправлять запросы и проверять ответы, чтобы убедиться, что они соответствуют ожидаемому поведению. Такой подход позволяет клиенту тестировать интеграцию с провайдером, даже если фактическая реализация провайдера еще не доступна. Работа с контрактом производится на уровне unit-тестов (тип тестирования, при котором отдельные модули проверяются на корректность). После того, как клиент протестировал свои взаимодействия и убедился в соответствии провайдера ожидаемому поведению, сгенерированный контракт становится ценным артефактом. Контракт может быть передан команде провайдера, которая может использовать его для проверки соответствия своей реализации согласованному контракту. Это помогает поддерживать согласованность и совместимость между клиентской и провайдерской системами [3]. Схема генерации и проверки контракта представлена на Рисунке 1.

 

Полный текст в PDF

  


Полная версия статьи PDF

Номер журнала Вестник науки №8 (65) том 2

  


Ссылка для цитирования:

Пеганов Д.Д. УСКОРЕНИЕ РАЗРАБОТКИ ЧЕРЕЗ КОНТРАКТНОЕ ТЕСТИРОВАНИЕ С GO И PACT // Вестник науки №8 (65) том 2. С. 166 - 189. 2023 г. ISSN 2712-8849 // Электронный ресурс: https://www.вестник-науки.рф/article/9743 (дата обращения: 17.05.2024 г.)


Альтернативная ссылка латинскими символами: vestnik-nauki.com/article/9743



Нашли грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики) ?
- напишите письмо в редакцию журнала: zhurnal@vestnik-nauki.com


Вестник науки СМИ ЭЛ № ФС 77 - 84401 © 2023.    16+




* В выпусках журнала могут упоминаться организации (Meta, Facebook, Instagram) в отношении которых судом принято вступившее в законную силу решение о ликвидации или запрете деятельности по основаниям, предусмотренным Федеральным законом от 25 июля 2002 года № 114-ФЗ 'О противодействии экстремистской деятельности' (далее - Федеральный закон 'О противодействии экстремистской деятельности'), или об организации, включенной в опубликованный единый федеральный список организаций, в том числе иностранных и международных организаций, признанных в соответствии с законодательством Российской Федерации террористическими, без указания на то, что соответствующее общественное объединение или иная организация ликвидированы или их деятельность запрещена.