2011-12-01 15 views
7

Obecnie używam JMeter do symulacji 5 użytkowników odpalających żądania co 40 sekund. Stworzyłem 100 różnych żądań, ale po każdych 40 sekundach każdy użytkownik uruchamia wszystkie 100 żądań. Chcę to zrobić w taki sposób, aby po każdych 40 sekundach każdy użytkownik odpalał tylko jedno żądanie, a to żądanie musi być inne niż poprzednie żądanie. Chciałbym wiedzieć, jakiego rodzaju kontrolera użyć (lub cokolwiek innego), aby osiągnąć ten scenariusz.JMeter - wysyłanie różnych żądań w każdej iteracji

Dzięki

Odpowiedz

13

spróbuje użyć Random Controller.

Najprostszym sposobem realizacji scenariusza:

 
Thread Group 
Number of Threads = 5 
Loop Count = N 
    . . . 
    Random Controller 
     HTTP Request 001 
     HTTP Request 002 
     HTTP Request 003 
     . . . 
     . . . 
     HTTP Request 100 
    Test Action 
    Target = Current Thread 
    Action = Pause 
    Duration = 40000 
    . . . 

To będzie iteracyjne 5 wątków N razy.
Losowy kontroler będzie RANDOMLY odebrać na każdym kroku żądanie http z "żądania puli" - wszystkie próbniki dodane jako dzieci do kontrolera losowego.
Test akcji zatrzyma wątek na 40 sekund.

Aktualizacja:
ilustracja pracy dla powyższego schematu:

Random Controller example

 
Thread Group 
Number of Threads = 5 
Ramp-Up Period = 0 
Loop Count = 10 

Constant Timer 
Thread Delay (in ms) = 40000 

można pobrać przykładowe pracy dla opisanego schematu stąd: rc-plan.jmx.
Ten działa jak chcesz (przynajmniej dla mnie, Jmeter 2.5.1): wybiera losowo JEDNĄ prośbę z puli żądań (w przykładzie - 10 żądań) dla KAŻDEGO użytkownika (tutaj - 5 użytkowników) na KAŻDYM kroku (tutaj - 10 pętli) i zatrzymuje każdy wątek na 40 sekund (Constant Timer).

Możesz również zajrzeć do tego archiwum mailowego: Is their a way to randomize URL selection?.
Sytuacja podobna do Twojej wydaje się opisana jako here.

... Według oficjalnej dokumentacji „Interakcje pomiędzy wieloma kontrolerami mogą przynieść złożonego zachowania. Jest to szczególnie prawdziwe w odniesieniu do kontrolera losowej.”

+0

Czy powyższa konfiguracja spowoduje, że każda wątek będzie generować jedno żądanie (losowo wybrane z puli żądań) co 40 sekund lub wszystkie 100 żądań co 40 sekund? Wypróbowałem to i ciągle strzelałem 100 razy co 40 sekund. Czy możesz przesłać mi przykładowy plan testów, który będzie dla ciebie odpowiedni? Wielkie dzięki za pomoc Alies – user1066568

+0

Wypróbuj ten: http://www.filehat.com/en/file/27104/rc-plan-jmx.html. Działa dobrze jak dla mnie (Jmeter 2.5.1). –

+0

Dziękuję bardzo za Alies. – user1066568

6

Inną opcją może być utworzenie pliku CSV z parametrami dla żądań z wyprzedzeniem i użycie CSV Data Set Config do sparametryzowania pojedynczego żądania http.

To oczywiście zależy od tego, jak różne są wasze żądania HTTP, ale jeśli to pasuje do Twoich wymagań istnieją pewne potencjalne premie z utrzymaniem wniosek 1 http w planie testu vs 100.

Pozostałe dane byłyby takie same jak @Alies Belik określona - jedna grupa wątków skonfigurowana dla wymaganej liczby wątków i pętli, ze stałym zegarem na końcu przez 40-sekundową pauzę.