2012-07-17 5 views
2

내 웹 응용 프로그램에서 POST 동작 중 하나의 부하 테스트를 실행하고 싶습니다. 문제는 POST 데이터에서 고유 한 전자 메일 주소를받은 경우에만 작업을 완료 할 수 있다는 것입니다. 내가 몇 수천 WCAT 스크립트처럼, 고유의 이메일을 각각 요청 생성 :로드 테스트 임의 화 : 각 가상 클라이언트마다 다른 시나리오를 사용하도록 WCAT을 설정하는 방법은 무엇입니까?

transaction       
    {         
    id = "1";  
    weight = 1; 
    request 
    { 
     verb = POST; postdata = "Email=test546546546546%40loadtest.com&..."; 
     setheader { name="Content-Length"; value="..."; 
    } 
    // more requests like that 
    } 

내 UBR 설정 파일 같은 것입니다 :

settings 
{ 
    counters 
    { 
     interval = 10; 
     counter = "Processor(_Total)\\% Processor Time"; 
     counter = "Processor(_Total)\\% Privileged Time"; 
     counter = "Processor(_Total)\\% User Time"; 
     counter = "Processor(_Total)\\Interrupts/sec"; 
    } 
    clientfile  = "<above-wcat-script>"; 
    server   = "<host name>"; 
    clients  = 3; 
    virtualclients = 100; 
} 

내가 테스트를 3 × 100 = 300 클라이언트를 실행

요청을 전송하기 시작하지만, 그들은 동일한 순서로이를 수행하여 첫 번째 클라이언트의 첫 번째 요청이 처리되고 다른 클라이언트의 다음 299 개의 요청이 더 이상 고유하지 않습니다. 그런 다음 일부 클라이언트의 두 번째 요청이 처리되고 다른 클라이언트의 299 개의 동일한 요청이 고유하지 않습니다. 요청을 무작위로 추출하거나 순서를 달리하거나 각 가상 클라이언트마다 별도의 시나리오 스크립트를 설정하여 각 요청에서 고유 한 전자 메일 주소를 전달할 수있는 방법이 필요합니다. WCAT로 그렇게 할 수 있습니까?

그런 테스트를 할 수있는 다른 도구가 있습니까?

답변

3

전자 메일 주소에 임의 정수를 추가하기 위해 rand(x,y) WCAT 내부 함수를 사용 해본 적이 있습니까? 이렇게하면 무작위 이메일 주소를 사용하는 단일 요청으로 단일 거래가 발생할 수 있습니다. 따라서 수동으로 고유 한 전자 메일 주소로 1000 건의 요청을 작성하는 대신 단일 무작위 트랜잭션을 1000 번 사용할 수 있습니다.

새 무작위 거래는 다음과 같이 보일 수 있습니다 rand(x,y)를 사용하여 충분히 무작위하지 ​​않는 경우

transaction       
    {         
    id = "1";  
    weight = 1; 
    request 
    { 
     verb = POST; 
     postdata = "Email=" + rand("100000", "1000000") + "@loadtest.com&..."; 
     setheader { name="Content-Length"; value="..."; 
    } 
    } 

다음은 데이터를보다 랜덤하게 추가 기능을 사용하여 실험 할 수있다. 이 같은 아마 뭔가 :

postdata = "Email=" + rand("100000", "1000000") + "@loadtest" + clientindex() + vclientindex() + ".com&..."; 

할 수 있습니다 find the WCAT 6.3 documentation here, 사용할 수있는 내부 기능의 목록을 포함하여. 내장 된 기능으로 충분하지 않으면 자신 만의 기능을 만들 수도 있습니다.

+1

내가 찾고있는 것이 맞습니다. – PanJanek

+1

rand()를 사용하여 clientindex()와 vclientindex도 약간의 변화가있었습니다. rand()의 숫자는이 'rand ("100000", "1000000")와 같은 문자열이어야합니다. 웬일인지 그것을 이해하는 데 1 시간이 걸렸다. –

+0

@DJvanWyk, rand() 함수에서 빠진 따옴표를 알아 줘서 고마워. 내 대답에서 실수를 바로 잡았습니다. –