2017-01-18 1 views
0

Ich habe eine Frage, wo ich viele verschiedene Quests und Antworten zu diesem Thema gesehen habe, aber bisher hat noch nichts geholfen.Jmeter hat Cookies an verschiedene Threads weitergegeben, aber trotzdem Anfragen mit [keine Cookies] erhalten.

Bitte lesen Sie es bis zum Ende, um zu sehen, es ist kein duplizierter Beitrag.

Ich verwende 2 Thread-Gruppen, die Cookies verwenden. Da Cookies nicht über Thread-Gruppen hinweg gemeinsam genutzt werden, habe ich sie mit der Methode in Eigenschaften "exportiert" und in der 2ns-Thread-Gruppe mit der Cookie-Klasse des CookieManagers "importiert". Ich habe die gleiche HTTP-Anfrage auf die erste und zweite Thread-Gruppe platziert. Offensichtlich funktioniert es auf der ersten, aber auf der 2., sehe ich es [keine Cookies].

Die Struktur Test ist wie folgt:

HTTP Cookie Manager 
 
Thread A - 1 thread, 1 loop 
 
- Login page 
 
    - Beanshell PostProcessor 
 
     props.put("ASPXAUTH_Cookie","${COOKIE_.ASPXAUTH}"); 
 
     props.put("ASP.NET_SessionId_Cookie","${COOKIE_ASP.NET_SessionId}"); 
 
    - Page X to hit - success 
 
Thread B - 6 thread, 1 loop 
 
- Login page 
 
    - Beanshell Prerocessor 
 
     import org.apache.jmeter.protocol.http.control.CookieManager; 
 
     import org.apache.jmeter.protocol.http.control.Cookie; 
 
     import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 
 
     HTTPSamplerProxy sampler = ctx.getCurrentSampler(); 
 
     CookieManager manager = sampler.getCookieManager(); 
 
     Cookie cookie1 = new Cookie(".ASPXAUTH",props.get("ASPXAUTH_Cookie"),"","/",false,0); 
 
     manager.add(cookie1); 
 
     Cookie cookie2 = new Cookie("ASP.NET_SessionId",props.get("ASP.NET_SessionId_Cookie"),"","/",false,0); 
 
     manager.add(cookie2); 
 
    - Same Page X to hit - failure

Erste Ergebnisse für Seite X:

GET http://Mysite/pages/MyView.aspx?subRoute=views&pageid=7168&routeName=dashboards 
 

 
Cookie Data: 
 
.ASPXAUTH=9CB09DD7A906ED67027E9B1ED71C707A498B8234C737169AA3EF1164890A217D9CCD1F1B32736338A7DFBF3DE0A07AD45F170A0F11FE49C827581C584577372D2D3C7D4F52DE1B73D3DE9A1263150B85F302DD01B9CF93AF380F5C63F618634CEEB5C3CFD95F1081EC28F5A556B21EAA; ASP.NET_SessionId=rg4dxqm1xai4wovvfvyezggo 
 

 
Request Headers: 
 
Connection: keep-alive 
 
X-DevTools-Emulate-Network-Conditions-Client-Id: 08a74297-b666-496a-a1cb-620054bc5db5 
 
Upgrade-Insecure-Requests: 1 
 
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
 
Referer: http://Mysite/pages/ui/ 
 
Accept-Encoding: gzip, deflate, sdch 
 
Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2 
 
Host: load-rec-8

Zweite Ergebnisse für Seite X (die auf die ist 2. Fadengruppe):

GET http://Mysite/pages/MyView.aspx?subRoute=views&pageid=7168&routeName=dashboards 
 

 
[no cookies] 
 

 
Request Headers: 
 
Connection: keep-alive 
 
X-DevTools-Emulate-Network-Conditions-Client-Id: 08a74297-b666-496a-a1cb-620054bc5db5 
 
Upgrade-Insecure-Requests: 1 
 
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
 
Referer: http://Mysite/pages/ 
 
Accept-Encoding: gzip, deflate, sdch 
 
Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2 
 
Host: load-rec-8

Bitte antworten Sie nicht mit „nicht unterschiedliche Fadengruppen verwenden“, da ich nur 1 Login (1. Thread-Gruppe), während die zweite Fadengruppe die gleiche Anforderung ausgeführt werden soll verwenden müssen für 6 Benutzer gleichzeitig parallel.

Welche Tests ich mit vielen anderen Posts zu diesem Thema gemacht habe, hat nicht funktioniert.

Irgendeine Idee bitte?

+0

Sind Sie sicher, dass ThreadGroup2 beginnt, sobald die ThreadGroup1 das Cookie Eigenschaft legt? Wenn nicht, können Sie threadgroup2 verzögern und sehen, ob es hilft? – vins

+0

@vins, Ja, da ich die ** Threadgruppen nacheinander ausführen (d. H. Gruppen einzeln ausführen) ** in der Testplanebene gesetzt habe. Ich habe auch log.info Drucke Thread Group2 und sah, dass die Cookies korrekt erstellt werden ... –

Antwort

0

Wahrscheinlich ist Ihr Problem, dass Sie beim Erstellen einer neuen Cookie-Instanz keine "Domäne" angeben. Sie müssen die Domäne übergeben, die Ihrer Anwendung unter der Testposition entspricht (was Sie unter "Servername oder IP" haben). Abschnitt des HTTP Request Sampler), dh wenn Sie Lasttests sind http://example.com Domäne, bieten .example.com beim Erstellen des Cookies über Beanshell

im allgemeinen gegeben kopieren Sie Cookie Namen und Werte, auch als auch alle übrigen Attribute kopieren . Zum Beispiel Code How to Use BeanShell: JMeter's Favorite Built-in Component.

Weitere Verbesserungen:

  1. ersetzen ${COOKIE_.ASPXAUTH} mit vars.get("COOKIE_.ASPXAUTH");
  2. Unter den Linien entfernt werden können, sind sie nicht erforderlich ist, Beanshell PreProcessor hat bereits sampler vordefinierte Variable

    import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 
    HTTPSamplerProxy sampler = ctx.getCurrentSampler(); 
    
+0

Ich habe tatsächlich WireShark verwendet, um die Netzwerkpakete zu überprüfen und sah, dass die Domäne die Maschine selbst ist - es ist Testumgebung so meine URL sieht so aus: ** http: // SiteName: 80/MySite/... etc ... **, also wenn ich die Cookies erstellt habe, setze ich den Ort als "/" oder sogar "/ MySite" und für Domain habe ich "* SiteName *" eingestellt. Aber immer noch, es funktioniert nicht :( –