Как протестировать сайт с несколькими одновременными пользователями с разных IP-адресов (нагрузочный тест)?
Мне нужно проверить сайт и как он обрабатывает несколько соединений одновременно. Каждый пользователь должен:
- Подключиться с другого IP-адреса
- Имитация просмотра пользователя -> (открыть несколько страниц, нажать несколько кнопок)
Мне нужно смоделировать около 200 таких пользователей. В идеале хотелось бы имитировать 1000, а затем и 2000.
Какой самый простой способ сделать это? Смогу ли я реально написать сценарий, который делает это, или есть ли способ использовать мои другие серверы для этого? Я также слышал о людях, использующих EC2 для подобных вещей, но я думаю, что это немного выше моей головы.
Какие-нибудь мысли?
** РЕДАКТИРОВАТЬ **
В ответ на комментарий ниже. Сайт, очевидно, сайт. Как в www.somedomain.com. Для проверки потребуется несколько человек, чтобы получить доступ к этому сайту, войти в систему с предоставленными учетными данными, а затем нажать, а затем сделать ставку на аукционах (это тип сайта, посвященный аукциону с пенни). Они делают ставки на аукционах нажатием кнопки, и в тесте участвуют люди, которые открывают страницы и делают ставки.
2 ответа
Первое: это нелегко сделать правильно. На самом деле, даже сложно найти людей со знанием дела, чтобы сделать это правильно...
С учетом сказанного, вот несколько советов, основанных на моем опыте работы с нагрузочным тестированием и тестированием производительности для большого сайта.
Для этого есть профессиональные, дорогие инструменты. Одним из них является Loadrunner, и он используется нашим отделом тестирования. Это все, что я знаю об этом - я говорю тестировщикам, что они должны тестировать, а потом они делают это, пока я занят другой работой...
Если вам не нужен профессиональный дорогой инструмент, вам нужно просто настроить сервер, который имеет 200 различных виртуальных IP-адресов (или 1000, или 2000). Затем вам нужна программа, которая выполняет множество одновременных подключений с этого сервера, каждое подключение с отдельного IP. Сервер должен быть размещен непосредственно на том же коммутаторе, что и сервер, который вы хотите протестировать. Причина такого размещения заключается в том, что при тестировании вы, по сути, притворяетесь целым интернетом, и вам нужно быть уверенным, что трафик фактически не направляется в интернет. Вы также должны иметь представление о том, каковы общие схемы использования вашего веб-сайта. Если у вас их нет, вы все равно можете выполнить базовый нагрузочный тест, например, при посещении трех случайных страниц, но результаты будут менее значимы для вашего реального использования.
В этом вопросе на StackOverflow есть несколько советов по программному обеспечению с открытым исходным кодом. Но моя главная рекомендация - заплатить кому-то, кто делает это для жизни; это будет быстрее и, вероятно, дешевле, чем тратить свое время.
Во-первых, если у вас нет схемы балансировки нагрузки или аутентификации на основе IP, то число IP-адресов редко играет важную роль в нагрузочном тестировании. Производительность подавляющего большинства платформ веб-разработки не зависит от IP-адреса пользователей.
Но если исходить из предположения, что количество IP-адресов действительно важно для вашего случая, то вам просто необходим инструмент нагрузочного тестирования, который может дать вам необходимое количество IP-адресов. 200 IP не так уж сложно, так как вы можете получить столько в одной подсети на одной машине. Затем просто используйте инструмент, который будет использовать это (я подключу наш продукт - Load Tester, который имеет бесплатную версию LITE, которую вы можете использовать для простых тестов и допускает неограниченное количество одновременных пользователей).
Когда вам нужно 1000 или 2000 пользователей, это просто увеличивает количество необходимых вам генераторов нагрузки и количество IP-адресов, которые вам нужно настроить на этих генераторах нагрузки.
Надеюсь, это поможет!