Яндекс танк пост данные

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

  • заголовок

    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

Числа в начале строк с урисом - это размеры почтовых тел.

Другие вопросы по тегам