性能测试:在不同负载情况下,查看被测试系统的表现。
前端性能:app 性能(GT、Emmagee)
后端性能:接口和服务。
性能的指标:TPS 和平均响应时间
loadrunner三大组件:
virtual user genertator:虚拟用户生成器,录制脚本,调试脚本,单线程跑
controller:设定性能测试的场景,运行多线程(多进程)并发执行并发测试的。
analysis:分析性能测试执行后的结果,可以出很多图表。
参数化 :
用同样的用户名和密码登录能够避免大量的缓存被命中,增加服务器的压力
关联 :登录了之后,系统返回一个token,访问所有的后续页面带有这个token。录制的时候,拿到录制的token都是老的值,这个时候就需要使用关联。把需要用到的动态数据放到变量里,下次使用的时候用变量替换。
启动web tours
勾选以下两项,可以查看loadrunner出错的信息
录制脚本相关配置介绍
脚本的结构:
vuser_init:函数,在一个线程中最多执行1次,一个用于数据准备等操作,在action前执行
action:函数,在一个线程中可以执行1-多次
vuser_end:函数在一个线程中最多执行1次,一个用于数据清理等操作,在action后执行。
开始录制:
动静分离:
静态的网页,图片,静态的js,静态的css单独放到一个服务器上,动态的放到另外服务器上,给动态服务器减压
loadrunner全部都是基于协议来实现的,没有浏览器进行展示,所以静态的资源没有什么用。
录制的脚本:
Action()
{
web_add_auto_header("DNT",
"1")
web_url("index.htm", //请求的名字
"URL= http://127.0.0.1:1080/WebTours/index.htm ", //请求的网址
"Resource=0", //是否是资源?0,不是资源,是个网页,1:是资源:文件:图片、js、css..
"RecContentType=text/html", //contentType:请求类型:网页类型
"Referer=", //从哪个网址访问来的信息
"Snapshot=t1.inf", //截图文件的名字
"Mode=HTML", //录制的模式:html, url。如果有ajax\flash\:必须使用url:会把所有的http请求录制下来。
LAST)
web_set_sockets_option("SSL_VERSION", "2&3")
web_url("login.pl",
"URL= http://127.0.0.1:1080/WebTours/login.pl?username=&password=&getInfo=true ",
"Resource=0",
"RecContentType=text/html",
"Referer= http://127.0.0.1:1080/WebTours/home.html ",
"Snapshot=t3.inf",
"Mode=HTML",
LAST)
web_add_cookie("SRCHD=AF=NOFORMDOMAIN=iecvlist.microsoft.com")
web_add_cookie("SRCHUID=V=2&GUID=213C7604B2E646778D68C0E2C5F9563A&dmnchg=1DOMAIN=iecvlist.microsoft.com")
web_add_cookie("SRCHUSR=DOB=20190119DOMAIN=iecvlist.microsoft.com")
web_add_cookie("MC1=GUID=1cc40e7eeb084d58a1a4aab5a0176a31&HASH=1cc4&LV=201903&V=4&LU=1553846123710DOMAIN=iecvlist.microsoft.com")
web_add_cookie("MUID=30550888172C666B26C505A6132C607FDOMAIN=iecvlist.microsoft.com")
web_add_auto_header("UA-CPU",
"AMD64")
web_revert_auto_header("UA-CPU")
web_submit_data("login.pl_2",
"Action= http://127.0.0.1:1080/WebTours/login.pl ", //数据提交后的处理网址
"Method=POST", //http协议的类型
"RecContentType=text/html", //资源类型,contenttype
"Referer= http://127.0.0.1:1080/WebTours/login.pl?username=&password=&getInfo=true ",
"Snapshot=t6.inf",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=tianchuan", ENDITEM,
"Name=password", "Value=tianchuan", ENDITEM,
"Name=passwordConfirm", "Value=tianchuan", ENDITEM,
"Name=firstName", "Value=tianchuan", ENDITEM,
"Name=lastName", "Value=tianchuan", ENDITEM,
"Name=address1", "Value=tianchuan", ENDITEM,
"Name=address2", "Value=tianchuan", ENDITEM,
"Name=register.x", "Value=57", ENDITEM,
"Name=register.y", "Value=13", ENDITEM,
LAST)
return 0
}