prestandatest mobilbanken 3...ajax truclient erfarenheter, tips och trix från swedbank it christian...

22
Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Upload: others

Post on 10-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Ajax TruClient

Erfarenheter, tips och trix från Swedbank IT

Christian Gerdes

Performance Engineer, LIGHTS IN LINE AB

Page 2: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Intro

• Lite om Swedbanks Teknik Test

• Varför TruClient

• En ny teknik kräver ett nytt tänk

• Lite utmaningar med tekniken

• Tips på verktyg

• Lite demo och ställ frågor

Page 3: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Swedbank Teknik Test

• Började redan 1997

• Idag ett team på 5 PT, 1 TL, 1 MF

• Utarbetade och väl etablerade metoder och processer

• Release teknik tester (regression) och Projekt (Utveckling, IO, Inköpta system)

• 10 releaser, 90 projekt per år (2-5 v)

• Dubbla produktionslika PT miljöer (inkl MF) + 1 labb miljö, 3 delade controllers, 3 kanoner

Page 4: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Varför TruClient? – Webben ändras

• Web 1.0 – Kompletta sidor och ett singel trådat flöde – Allt är i princip HTML och HTTP Metoder – Ingen logik i webbläsaren – Användaren styr flödet

• Web 2.0 lösningar – Mycket logik i webbläsaren (oftast JavaScript) – Delar av sidor eller endast data hämtas (XML, Objekt

eller egna format) – Flera parallella logiska flöden av data – Händelser (klient eller server) kan styra flödet

Page 5: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Vad gör TruClient?

• Fjärrstyr en bantad webbläsare (FF/IE)

• Därmed gör en riktig webbläsare jobbet

• Spelar in händelser på objekt i webbläsaren

– Istället för kommunikationen med servern

• Tanken är

– Slippa korrelering och parametersättning av data

– Slippa koda (prestandatest för dummies)

– Enklare att spela in (klicka runt bara…)

Page 6: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik
Page 7: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Varför inte TruClient överallt?

• Fortfarande en ung teknik – Fallgropar, buggar, brist på dokumentation och

erfarenheter, brist på kunskap om webbutveckling

• Kräver mycket mer resurser på kanonerna – Vi har sett faktor på 100 ggr mer

• Svårare att felsöka och tweaka – Mindre korrelering ja, men när du måste blir det

snabbt krångligt

• Inte lika lätt att fuska… – Känns ibland mer som ett handikapp än en dröm..

Page 8: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Funkar TruClient då?

• JA!

– Flera projekt hade inte fått prestandatester annars

– Framför allt AJAX tunga applikationer med egna format

– I kombination med vanlig Web/HTTP

• 2 Lyckade projekt 100% TruClient

– Remedy ARS Web lösning (egna format)

– GWT lösning (GWT Request / JSON Svar)

Page 9: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Ny teknik – Nytt tänk

• Glöm HTTP, TCP, Protokoll och GET/POST

• Lär dig HTML 4/5, DOM, JavaScript och XPath

• Tänk händelser, objekt och relationer snarare än sekventiella flöden och data

• Som med all ny teknik, förbered dig för begräsningar…

Page 10: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Utmaningar med tekniken

• Identifiera objekt och synkronisera – Det är en dynamisk värld… javascript, namnbyten, mm

• Alla dessa Mouse Overs… • Betänketider (Think Time) finns inte • Går inte att filtrera/ ta bort resurser • Firefox profilen svår att ändra (som inställningar, säkerhet) • Ogiltiga SSL cert accepteras inte • Svårt att mäta svarstider och bryta ner dem • Mindre information och loggning av vad som sker

– Svårare att felsöka när skriptet inte gör som du vill – Snapshots är bara bilder… inget mer.

Page 11: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Mäta svarstider

• Default är Network Time – Väntar på 150 ms ”tystnad” på nätverket – Tiden kan justeras globalt (ej individuellt) – Problem vid asynkron Ajax

• Alternativet är Wait for Objekt – Gäller att hitta rätt objekt att vänta på – Kommer inkludera renderingstider / javascript

exekveringstid – Höga time out tider (default 20 sec)

• Dessutom finns en default think time mellan steg, även den global (500 ms)

Page 12: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Parametrar

• Skapas som vanligt, samma Parameter List

• Sätts i skriptet med hjälp av JavaScript

– Finns inga knappar eller funktioner för infoga!

• Värdefält: LR.getParam("PERSONNUMMER")

• Objekt: ArgContext.LR.getParam(“DOKUMENTID”)

Page 13: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Identifiera objekt

• 3 sätt: Automatic, XPath och JavaScript

Exempel XPath:

//input[@id=”kontoId"]

Exempel JavaScript:

document.querySelectorAll('a[title="SearchResult"]');

document.getElementById("chbx_145”);

evalXPath(“//input[@id=\”kontoId\"]”);

Page 14: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Korrelering – enkel slump

• XPath för att identifiera ett objekt tex något i en lista

(//input[@id=\”kontoId\"])[2]

• [2] identifierar den andra raden i listan

• [0] väljer slumpmässigt

Page 15: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Avancerad korrelering – Två steg

• Lägg till ett JavaScript steg före det steget där du behöver identifiera objektet

• Skriv JavaScript kod som hittar objektet och sparar en referens till det i en variabel (ArgContext.mittObjekt tex)

• Använd ArgContext.mittObjekt som JavaScript identifierare

Page 16: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Avancerad korrelering - exempel

• JavaScript metoden evalXPath returnerar en array om flera matchar XPath uttrycket, flera sätt finns då:

random(minaObjekt);

minaObjekt[minaObjekt.length – 1];

minaObjekt[ArgContext.LR.getParameter(”ID”)];

Page 17: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Tick Tock - Think Time

• Finns bara en wait function i JavaScript

• Exempel på slumpmässig TT:

Page 18: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Loggning och skriva saker

• JavaScript

LR.Log(”Detta kommer loggas i VU loggen”)

• Gamla C-funktioner

– Läggs i C-functions.c

– Anropas med steget ”Evaluate C function”

– Egna filer, använda Attributes, VTS mm.

– Obs, kompileringsfel syns inte i VuGen!

Page 19: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Tips på extensions (FF)

• Finns massor, prova dig fram!

• Developer Assistant

– XPath Tester

– JavaScript Console

– JavaScript Injector

• Firebug och Firefinder

– Hjälp att hitta objekt, namn, relationer

Page 20: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Lite om resursförbrukning…

• Extremt olika från skript till skript

– Du måste benchmarka skripten!

– Överbalastad kanon = högre svarstider

• 50 VU tog cirka 3,5 GB och 60-70% CPU

• På samma maskin drar 2500 Web VU 2,5 GB och 17% CPU…

• Faktor 100x mer resurskrävande per VU

Page 21: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Demo, Frågor, Diskussion

Page 22: Prestandatest Mobilbanken 3...Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro •Lite om Swedbanks Teknik

Tack för mig!

[email protected]