Нагрузочное Тестирование – 10 Указаний На Повышение Производительности

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

Неправильный подход! Это чрезвычайно рискованно и упускает многие преимущества раннего начала нагрузочного тестирования и его применения на протяжении всего проекта. При таком подходе система проходит нагрузочное тестирование и плавно переходит в эксплуатацию? Иногда да. Но чаще система начинает давать сбой, когда начинает прикладываться нагрузка, даже при небольшом увеличении объема. Впервые к системе предъявляются одновременные требования и требуется арбитраж по поводу ресурсов. Запускаются пути по коду, который никогда не выполнялся, возникают ситуации, которые никто особо не продумывал. Транзакции терпят неудачу. Системы терпят крах. После устранения этих проблем и увеличения нагрузки в тесте мы сталкиваемся с такими проблемами, как исчерпание ресурсов, переполнение буфера, тайм-ауты и непоследовательное поведение. Настоящая работа, необходимая для превращения функциональной опытной системы в надежное решение, только началась.

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

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

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

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

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

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

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

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

6. Сначала нацельте промежуточное программное обеспечение на общие действия и развивайте пакет по мере развития функциональности. Начните заранее, а затем протестируйте каждую дополнительную версию системы, сначала с предыдущим пакетом, а затем с модифицированным пакетом, учитывающим новые функциональные возможности.

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

8. Не откладывайте; протестируйте приращение как можно скорее. Не пропускайте ни одного, иначе вы пропустите их все. Сравните замеры и поведение с предыдущим, лучше или хуже?

9. Обеспечьте фоновую нагрузку для функционального тестирования. Функции, которые работают с разгрузкой, могут дать сбой, когда системе нужно подумать о других вещах.

10. Учитывайте случайные события, такие как сбои серверов и реконфигурация системы. Нужно ли их проверять под нагрузкой?

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

© Acutest Ltd 2005 – http://www.acutest.co.uk




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

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

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

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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2011-07-23 05:15:35
Баллов опыта: 552966
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.