2009-05-29 3 views
5

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

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

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

ответ

4

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

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

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

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

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

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

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

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

Я также рекомендовал бы The Art of Capacity Planning как отличную книгу на эту тему.

+0

Роберт, я согласен, что ответ Курта показывает, как обычно выполняется тестирование масштабируемости. Ваш ответ немного больше соответствует тому, что я искал. –

2

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^