有一段时间没有写东西了,各种原因吧,现在看的东西有点杂,不过好的一点是比着以前现在能看明白,还会用,以前也杂,但是不成体系,总感觉似懂非懂,很费劲,可能是量变引起的质变吧,最近很多东西都能看的明白,感觉这样很好!可能下面写东西还会很少,因为上半年要考一个证书,然后下半年还想考下公务员试试,万一行了呢,万一行了这不就嘿嘿嘿了!!!
废话不说了,步入正题
其实在性能测试中用户所关注的东西大部分只有一个:系统的响应时间
而我们关注的东西可能就比较多了
什么资源利用率了,系统容量(支持多少用户,最大并发用户),系统可拓展性(是不是可以更换硬件提高性能,优化代码,优化SQL等打了个),稳定性(能不能迟滞7*24小时处理业务)等等
在性能测试中我们需要做一些准备工作的:
千兆带宽,千兆交换机(这个很重要,百兆带框压力根本压不上来,这个可以用来排除网络问题的)
不要跨网段:压力机器和服务器(2-3万)不在一个网段上,这时请求都会堵在网络上去了
服务器:8g(内存) 16c(核CPU)
性能测试关注的几个常用指标:并发、并发用户数,事务,响应时间,TPS,吞吐量,点击率,资源利用率等等
并发:
狭义的并发:用户在同一时间做同一件事情
广义的并发:有很多用户在同时操作不同的功能
所以在性能测试中,一般先进行狭义的并发,在进行广义的并发
一些概念性的东西
系统用户数:系统的注册用户数,也可能存在僵尸用户
在线用户数:登录系统的用户,他的状态是在线的,但是不一定对服务器产生压力,仅仅在线
并发用户数:对服务器产生压力的用户,可能在线用户有N个,只有20%的用户在提交订单或者获取订单产生了压力
这里20%的用户是我们的并发用户数
事务:事务是脚本中的一个重要特性,要度量服务器的性能,需要定义事务,每个事务都包含事务开始和事务结束标记,事务用来衡量脚本汇总一行代码或多行代码执行所耗费的时间(可以把登录定义为一个事务,也可以把登录+发布公告定义为一个事务,这个主要看实际需求)
TPS:服务器每秒能够处理的事务数,用来衡量服务器的处理能力,它是基于事务统计出来的
吞吐量:不严格意义上就是tps
点击率:客户端的一个东西,从客户端发起请求服务器的数量,衡量客户端性能的,网络问题或者本机问题
响应时间:就是从用户发请求,到用户得到响应数据的整个过程的时间
客户端发送请求到服务器的时间N1+服务器的响应时间A1+服务器向数据库服务器发送的时间N2+数据库服务器A2+数据库服务器发送到web服务器时间N3+web服务器的反应时间A3+web服务器发送数据到用户端的时间N4
loadrunner第一关,安装,这个其实还是很难的,不过百度很强大,所以多试几遍总会成功的,我之前页转载了一篇相关文章,有兴趣的可以去看看
说下lr里面的是那三个函数吧
vuser_init :这个就是每一次运行时都会先运行这个里面的函数
vuser_end:这个就是每一次运行时都会最后运行这个里面的函数
这两个函数是不可迭代的,只能运行一次
Action:这个函数也只有这个函数是可以迭代的,例如一个用户重复登录了多少次
然后我这也不说录制了,因为总是感觉录制太费事了,并且会有很多用不到的东西也录制上了,最关键的是录制完了发现还不能用,所以和录制say byebye了
这里说的是lr11
我们直接写脚本或者直接把接口内容写上这样做感觉更高效一点
首先打开我们的lr图标
点击再点击图标,选择web(HTTP/HTML)
接着会让你填写一些录制需要填写的信息,直接取消,进入代码页面
然后在你需要写代码的部分右击选择insert–new step
接着搜索函数
点击确定,进入一个页面,在页面输入你要测试的网址就OK了,是不是很简单
这时候页面会出现一个函数,对,这个就可以直接运行了,是不是超级简单,不过这个是get请求方式的接口才能用,如果是post请求就是另外一个函数了
这个函数我们可以通过这样的方式去获得,还可以直接写!
我们对着web_url点击我们键盘的F1按钮,我们会得到一个在线的LR的函数使用手册
输入web_url,找到这个函数,点击example
这样我们就可以直接拿着这个函数改吧改吧就可以改用了
说一下这里面各个参数的意义啊
web_url("index.login", //步骤名字,随便取名
"URL=http://127.0.0.1:1080/WebTours/", //网址
"TargetFrame=", //这是浏览器的打开方式,这个不用管空就行,是在新窗口打开还是在原窗口打开
"Resource=0", //一个指示URL是否是资源的值,两种情况0:标识URL不是个资源,1是一个资源,不用管
"Referer=", //返回的响应消息的实体类型
"Mode=HTML", //录制模式/级别,HTML或HTTP
LAST); //这些脚本已经结束了);
这里面没写的就不用管了,写的看看就O了
有get请求,就有POST请求的,post请求的接口写法也有两种,和get的一样,相信聪明的你肯定能想的到,下面把web_submit_data 的一些参数书名写一下
web_submit_data("default.aspx",//步骤名称
"Action=http://127.0.0.1:1080/WebTours/login.pl ", //请求服务器的url地址
"Method=POST", //请求方法
"TargetFrame=", //不用管
"RecContentType=text/html", //返回的响应信息的实体的类型
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", //被当前页引用的页面(这个是登陆页面的前一个页面,订机票例子可以看下,不写这一步直接登陆的话是不行的)
"Snapshot=",
"Mode=HTML",
ITEMDATA, //一个分隔符,表明属性和数据域的分割符,和请求里面的空行类似
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
LAST );
这两个看完之后,是不是感觉之前的录制是不是弱爆了,嘿嘿,先这样吧,后续会接着更新,当然可能会比较慢,最近真的很忙!!!