Как правильно загрузить тестирование нового компонента на веб-сервере? - PullRequest
1 голос
/ 26 июля 2010

Мы внедряем новое решение в нашей классической среде ASP, которое использует COM-взаимодействие, чтобы заставить компонент .NET выполнить некоторую работу. Решение работает отлично, и наш руководитель группы хочет убедиться, что оно будет работать хорошо под нагрузкой, поскольку мы впервые работаем с компонентами .NET на нашем сайте.

Что мне нужно учитывать, чтобы сделать правильный тест, чтобы убедиться, что новый код, который я ввел, не сломается под нагрузкой?


Что я уже делаю:

Я сделал простую веб-страницу asp, которая вызывает новый компонент на основе информации в строке запроса. Строка запроса также имеет параметр «off switch», поэтому я могу протестировать страницу без компонента по умолчанию. Сама страница пуста, за исключением того, что она возвращает значение, представляющее, был ли компонент успешным, неудачным или был пропущен.

Я написал простое консольное приложение, которое использует HttpWebRequest для итеративных вызовов страницы ASP, используя уникальные данные из базы данных при каждом вызове. Все это делает и проверяет значение, которое возвращает страница, и сохраняет данные.

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

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

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

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Visual Studio имеет компонент нагрузочного тестирования, но то, что вы сделали, по сути то же самое.Преимущество решения Visual Studio заключается в том, что вы можете видеть, где находится вероятное узкое место в производительности.

Ключ к тому, чтобы пройти или не сдать тест, не должен быть "Правильно ли соотношение времени к завершению?msgstr ", но" В порядке ли общее время отклика по сравнению с заданной нагрузкой? "Поэтому уместно сравнение с новым компонентом.

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

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

1 голос
/ 26 июля 2010

Существуют такие компании, как Push-to-Test и Gomez, которые мы использовали, чтобы доказать, что крупномасштабные приложения будут работать.Оба моделируют большое количество пользователей, которые проходят по указанному пути через ваше приложение.(В случае с Gomez у них есть компьютеры реальных пользователей, которым они выплачивают копейки владельцам запуска тестов.) Они могут моделировать тысячи одновременно работающих пользователей и предоставлять другие услуги, такие как мониторинг времени безотказной работы.1002 * Оба являются платными услугами, но программное обеспечение, которое Push-to-Test основано на Selenium, так что вы можете создать (или найти) платформу для нагрузочного тестирования, основанную на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...