JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB
PRESENTATIONSRUNDA VILKA ÄR VI? HUR JOBBAR NI MED LOADRUNNER IDAG? ANVÄNDER NI JAVASCRIPT/DFE/JSON?
AGENDA LoadRunner JavaScript Engine (LR12) LoadRunner JavaScript Web/HTTP (LR12.50) Lite demo Diskussion Vad är nyttan med detta?
LOADRUNNER JAVASCRIPT ENGINE
VAD ÄR LOADRUNNER JAVASCRIPT ENGINE? Ingen ny Ajax Click and Script! Två nya funktioner i Web/HTTP (endast) Web_js_run() Exekvera JavaScript kod, spara retur värden i parameter Web_js_reset() Återställer / Nollställer context Gotya: Anropas automatiskt vid Simulate New User
AKTIVERA I RUNTIME SETTINGS
EXEMPEL FRÅN FIL web_js_run( "File=XMLHTTPRequest_sync_sample.js;", "ResultParam=param", LAST);
EXEMPEL EGEN KOD // Save the value 3 to LoadRunner parameter "Sum" web_js_run("code = myfunc(1, 2);", "ResultParam = Sum", SOURCES, "Code = var myfunc = function(x,y) { return x+y; }", ENDITEM, LAST); // Simple string manipulation web_js_run("code = myfunc('abc', 'def');", "ResultParam = ConcatStr", LAST);
EXEMPEL NEDLADDAD KOD web_reg_save_param("js_url_body", "LB=", "RB=", "Search=body", LAST); web_url("js_url", "URL=http://host/myCode.js",, LAST); web_js_run("code = eval(lr.getparam('js_url_body'));", LAST);
JAVASCRIPT -> LR API API Function Description Arguments LR.advanceParam(parameter) LR.setParam(name, value) LR.freeParam(name) LR.getParam(name) LR.log(text, level) LR.userDataPoint(name, value) Advances the specified parameter to the next value in the file. Saves a string to a parameter, creating the parameter if it does not exist. Deletes a dynamic parameter at runtime, freeing its buffer. Returns the value of the specified parameter. Logs a message. Records a user-defined data point for analysis. parameter. The name of the parameter to advance. Must be a parameter of type file or unique number. name. The name of the parameter in which to save the value. value. The value. name. The parameter name. name. The parameter name. text. The message. level. One of the following: "Error" "Warning" "Standard" "Extended" "Status" example: LR.log("text", "Error"); name. The name of the data point. Do not begin a data-point name with any of these strings: HTTP, NON_HTTP, RETRY, mic_, stream_, mms_ value. The numeric value.
ANVÄNDNINGSOMRÅDEN Konvertera data till och från olika format Base64, URL Encoding m.fl. Egna kodningar och säkerhetslösningar Stränghantering är mycket enklare i JavaScript Riktiga reguljära utryck Datumhantering Tex: Date().getTime().toString(16).toUpperCase(); // Genererar en unix timestamp i HEX kod Direkt tillgång till objekt strukturen i komplex JSON data (eval) Göra anrop med XMLHTTPRequest() Återanvända JavaScript kod logik från riktiga klienten/websidan eller andra JS från repos
LOADRUNNER JAVASCRIPT WEB/HTTP FULL BLOWN JAVASCRIPT VU
VAD DET INTE ÄR! Inte en ny Ajax Click & Script Kommer inte exekvera nerladdad JavaScript automatiskt Har inte stöd för DOM
HELT NYTT SCRIPT SPRÅK (ENDAST WEB/HTTP) JavaScript Engine från Google (V8) med EcmaScript 5 kompatibilitet Spela in och konvertera mellan Ansi C och JavaScript Stöd för Asynkrona anrop, Rendezvous Stöd för att använda Virtual Table Server (VTS) och andra databaser Auto-completion även för egen kod och egna bibliotek Ny reg find: web.regsaveparamjson() med Jpath stöd (GitHub)
STÖD FÖR JAVASCRIPT LIBRARYS Lr.loadLibrary() Laddar in en utpekad JS fil (från skriptets filer, gemensam disk, mm) Lr.require() Laddar även in hela moduler och paket
AKTIVERA VIA REGENERATE ELLER RECORDING OPTIONS (ENDAST NYA SCRIPT)
PRESTANDA? VMWare Virtual Server (8 cores 8 GB) 5000 VU med Ansi C WEB/HTTP 500 VU med Ansi C WEB/HTTP JSON DFE 50 VU med TruClient 2500 VU med JavaScript WEB/HTTP Native JSON?
LITE DEMO OM DET FUNKAR DENNA GÅNG
DISKUSSION SER NI NÅN NYTTA MED DETTA?
TACK FÖR MIG! CHRISTIAN.GERDES@LIGHTSINLINE.SE 0702-20 98 28 TEGNÉRGATAN 37, STOCKHOLM