Существуют ли четко определенные шаблоны для тестирования масштабируемости программного обеспечения? - PullRequest
5 голосов
/ 29 мая 2009

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

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

Меня больше всего интересуют ответы, предлагающие конкретные имена шаблонов с подробными описаниями.

Ответы [ 2 ]

4 голосов
/ 03 июня 2009

Все известные мне сценарии тестирования используют одну и ту же базовую структуру для теста, которая включает в себя генерацию ряда запросов к одному или нескольким запросчикам, предназначенным для агента обработки, подлежащего проверке. Курт ответ является отличным примером этого процесса. Как правило, вы будете запускать тесты, чтобы найти некоторые пороговые значения, а также запустить несколько альтернативных конфигураций (меньше узлов, другое оборудование и т. Д.) Для построения точных усредненных данных.

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

Агент обработки - это программное обеспечение, сетевая карта, машина, которая фактически обрабатывает запрос и возвращает результат.

Однако то, что вы делаете с результатами, определяет тип теста, который вы делаете, и они:

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

Проверка баланса : Обычная практика масштабирования - использовать агент балансировки нагрузки, который направляет запросы агенту процесса. Настройка такая же, как и для нагрузочного тестирования, но цель состоит в том, чтобы проверить распределение запросов. В некоторых сценариях необходимо убедиться, что достигается равномерный (или настолько близкий к приемлемому) баланс запросов между агентами обработки, а в других сценариях необходимо убедиться, что агент процесса, который обработал первый запрос для конкретного запросчика обрабатывает все последующие запросы (веб-фермы обычно так нужны).

Безопасность данных : С помощью этого теста результаты собираются и данные сравниваются. Здесь вы ищете проблемы с блокировкой (например, тупиковая ситуация SQL), которая препятствует записи или что изменения данных реплицируются на различные используемые вами узлы или репозитории в приемлемое время или меньше.

Граничное тестирование : Это похоже на нагрузочное тестирование, за исключением того, что цель заключается не в производительности обработки, а в том, насколько сильно она хранится, влияет на производительность. Например, если у вас есть база данных, сколько строк / таблиц / столбцов может быть до того, как производительность ввода-вывода упадет ниже допустимого уровня.

Я бы также рекомендовал Искусство планирования потенциала как отличную книгу по этому предмету.

2 голосов
/ 04 июня 2009

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

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

...