Siege с патчами
Сомневаюсь, что кому-то надо, но вдруг. Первые пару дней отпуска (а у меня был отпуск, сегодня кончился), пачтил простенькую (по сравнению с jMeter) утилиту для нагрузочного тестирования — Siege. Она хороша тем, что умеет ходить по сайту заданными путями, иммитируя действия пользователя и сохраняя куки.
Я сделал версию со своими патчами, положил на Гитхабе. Во-первых, починил баг с неподставляющими время от времени переменными (заплатку отправил автору), во-вторых, так как у нас авторизационный ключ в проекте, который мы тестируем, прописывается прямо в урле, сделал такую вещь — при редиректе урл разбирается на составляющие ключ-значения, потом эти значения можно подставлять в следующие по порядку урлы в синтаксисе {{VARNAME}}.
Т. е. можно сделать что-то такое:
HOST=http://example.org
USER=bolk
PASS=password
{$HOST}/login.php?user={$USER}
# предыдущий урл редиректит нас на /list.php?list_id=5&SESSION=некое-значение
# SESSION теперь нужно будет добавлять в каждый следующий урл:
{$HOST}/list_detail.php?SESSION={{SESSION}}
Есть ещё специальная переменная {{QUERY_STRING}}, которая подставляет строку запроса из урла редиректа целиком, а так же две переменные — {{:PID}} (текущий айди процесса) и {{:RND}} (случайное число), которые я использовал для отладки, да так и не убрал.
Я не делал проверки на выделение памяти (выделяется крошечное её число) и в паре мест использовал статический буфер (так что если у вас будет урл больше 2К или ПОСТ-запрос больше 32К, программа рухнет) — мы ещё не решили точно будет ли использовать эту программу, потому тратить время, чтобы делать «на века» пока нет смысла.