Теория массового обслуживания для нефункционального тестирования
В этой статье изучите основы теории массового обслуживания для нефункционального тестирования программного обеспечения, ее преимущества и ограничения, практический пример и инструменты для использования.
Теория массового обслуживания — это раздел математики, который анализирует, как формируются и ведут себя очереди ожидания в системах. В контексте нефункционального тестирования программного обеспечения оно предоставляет ценный инструмент для понимания того, как система работает при различных нагрузках. Анализируя длину очередей , время ожидания и загрузку серверов, модели очередей могут помочь предсказать потенциальные узкие места и проблемы с производительностью до того, как они возникнут в реальном использовании.
Эта статья от разработчиков компании DST Global начинается с основ теории массового обслуживания при тестировании нефункционального программного обеспечения. Будут рассмотрены преимущества и ограничения. В качестве примера мы рассмотрим образец моделей массового обслуживания, которые могут подойти для мобильных игровых приложений. Наконец, будет рассмотрен набор инструментов, которые можно использовать, с указанием их плюсов и минусов.
Ключевые понятия теории массового обслуживания
Теория массового обслуживания предоставляет математические модели, которые можно использовать для нефункционального тестирования. Сначала мы объясним основные концепции организации очередей, чтобы понять, как их использовать.
- Скорость поступления (λ): относится к среднему количеству задач или запросов, поступающих в систему в единицу времени. Например, оно может представлять количество клиентов, приходящих в банк в минуту, или количество сетевых пакетов, поступающих на маршрутизатор в секунду.
- Время обслуживания (μ): представляет собой среднее время, необходимое ресурсу для выполнения задачи. В банке это может быть среднее время, которое кассир проводит с клиентом. В сети это может быть среднее время, необходимое для обработки пакета данных.
- Длина очереди (L): это количество задач, ожидающих обслуживания в любой момент времени. Оно напрямую связано со скоростью поступления, временем обслуживания и количеством доступных ресурсов.
- Количество серверов (S): относится к ресурсам, доступным для выполнения задач. В банке это количество кассиров, готовых обслуживать клиентов. В сети это может быть количество процессорных ядер на сервере или количество доступных сетевых каналов.
- Дисциплина очереди: определяет, как задачи выбираются из очереди для обслуживания. Некоторые общие дисциплины включают в себя:
1. «Первым пришел — первым обслужен» (FIFO): первая задача, поступившая в очередь, является первой и будет обслужена. Это часто используется в таких ситуациях, как очереди к кассам или залы ожидания.
2. Очередь с приоритетом: некоторым задачам назначается более высокий приоритет, и они обслуживаются раньше задач с более низким приоритетом, даже если они приходят раньше. Это используется в ситуациях, когда определенные задачи имеют решающее значение и требуют немедленного внимания.
3. Кратчайшее время обработки (SPT): задача с наименьшим ожидаемым временем обслуживания обслуживается первой. Это может быть полезно для минимизации среднего времени ожидания в целом.
Приложения в нефункциональном тестировании
Пример приложений для тестирования нефункционального программного обеспечения включает в себя следующее:
Нагрузочное тестирование
Моделируя реалистичные пользовательские нагрузки с конкретными скоростями прибытия и временем обслуживания на основе моделей очередей, инструменты нагрузочного тестирования могут оценить производительность системы в стрессовых условиях. Это помогает выявить потенциальные узкие места, такие как перегруженные серверы, медленные запросы к базе данных или неэффективное выполнение кода. Анализируя длину очередей и время ожидания во время нагрузочного теста, вы можете выявить области, в которых система испытывает трудности, и внести улучшения перед развертыванием.
Планирование мощностей
Модели теории массового обслуживания можно интегрировать с инструментами тестирования для определения точки отказа системы или оптимального распределения ресурсов. Модель может предсказать, как система будет вести себя при разном количестве серверов, что позволит вам найти золотую середину между адекватной производительностью и экономичным использованием ресурсов. Это помогает гарантировать, что система сможет обрабатывать ожидаемый пользовательский трафик без ущерба для производительности или ненужных затрат на избыточное выделение ресурсов.
Бенчмаркинг производительности
Модели очередей можно использовать для сравнения производительности различных системных конфигураций или архитектур. Моделируя одну и ту же рабочую нагрузку в различных конфигурациях системы, вы можете оценить, какая конфигурация обеспечивает наилучшую производительность с точки зрения времени ожидания и использования сервера. Это может быть особенно полезно при выборе между различными вариантами аппаратного или программного обеспечения.
Другие полезные понятия теории массового обслуживания
Закон Литтла
Это фундаментальное соотношение в теории массового обслуживания гласит, что среднее количество задач в системе (L) равно средней скорости поступления (λ), умноженной на среднее время ожидания (W). Это позволяет вам оценить одно из этих значений, если вы знаете два других.
Обозначения Кендалла-Ли
Эта нотация представляет собой стандартизированный способ описания систем массового обслуживания на основе распределения прибытия, распределения услуг, количества серверов и дисциплины очереди. Понимание этой записи помогает классифицировать различные модели массового обслуживания и выбрать подходящую для анализа.
Открытые и закрытые системы массового обслуживания
Открытые системы очередей позволяют задачам входить в систему и выходить из нее. Закрытые системы массового обслуживания имеют фиксированное количество задач, циркулирующих внутри системы. Выбор правильной модели зависит от анализируемой системы.
Ограничения использования теории массового обслуживания
Как и все теории, теория массового обслуживания основана на предположениях. Преимущества, которые мы можем получить, используя теорию массового обслуживания в нефункциональном тестировании, во многом зависят от того, насколько реалистичны эти предположения.
Упрощенные предположения
Модели массового обслуживания часто полагаются на упрощающие предположения, чтобы сделать математические вычисления более понятными. Эти предположения включают в себя:
- Стабильная скорость поступления и время обслуживания. В реальных системах могут наблюдаться колебания скорости поступления и времени обслуживания. Модели массового обслуживания могут неточно отражать такое динамическое поведение.
- Бесконечные очереди. На самом деле очереди могут иметь ограниченную емкость. Если очередь переполнится, новые поступления могут быть отклонены, что приведет к нестабильности системы. Модели массового обслуживания с конечными очередями могут быть более сложными, но предлагают более реалистичное представление.
Случай мобильных игр
Мобильные игры, особенно те, которые содержат многопользовательские онлайн-компоненты или системы микротранзакций, часто включают взаимодействия, которые мы можем смоделировать с помощью теории массового обслуживания. Мы проанализируем список возможных моделей массового обслуживания, подходящих для мобильных игр. Список не является исчерпывающим, но он может объяснить причины использования различных моделей и их преимущества.
1. Система массового обслуживания M/M/1 с сетевой задержкой
В мобильных играх с многопользовательскими онлайн-функциями игроки могут подключаться к центральному серверу для взаимодействия друг с другом. Этот сценарий можно смоделировать как систему массового обслуживания M/M/1, где игроки являются прибывающими объектами, а сервер действует как единственный сервер.
Включение задержки в сеть в модель позволяет разработчикам анализировать влияние задержек на впечатления игроков и разрабатывать стратегии для их смягчения. Понимание поведения очередей помогает оптимизировать мощность сервера и сетевой инфраструктуры, чтобы минимизировать задержки и улучшить игровой процесс.
2. Система очередей M/G/1 для внутриигровых покупок.
Мобильные игры часто включают внутриигровые магазины, где игроки могут совершать покупки, используя реальную или виртуальную валюту. Поступление запросов на покупку и время обслуживания для обработки этих транзакций могут не подчиняться экспоненциальному распределению, типичному для систем M/M/1.
Система массового обслуживания M/G/1, в которой распределение времени обслуживания является обобщенным, может быть более подходящей для моделирования транзакций внутриигровых покупок. Анализ этой модели помогает разработчикам игр оптимизировать систему обработки платежей, оптимизировать потоки транзакций и эффективно управлять ресурсами сервера.
3. Модели очередей с конечным источником для ограниченных ресурсов
Многие мобильные игры имеют ограниченные ресурсы, такие как виртуальные предметы, игровые уровни или мощность сервера. Игрокам, возможно, придется стоять в очереди, чтобы получить доступ к этим ресурсам, особенно в периоды пикового использования.
Модели очередей с конечным источником, такие как модель M/M/c/K (с серверами c и конечной очередью размера K), подходят для анализа сценариев, в которых существуют ограничения на доступность ресурсов. Понимая динамику очереди и использование ресурсов, разработчики могут реализовать стратегии, позволяющие сбалансировать распределение ресурсов, сократить время ожидания и оптимизировать удовлетворенность игроков.
4. Динамические модели массового обслуживания для подбора игроков
Алгоритмы подбора игроков имеют решающее значение для обеспечения сбалансированного и приятного игрового процесса в многопользовательских мобильных играх. Эти алгоритмы часто включают в себя механизмы организации очередей для подбора игроков с одинаковым уровнем навыков или предпочтениями.
Динамические модели массового обслуживания, такие как очередь M/M/1/K с динамической скоростью поступления или модель массового обслуживания Erlang с переменной скоростью обслуживания, могут использоваться для оптимизации систем подбора игроков. Динамически настраивая параметры очереди в зависимости от поведения игрока, разработчики игр могут добиться более быстрых и справедливых результатов подбора игроков. Это может привести к увеличению вовлеченности и удержания игроков.
Теория массового обслуживания спасает день запуска
Компания-разработчик мобильных игр готовилась к долгожданному выпуску своей последней игры. Судя по количеству предварительной регистрации и ажиотажу в социальных сетях, они ожидали массового притока игроков в день запуска. Их забота была двоякой: обеспечить плавный игровой процесс для всех пользователей и избежать сбоев сервера из-за перегрузки.
Команда разработчиков решила использовать теорию массового обслуживания для создания модели инфраструктуры своего игрового сервера.
Вывод модели
Они определили систему игрового сервера как систему массового обслуживания M/M/c, что означает:
- М: Прибытие игроков подчиняется распределению Пуассона (случайному и независимому).
- М: Время, необходимое для обработки запроса игрока (например, присоединения к игре, обновления состояния игры), подчиняется распределению Пуассона (случайному и независимому).
- c: представляет количество доступных игровых серверов (действующих как несколько очередей).
Ключевые показатели эффективности
Используя формулы теории массового обслуживания, они рассчитали следующие метрики:
- Коэффициент поступления (λ): рассчитан на основе данных предварительной регистрации и отраслевых показателей для аналогичных запусков игр.
- Время обслуживания (μ): измеряется путем анализа среднего времени, необходимого для обработки запросов игроков во время внутреннего тестирования.
- Загрузка сервера (ρ): ρ = λ/(c*μ). Этот показатель показывает, насколько в среднем загружен каждый сервер.
Анализ модели
Ключевым аспектом модели было понимание того, как загрузка сервера (ρ) будет меняться в зависимости от конфигурации сервера (количество серверов, «c»).
- Высокая загрузка сервера (ρ > 0,8): означает, что серверы перегружены, что приводит к потенциальным задержкам в очередях, замедлению игрового процесса и повышенному риску сбоев.
- Низкая загрузка сервера (ρ < 0,5): указывает на недостаточно загруженные серверы, что может быть неэффективно с точки зрения затрат, но обеспечивает плавный игровой процесс.
Принятие мер
Используя модель массового обслуживания, команда провела серию тестов:
Сценарий 1: Существующая конфигурация сервера
Модель предсказала, что загрузка сервера превысит 80% в часы пик запуска, что потенциально может привести к проблемам с производительностью и разочарованию игроков.
Сценарий 2. Добавление на 20% больше серверов
Модель показала, что загрузка упала примерно до 65 %, что обеспечило значительное улучшение производительности при сохранении некоторого буфера на случай неожиданного увеличения числа игроков.
Сценарий 3: удвоение количества серверов
Загрузка упала примерно до 40%, но дополнительные затраты на сервер могут быть не оправданы, если рост количества игроков будет медленнее, чем ожидалось.
Решение
Основываясь на прогнозах модели, команда решила добавить к существующей инфраструктуре на 20% больше серверов. Это обеспечило значительный прирост производительности без чрезмерных затрат. Кроме того, они реализовали правила автоматического масштабирования для автоматического предоставления дополнительных серверов, если трафик игроков превысил заранее определенные пороговые значения.
Исход
Настал день запуска, и компания увидела, что к новой игре присоединилось рекордное количество игроков. Однако благодаря модели очередей и упреждающему масштабированию серверов серверы эффективно справлялись с нагрузкой. Игроки испытали плавный игровой процесс без серьезных задержек и сбоев.
Выбор инструмента
Существуют различные инструменты тестирования, включающие принципы теории массового обслуживания. Выбор подходящего инструмента зависит от сложности системы, желаемого уровня детализации и конкретных целей тестирования. Следующий список ни в коем случае не является исчерпывающим.
- Microsoft Excel с надстройками модели очередей:
Плюсы: бесплатный, легко доступен для большинства пользователей, легко выучить основные формулы.
Минусы: ограниченная функциональность, подверженность ошибкам при работе со сложными моделями, не идеальна для крупномасштабного тестирования.
- Онлайн-калькуляторы моделей массового обслуживания:
Плюсы: Бесплатный, удобный интерфейс, подходит для быстрых оценок.
Минусы: ограниченные варианты моделей, могут не отражаться конкретные детали системы, ограниченная настройка.
- JMeter:
Плюсы: открытый исходный код, надежные возможности нагрузочного тестирования, поддержка базовой интеграции теории массового обслуживания для моделирования пользовательской нагрузки.
Минусы: настройка моделей очередей может быть сложной, требует знаний сценариев для расширенных функций.
- Apache JMeter plugin - queueing theory: :
Плюсы: расширяет функциональные возможности JMeter за счет моделей теории очередей, позволяет анализировать загрузку сервера и время ожидания.
Минусы: зависит от кривой обучения JMeter, необходима дополнительная настройка для функций организации очередей.
- AppDynamics
Плюсы: коммерческий инструмент с хорошим пользовательским интерфейсом, предлагает мониторинг производительности с учетом теории массового обслуживания (длина очереди, время ожидания).
Минусы: стоимость подписки, может потребоваться обучение расширенным функциям.
- AnyLogic:
Плюсы: Мощное программное обеспечение для моделирования, интегрируемое с моделями очередей для создания сложных сценариев, предоставляет подробные отчеты о производительности.
Минусы: более крутая кривая обучения, требуются знания моделирования, значительная стоимость коммерческих лицензий.
Подведение итогов
Теория массового обслуживания — ценный вариант оптимизации производительности и распределения ресурсов в различных сценариях разработки программного обеспечения. Понимая основные модели очередей иих ограничения, команды разработчиков могут использовать инструменты тестирования. Они могут анализировать загрузку серверов, выявлять потенциальные узкие места и принимать решения на основе данных. Нашей задачей может быть обеспечение плавного игрового процесса при запуске мобильной игры, оптимизация инфраструктуры для быстро растущей компании или просто выбор лучшей облачной платформы для приложения. В любом случае по мнению разработчиков DST Global теория массового обслуживания может дать разработчикам возможность справиться со сложностями загрузки системы и обеспечить удобство взаимодействия с пользователем.