Виртуализация услуг

В программной инженерии виртуализация служб или виртуализация служб — это метод эмуляции поведения определенных компонентов в гетерогенных приложениях на основе компонентов, таких как приложения на основе API , облачные приложения и сервисно-ориентированные архитектуры . Он используется для предоставления командам по разработке программного обеспечения и контролю качества/тестированию доступа к зависимым системным компонентам, которые необходимы для проверки тестируемого приложения (AUT), но недоступны или труднодоступны для целей разработки и тестирования. Благодаря «виртуализации» поведения зависимых компонентов тестирование и разработка могут продолжаться без доступа к фактическим живым компонентам. Поставщики, отраслевые аналитики и отраслевые издания признают виртуализацию служб отличной от имитации. [1] [2] Сравнение инструментов моделирования API см. здесь .

Обзор

Виртуализация сервисов эмулирует поведение компонентов программного обеспечения для устранения ограничений зависимости в командах разработки и тестирования. Такие ограничения возникают в сложных взаимозависимых средах, когда компонент, подключенный к тестируемому приложению:

  • Еще не завершено
  • Все еще развивается
  • Контролируется третьей стороной или партнером
  • Доступно для тестирования только в ограниченном объеме или в неудобное время
  • Сложно подготовить или настроить в тестовой среде
  • Необходимо для одновременного доступа разных команд с различными настройками тестовых данных и другими требованиями
  • Ограничено или дорого использовать для нагрузочного и производительного тестирования

Хотя термин «виртуализация сервисов» отражает первоначальную направленность метода на виртуализацию веб-сервисов , виртуализация сервисов распространяется на все аспекты составных приложений: сервисы, базы данных , мэйнфреймы , ESB и другие компоненты, которые взаимодействуют с использованием общих протоколов обмена сообщениями. [3] [4] [5] Другие подобные инструменты называются симуляторами API , инструментами имитации API, тестовыми двойниками по проводу .

Виртуализация сервисов эмулирует только поведение определенных зависимых компонентов, которые разработчикам или тестировщикам необходимо использовать для завершения своих сквозных транзакций. Вместо того, чтобы виртуализировать целые системы, она виртуализирует только определенные фрагменты зависимого поведения, критически важные для выполнения задач разработки и тестирования. Это обеспечивает ровно столько логики приложения, чтобы разработчики или тестировщики получали то, что им нужно, не дожидаясь завершения и готовности фактического сервиса. Например, вместо виртуализации всей базы данных (и выполнения всего связанного управления тестовыми данными, а также настройки базы данных для каждого сеанса тестирования) вы отслеживаете, как приложение взаимодействует с базой данных, затем эмулируете соответствующее поведение базы данных ( SQL- запросы, которые передаются в базу данных, соответствующие возвращаемые наборы результатов и т. д.). [6] [7]

Приложение

Виртуализация услуг подразумевает создание и развертывание «виртуального актива», имитирующего поведение реального компонента, который необходим для проверки работоспособности тестируемого приложения, но к которому трудно или невозможно получить доступ для целей разработки и тестирования.

Виртуальный актив заменяет зависимый компонент, прослушивая запросы и возвращая соответствующий ответ — с соответствующей производительностью. Для базы данных это может включать прослушивание оператора SQL, а затем возврат строк источника данных. Для веб-службы это может включать прослушивание сообщения XML по HTTP , JMS или MQ , а затем возврат другого сообщения XML. Функциональность и производительность виртуального актива могут отражать фактическую функциональность/производительность зависимого компонента или могут имитировать исключительные условия (например, экстремальные нагрузки или состояния ошибок), чтобы определить, как тестируемое приложение реагирует в этих обстоятельствах.

Виртуальные активы обычно создаются:

  • Запись живого общения между компонентами во время тестирования системы из тестируемого приложения (AUT)
  • Предоставление журналов, отражающих историческую связь между компонентами
  • Анализ спецификаций интерфейса сервиса (например, WSDL )
  • Определение поведения вручную с помощью различных элементов управления интерфейсом и значений источника данных

Затем они дополнительно настраиваются для представления конкретных данных, функциональности и времени отклика.

Виртуальные активы развертываются локально или в облаке (публичном или частном). С помощью сред разработки/тестирования, настроенных на использование виртуальных активов вместо зависимых компонентов, разработчики или тестировщики могут затем использовать приложение, над которым они работают, не дожидаясь завершения или доступности зависимых компонентов. [3] [4] [7]

