load-testingyandexyandex-tank

Yandex tank post data


I want to use yandex tank to test my web app, I want to test registration, so i need to send request like this

Is it possible to send that kind of requests with different login fields?


Solution

  • Yes, it's possible, for POST requests your should use request-style ammo file, see http://yandextank.readthedocs.org/en/latest/tutorial.html#request-style

    You may specify ammo file as command line parameter or put it in tank .ini file in [phantom] section.

    Remember that with phantom as load-generator it's not possible to perform scenario-based testing, so you should generate all necessary data for requests in advance. Yandex-tank will just send it according to desired load-scheme.

    I'm not sure how CSRF protection works in your case, and if it does not permit re-use of session and csrftoken for multiple requests (and this parameters are mandatory for registration requests), you'll need to somehow obtain valid Cookies for each request to generate ammo. In this case I'd recommend you to switch to some scenario-based tool, i.e. jmeter. You may use jmeter as load-generator for yandex-tank as well, see http://yandextank.readthedocs.org/en/latest/configuration.html#jmeter

    In case you may reuse same Cookie for multiple registrations, ammo file will be like that:

    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
    
    ...