Яндекс танк пост данные
Здравствуйте, я хочу использовать яндекс танк для тестирования моего веб-приложения, я хочу проверить регистрацию, поэтому мне нужно отправить запрос вот так
заголовок
POST /registration HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 30 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Origin: http://localhost:8080 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36 Content-Type: application/x-www-form-urlencoded Referer: http://localhost:8080/registration Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,ru;q=0.6 Cookie: csrftoken=XJ3oheJb0SndHfNAH2lSV2AtKNxxuXdv; JSESSIONID=igq9ejgl10jirr4t73mpjblp
Данные формы
login=abracadbra&password=brar
Можно ли отправлять подобные запросы с разными полями для входа?
2 ответа
Да, это возможно, для POST-запросов вам следует использовать файл патронов в стиле запроса, см. http://yandextank.readthedocs.org/en/latest/tutorial.html.
Вы можете указать файл боеприпасов в качестве параметра командной строки или поместить его в файл.ini танка в секции [phantom].
Помните, что с фантомом в качестве генератора нагрузки невозможно выполнить тестирование на основе сценариев, поэтому вам следует заранее сгенерировать все необходимые данные для запросов. Яндекс-танк просто отправит его по желаемой схеме загрузки.
Я не уверен, как защита CSRF работает в вашем случае, и если она не разрешает повторное использование сессии и csrftoken для нескольких запросов (и эти параметры являются обязательными для запросов регистрации), вам нужно каким-то образом получить действительные файлы cookie для каждый запрос на генерацию боеприпасов. В этом случае я бы порекомендовал вам переключиться на некоторый инструмент, основанный на сценариях, например, jmeter. Вы также можете использовать jmeter в качестве генератора нагрузки для yandex-tank, см. http://yandextank.readthedocs.org/en/latest/configuration.html
В случае, если вы можете использовать один и тот же Cookie для нескольких регистраций, файл боеприпасов будет выглядеть так:
649 tag1
POST /registration HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 30
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:8080/registration
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6
Cookie: csrftoken=XJ3oheJb0SndHfNAH2lSV2AtKNxxuXdv; JSESSIONID=igq9ejgl10jirr4t73mpjblp
login=abracadbra&password=brar
646 tag2
POST /registration HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 27
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:8080/registration
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6
Cookie: csrftoken=XJ3oheJb0SndHfNAH2lSV2AtKNxxuXdv; JSESSIONID=igq9ejgl10jirr4t73mpjblp
login=sample2&password=brar
...
Существует также формат URI+POST, похожий на стиль uri, но с телами записей:
load.ini:
ammo_type=uripost
ammo.uripost:
[Host: example.org]
[Connection: close]
[User-Agent: Tank]
5 /route/?rll=50.262025%2C53.276083~50.056015%2C53.495561&origin=1&simplify=1
class
10 /route/?rll=50.262025%2C53.276083~50.056015%2C53.495561&origin=1&simplify=1
hello!clas
7 /route/?rll=37.565147%2C55.695758~37.412796%2C55.691454&origin=1&simplify=1
uripost
Числа в начале строк с урисом - это размеры почтовых тел.