Аналитики отрасли сообщают, что виртуализация услуг лучше всего подходит для «ИТ-отделов, имеющих значительный опыт «пропуска» интеграционного тестирования из-за «зависимого программного обеспечения» и имеющих достаточно сложную систему тестирования». [8]

Отношение к насмешкам и издевательствам

Альтернативный подход к обходу ограничений доступа к тестовой среде, изложенный во введении к этой статье, заключается в том, что члены команды разрабатывают заглушки методов или фиктивные объекты , которые заменяют зависимые ресурсы. Недостаток этого подхода стал очевиден в начале 2000-х годов с появлением сервисно-ориентированной архитектуры . [9] Распространение составных приложений , которые полагаются на многочисленные зависимые службы, а также рост гибкой разработки программного обеспечения после публикации Agile Manifesto в 2001 году, все больше усложняли для разработчиков или тестировщиков ручную разработку количества, объема и сложности заглушек или фиктивных объектов, необходимых для выполнения задач разработки и тестирования для современной разработки корпоративных приложений. [10]

Первым шагом в эволюции от заглушек к виртуализации услуг стала технология, упакованная в инструменты тестирования SOA с 2002 года. [11] Самые ранние реализации виртуализации услуг были разработаны для автоматизации процесса разработки простых эмуляций, подобных заглушкам, чтобы можно было более эффективно тестировать составные приложения. [12] Поскольку корпоративные системы продолжали становиться все более сложными и распределенными, поставщики программных инструментов переключили внимание с заглушек на виртуализацию услуг, более ориентированную на среду. [2] Хотя заглушки все еще можно выполнить путем ручной разработки и управления заглушками, то, что стало известно как «виртуализация услуг», выполняется с использованием одной из доступных коммерческих готовых (COTS) технологий виртуализации услуг в качестве платформы для разработки и развертывания их «активов виртуализации услуг». [10]

Agile и DevOps

Растущая популярность [13] гибкой разработки программного обеспечения и DevOps создала спрос на новый набор инструментов для предоставления виртуализации сервисов сообществам, которые работают таким образом. [14] Такие практики, как непрерывная поставка и переход от разработки на мэйнфреймах и монолитах к более распределенным архитектурам на основе микросервисов, хорошо сочетаются с возможностями виртуализации сервисов. Команды Agile и DevOps предпочитают работать с легкими инструментами, которые имеют меньше накопленного раздувания и не имеют обременительных лицензионных ограничений. [15]

Смотрите также

Ссылки

  1. ^ Виртуализация сервисов как альтернатива Mocking, Джонатан Аллен, eBizQ 22 апреля 2013 г.
  2. ^ ab Что такое виртуализация услуг, Джеймс Дэй, Medium 18 июня 2021 г.
  3. ^ ab Управление тестовыми средами Лиз Макмиллан, Cloud Computing Journal, декабрь 2011 г.
  4. ^ ab Application Behavior Virtualization Элизабет Уайт, Cloud Computing Journal, декабрь 2011 г.
  5. ^ Виртуализация баз данных для разработки и тестирования, Уэйн Ариола, ST & QA Magazine, март 2012 г.
  6. ^ Введение в SOA и виртуализацию. Архивировано 22 ноября 2011 г. на Wayback Machine Джоном Михельсеном, WebServices.org, август 2007 г.
  7. ^ ab Следующее поколение управления тестовой средой Уэйна Ариолы, Virtualization Journal, 12 июля 2011 г.
  8. ^ Parasoft и тестирование «виртуализации служб»: хорошая идея Уэйна Керночана, Размышления ИТ-аналитика по программному обеспечению, 22 февраля 2013 г.
  9. ^ Тестирование в сервисно-ориентированных средах, Эд Моррис и др., Институт программной инженерии, март 2010 г.
  10. ^ ab Виртуализация услуг помогает организациям извлечь выгоду из тестирования, Чандраньшу Сингх, ovum, 31 марта 2014 г.
  11. ^ Parasoft's Web Service Testing Tool Should Aid Development (Инструмент тестирования веб-сервисов Parasoft должен помочь в разработке) Тереза ​​Лановиц, Gartner, 1 мая 2002 г.
  12. ^ Виртуализация SOA становится реальностью Рич Сили, SearchSOA, 28 ноября 2007 г.
  13. ^ Agile и DevOps Google Trends
  14. ^ Форум по виртуализации услуг нового поколения, 13 сентября 2017 г.
  15. ^ Thought Works Technology Radar: Решения для крупных предприятий
Retrieved from "https://en.wikipedia.org/w/index.php?title=Service_virtualization&oldid=1144450968"