Описание тега coyote

Coyote, платформа.NET с открытым исходным кодом от Microsoft Research, которая помогает разработчикам разрабатывать, внедрять и тестировать код таким образом, чтобы охватить недетерминизм и асинхронность и помочь им быстро и уверенно создавать асинхронные системы.

Coyote: облегчение разработчикам создания надежного асинхронного программного обеспечения

Coyote, платформа.NET с открытым исходным кодом от Microsoft Research, которая помогает разработчикам разрабатывать, внедрять и тестировать код таким образом, чтобы охватить недетерминизм и асинхронность и помочь им быстро и уверенно создавать асинхронные системы.

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

Модели программирования Coyote

Coyote, созданный на основе предыдущего исследовательского проекта Microsoft под названием P#, представляет собой комбинацию модели программирования, облегченной среды выполнения и инфраструктуры тестирования, упакованных в виде переносимой библиотеки с минимальными зависимостями. Платформа поддерживает две основные модели программирования: модель программирования асинхронных задач (в предварительной версии) и модель программирования асинхронных субъектов.

Если вы довольны разработкой кода с использованием конструкции C# async/await для асинхронных задач, Coyote может добавить к этому ценность. Если вы переключитесь на библиотеку задач Coyote, инструмент тестирования Coyote будет искать ошибки, систематически исследуя параллелизм между вашими задачами. Однако, хотя функция async / await в C# прекрасна, иногда она дает слишком параллельный код, что приводит к большой сложности. Например, при выполнении двух или более одновременных задач вам может потребоваться защитить личные данные с помощью блокировок, а затем вам придется беспокоиться о взаимоблокировках. Coyote предлагает альтернативу, которая решает эту проблему с помощью более продвинутой модели программирования асинхронных акторов.. Акторы ограничивают ваш параллелизм, так что данный субъект получает сообщения в сериализованном порядке через почтовый ящик. Акторные модели приобрели большую популярность, особенно в области распределенных систем, именно потому, что они помогают управлять сложностью системы. Акторы по существу используют асинхронность, делая каждое сообщение между участниками асинхронной операцией. Coyote полностью понимает семантику актеров и может выполнять работу мирового класса по их тестированию и обнаружению даже самых незаметных ошибок. Инфраструктура идет еще дальше, предоставляя тип субъекта, называемый конечным автоматом, который он знает, как полностью тестировать, обеспечивая охват каждого состояния и тестирование каждого перехода между состояниями.

Строительные блоки приложений Coyote

Модели программирования Coyote просты в использовании, поэтому даже при минимальных вложениях вы получаете огромную выгоду от мощного инструмента тестирования, который автоматически находит ошибки в вашем коде. И чем больше времени и ресурсов вы вкладываете в Coyote, тем больше преимуществ. Coyote предоставляет следующие строительные блоки для более надежного программного обеспечения:

  • Задача: оболочка для задач.NET, которая позволяет инструменту тестирования Coyote контролировать планирование.
  • Actor, StateMachine и Event: базовые классы для модели программирования актеров Coyote
  • Спецификация и мониторинг: способы встраивания проверок в код, которые можно проверить во время тестирования; это также включает в себя простые способы мониторинга жизнеспособности, гарантируя, что код не застрянет, вращая свои колеса
  • Таймеры: способ моделирования действий по времени в системе, что особенно полезно при разработке макетов, моделирующих внешние системы.
  • Ведение журнала: функция, которая позволяет вам видеть сообщения отладки в контексте решений, принимаемых во время тестового прогона Coyote, включая удобные способы визуализировать, что происходит.

В дополнение к вышеуказанным конструкциям Coyote позволяет вам использовать всю мощь языка программирования C#. Чтобы добиться максимальной производительности при тестировании, рекомендуется имитировать все системы, находящиеся вне вашего контроля. Это позволяет инструменту тестирования Coyote тестировать код локально на ноутбуке. В следующем примере - система корзины покупок со всеми внешними службами, написанными как имитирующие акторы Coyote - показана типичная тестовая установка:

https://stackru.com/images/772eb40ef31014ff36bd8b589e60d98bf62cacec.jpg

Чтобы получить максимальную производительность тестирования от фреймворка Coyote, разработчикам рекомендуется имитировать все системы, находящиеся вне их контроля. Выше представлена ​​типичная тестовая установка, система корзины покупок со всеми внешними службами, написанными как имитирующие акторы Coyote с использованием модели программирования асинхронных акторов.

Более крупные команды могут делиться своими макетами Coyote для улучшения повторного использования кода при тестировании. Фактически, вы можете опубликовать свои макеты Coyote как точное определение протокола ваших публичных сервисов. Затем инструмент тестирования Coyote можно использовать для полной сертификации того, что код нового клиента правильно работает с макетной моделью службы, прежде чем клиенты даже попытаются использовать ваши производственные API.

Моки койота могут быть более сложными, чем обычные моки. Они не только определяют асинхронный API, необходимый для взаимодействия со службой, но также могут служить в качестве богатой модели ожидаемого поведения службы. Большинство команд уже создают макеты, поэтому переключение на работу с Coyote обычно требует минимальных усилий.

Узнайте больше и внесите свой вклад

Пакет Coyote доступен в NuGet, поэтому начать работу с Coyote очень просто. Coyote также имеет открытый исходный код на GitHub и доступен всем, кто хочет оставлять отзывы и предложения. Отправляйте запросы на вытягивание, если у вас есть конкретные идеи, как улучшить Coyote. Вы также можете узнать больше об исследованиях, стоящих за Coyote.


Связанные теги