Тестирование масштабируемости - это тестирование программного приложения для измерения его способности увеличивать или уменьшать масштаб с точки зрения любых нефункциональных возможностей.
Тестирование производительности , масштабируемости и надежности обычно объединяется аналитиками качества программного обеспечения .
Основные цели тестирования масштабируемости - определить лимит пользователей для веб-приложения и гарантировать, что работа конечного пользователя при высокой нагрузке не будет нарушена. Одним из примеров является своевременный доступ к веб-странице с ограниченной задержкой ответа. Другая цель - проверить, может ли сервер справиться, т.е. произойдет ли сбой сервера, если он находится под большой нагрузкой? [1]
В зависимости от тестируемого приложения тестируются разные параметры. Если веб-страница тестируется, будет проверено максимально возможное количество одновременных пользователей. [2] Также от тестируемого приложения зависят тестируемые атрибуты - они могут включать использование ЦП, использование сети или взаимодействие с пользователем.
Успешное тестирование выявит большинство проблем, которые могут быть связаны с сетью, базой данных или аппаратным / программным обеспечением. [3]
Создание теста масштабируемости
При создании нового приложения сложно точно предсказать количество пользователей через 1, 2 или даже 5 лет. Хотя оценка может быть сделана, это не точное число. Проблема с увеличением числа пользователей заключается в том, что это может создавать новые области отказа. Например, если у вас 100 000 новых посетителей, проблема может быть не только в доступе к приложению; у вас также могут возникнуть проблемы с базой данных, в которой вам нужно хранить все данные этих новых клиентов. [4]
Увеличение нагрузки
Вот почему при создании теста масштабируемости важно увеличивать масштаб постепенно. Эти шаги можно разделить на небольшие, средние и высокие нагрузки. [5]
Мы должны постепенно увеличивать масштаб, поскольку на каждом этапе проверяется отдельный аспект. Небольшие нагрузки обеспечивают нормальную работу системы на базовом уровне. Средние нагрузки проверяют, может ли система функционировать на ожидаемом уровне. Тестирование высоких нагрузок: система может справиться с высокими нагрузками. [6]
Тестовая среда
Окружающая среда должна быть постоянной на протяжении всего тестирования, чтобы обеспечить точные и надежные результаты. Если тестирование прошло успешно, мы должны увидеть пропорциональное изменение производительности. Например, если мы удвоим количество пользователей в системе, мы увидим падение производительности на 50%. [7]
В качестве альтернативы, при измерении системной статистики, такой как использование памяти или ЦП с течением времени, это может иметь другой график, который не является пропорциональным, поскольку пользователи не отображаются ни на одной из осей.
Результаты тестирования масштабируемости
После того, как мы собрали данные с наших различных этапов, мы можем начать отображать результаты на различных графиках, чтобы показать результаты. Однако графики могут отличаться в зависимости от того, что строится.
Непропорциональный результат
На рисунке 1 мы можем видеть график, показывающий использование ресурсов (в данном случае памяти) во времени. График непропорциональный, но все же может считаться пройденным тестом, поскольку изначально существует фаза наращивания, когда система начинает работать, однако по мере добавления новых пользователей использование памяти мало меняется. [8] Это означает, что текущий объем памяти может выдержать все 3 этапа теста.
Пропорциональный исход
На рисунке 2 мы видим более пропорциональный рост, сравнивая количество пользователей со временем, затраченным на выполнение отчета. При низкой загрузке в 20 пользователей среднее время составляет 5,5 секунды, при увеличении нагрузки до средней (40 пользователей) и высокой нагрузки (60 пользователей) среднее время увеличивается до 9,5 и 18 секунд соответственно. [7]
В некоторых случаях могут потребоваться изменения в программном или аппаратном обеспечении сервера. После того, как необходимые обновления будут выполнены, мы должны повторно запустить тесты, чтобы убедиться, что обновления были эффективными при решении ранее поднятых проблем. [9]
Когда у нас есть пропорциональный результат, узких мест не возникает, поскольку мы увеличиваем масштаб и увеличиваем нагрузку на систему. [10]
Вертикальное и горизонтальное масштабирование
В результате тестирования масштабируемости может потребоваться обновление программного и аппаратного обеспечения. Эти обновления можно разделить на вертикальное или горизонтальное масштабирование.
Вертикальное масштабирование, также известное как масштабирование, представляет собой процесс замены компонента устройством, которое, как правило, является более мощным или улучшенным. Например, замена процессора на более быстрый. Горизонтальное масштабирование, также известное как масштабирование, - это настройка другого сервера, например, для работы параллельно с исходным, чтобы они разделяли рабочую нагрузку. [11]
Преимущества и недостатки
У обоих методов масштабирования есть свои преимущества и недостатки. Хотя масштабирование может быть проще, добавление аппаратных ресурсов может привести к снижению отдачи . [12] Это означает, что каждый раз, когда мы, например, модернизируем процессор, мы не всегда получаем тот же уровень преимуществ, что и предыдущее изменение.
Однако горизонтальное масштабирование может быть чрезвычайно дорогостоящим, не только из-за стоимости целых систем, таких как серверы, но мы также должны учитывать их регулярные расходы на обслуживание. [12]
Рекомендации
- ^ «Планирование нагрузочного тестирования» . docs.oracle.com . Проверено 23 октября 2015 .
- ^ «Тестирование масштабируемости» . Блог производительности . Проверено 25 октября 2015 .
- ^ Джоши, Пратик. «Зачем нам нужно тестирование производительности?» . Вечная загадка . Проверено 25 октября 2015 .
- ^ «Обнаружение правильных показателей для тестирования масштабируемости» . www.theserverside.com . Проверено 25 октября 2015 .
- ^ «МАСШТАБИРОВАНИЕ ПРОТИВ МАСШТАБИРОВАНИЯ В СРЕДЕ QLIKVIEW» . 2012 г.
- ^ «Цитовский», «Бернардини», «Мацей», «Маттео» (2013). «Анализ масштабируемости Prac» (PDF) . Партнерство для передовых вычислений в Европе .
- ^ а б «Проверенные методы IBM Cognos: разработка успешного теста производительности и масштабируемости для IBM Cognos BI» . www.ibm.com . 2011-11-17 . Проверено 25 октября 2015 .
- ^ «Производительность предприятия и результаты испытаний» (PDF) . Серена . 2011 г.
- ^ «Тестирование масштабируемости: проверка возможности увеличения производительности сайта» . support.smartbear.com . Проверено 28 октября 2015 .
- ^ «Технический блог Netflix: сравнительный анализ масштабируемости Cassandra на AWS - более миллиона операций записи в секунду» . techblog.netflix.com . Проверено 4 ноября 2015 .
- ^ Бонди, Андре (2014). Основы проектирования производительности программного обеспечения и систем: процесс, моделирование производительности, требования, тестирование, масштабируемость и практика. Раздел 11.2 . ISBN 0321833821.
- ^ а б «Тестирование масштабируемости» (PDF) . Comp Nus Education .
Внешние ссылки
- Разработка распределенных приложений с помощью Visual Studio .NET: масштабируемость