使用LoadRunner对web服务器压力测试总结

当项目需要你的时候,开发人员可能充当不同的角色。比如身边的测试人员说,我不会压力测试。但是现在客户又需要压力测试,那怎么办呢?到底怎么办呢?做为就技术人员的你,这个时候就的勇敢的站出来- 开始研究loadrunner,对框架进行压力测试。

  Loadrunner 简介:

  LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。(摘自:百度知道)

  LoadRunner 在网络上以及HP已经提供了相当多的的技术资料。网络上也有很多这方面的资料。至于详细的使用说明本文将不再一一阐述。

  本文重点只是给大家分享我在使用loadrunner过程中曾经被困扰过的环节。

  一、安装:

  loadrunner 的安装需要注意:如你您是XP系统可以安装 loadrunner9.5如果想录制IE8脚本,您需要安装IE8插件。注:这个我自己没试

  过,只是有安装过XP的同事有提及。具体的插件安装包,百度一下很容易找到。需要着重强调的是,如果您是win7操作系统,我亲身经历的感受就是装了loadrunner9.5 再装IE8插件,loadrunner 依然还存在各种问题、各种不稳定。网络上有文章指出将Loadrunner9.50升级至

  9.5.1或者9.5.2然后在装HP的IE8补丁。最后google了下发现loadrunner最新版本是11。且可以支持WIN7。最后就没在折腾9.5.0版本。直接装上了11版本.

  二、网络环境:

  当我们使用Loadrunner录制脚本的时候,特别是通过IE录制脚本,要密切注意。安装loadrunner的机器的IE是否开启了代理设置

  如果开启,Loadrunner11 在录制脚本的时候会出现各种不稳定。这个问题当时困扰了我很久。

  三、录制脚本:

  录制脚本属loadrunner 重要环节之一。这里挑出几条个人认为比较重要的来和大家分享:

  1、参数设定

  我们第一次录制脚本成功后生成C脚本内中的参数都是由web表单客户实际操作的业务数据,但是这些数据都是“硬编码”。简单的说我们把这脚本运行时,会将之前录入的内容插入到数据库内(假设数据校验都是合法)。可是我们的实际压力测试时不可能将录制的脚本只运行一次。实际会根据各种场景各种场合进行策略性的执行已录制脚本。同时我们也需要准备充分的数据集(比如File Parameter)让脚本来执行。这些都可以在脚本内使用Parameter 来替换,比如以下脚本:

web_submit_data("GetProvinceAutoInputData",
"Action=http://192.168.0.1:8080/MasterData/GetProvinceAutoInputData",
"Method=POST",
"RecContentType=application/json",
"Referer=http://192.168.0.1:8080/MasterData/BasCity",
"Snapshot=t14.inf",
"Mode=HTML",
ITEMDATA,
"Name=assemblyName", "Value=", ENDITEM,
"Name=sortFields", "Value=", ENDITEM,
"Name=displayFields", "Value=ProvinceCode;ProvinceName", ENDITEM,
"Name=displayLabels", "Value=鐪佷唤缂栫爜;鐪佷唤鍚嶇О", ENDITEM,
"Name=queryFieldName", "Value=ProvinceName", ENDITEM,
"Name=recordsPerPage", "Value=5", ENDITEM,
"Name=filter", "Value=", ENDITEM,
"Name=parentFieldName", "Value=", ENDITEM,

  其中第14行中“Value=5”这里的5 是由UI段传入的。我们可以通过LoadRunner的参数将其替换,选中5点击右键选择Replace whith a parameter 输入parameter name、parameter type. name值可以取一个容易识别业务的名词。type的选项有13种,其中包括随机参数、自增长参数、文件参数等,这里不做一一介绍,具体的请查看相关文档。通过设置参数,我们就可以在脚本多次运行时候使用不同的业务数据模拟真实的用户操作和并发。

  2、loadrunner file parameter 列之间互相依赖

  这里提一下file parameter ,试想如果我们有20个用户去录入用户订单(order)。同时维护好订单明细(orderDetails)。假设

  订单号是由用户自己输入的且是不能重复的。那么我们需要为这个场景准备录入数据。同时假设20人在某一段时间内录入20个订单

  每人录入一个。这里以file parameter来处理录入数据。数据结构如下

OrderCode OrderPrice Operator
0001      100        user1
0002      200        user3
0003      300        user4
0004      400        user5
0005      600        user6
.....

 以上文件在Loadruner中是以dat文件来保存,默认以notepad 打开。数据设置非常简单,唯一需要指出的是参数依赖。

  比如我们选择这个file parameter作为某一个业务参数。只能选择order表中的一个列,而不是所有table。所以这里涉及到

  table中列的互相依赖。假设一个用户用0001 OrderCode 那么这个用户必然会用到 100 的price和 user1的operator。

  列之间互相依赖可以有Vuser -> Parameter List 进入修改界面。通过select next row 栏目选择 same line as 字段名

  这样该列就能实现以上所述的列之间的依赖。

  3、Loadrunner运行后参数返回值

  继续参考Order 和 OrderDetail 例子,假设当Order保存后,应用程序自动生成 一个OrderId,且该OrderId为GUID。

  也就是说该OrderId是我们事先无法预知的,也就无法准备该值来进行压力测试。我们以LoadRunner的的录制脚本来讲解这个场景下如何使用LoadRunner。

  首先请先参考Loadrunner   web_reg_save_param 这个函数参数说明:

  语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

  参数说明:

  ParamName:存放得到的动态内容的参数名称
list of Attributes:其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写
Notfound: 当在返回信息中找不到要找的内容时应该怎么处理
Notfound=error:当在返回信息中找不到要找的内容时,发出一个错误讯息。这是缺省值。
Notfound=warning:当在返回信息中找不到要找的内容时,只发出警告,脚本也会继续执行下去不会中断。
LB( Left Boundary ):返回信息的左边界字串。该属性必须有,并且区分大小写。
RB( Right Boundary ):返回信息的右边界字串。该属性必须有,并且区分大小写。
RelFrameID:相对于URL而言,欲查找的网页的Frame。此属性质可以是All或是数字,该属性可有可无。
Search:返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。
ORD:说明第几次出现的左边界子串的匹配项才是需要的内容。该属性可有可无,缺省值是1。如为All,则将所有找到的内容储存起来。
SaveOffset:当找到匹配项后,从第几个字元开始存储到参数中。该属性不能为负数,缺省值为0。
SaveLen:当找到匹配项后,偏移量之后的几个字元存储到参数中。缺省值是-1,表示一直到结尾的整个字串都存入参数。
Convert:可取的值有以下两种:
HTML_TO_URL:将 HTML-encoded 资料转成 URL-encoded 资料格式
HTML_TO_TEXT:将 HTML-encoded 资料转成纯文字资料格式

  ok,现在开始在录制脚本内使用这个函数:

  //定义这个主表将要生成的ID,具体参数含义参考上文中的web_reg_save_param 参数说明,这里就不再解释了。


web_reg_save_param("Id","LB=Id\":\"", "RB=\"}","Notfound=warning","Search=Body", LAST);
//http服务端保存脚本
web_custom_request("SaveOrder",
"URL=http://192.168.0.1:8080/Order/SaveTmsOrder",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://192.168.0.1:8080/Order/TmsOrder",
"Snapshot=t10.inf",
"Mode=HTML",
"Body=TnNo=&TnTypeCode=OUTBOUND&FeeTypeCode=AUTO+CALCULATION&ShipperName=%E5%8C%97%E4%BA%AC%E4%BB%93%E5%BA%93&ShipperCode=BJ&ShipperId=0569ccc3-6625-4ffb-b659-2e4fb3b10bc5&ShipperNameEn=BJ&ShipperTypeCode=&ShipperTypeName=&ShipperOfficeCode=BJ&ShipperOfficeName=%E5%8C%97%E4%BA%AC%E4%BB%93%E5%BA%93&ShipperAttribute=0&OriginCityCode=Beijing&OriginCityName=beijing"
"ConsigneeName={ConsigneeName}&"
"ConsigneeCode={ConsigneeCode}&"
........

//在loadrunner 的控制台输出 服务端返回的ID
lr_output_message("%s",lr_eval_string("{Id}"));

  下面如果还有其他地方需要用到这个Id,请使用 "Value={Id}"。

  小结:

  文中只是提到了本人在实际压力测试中使用loadrunner过程中的一些心得,当然功能强大的Loadrunner 远不止这么一点功能可以来让我们挖掘。比如loadrunner事务的使用、对事务插入集合点等。强大的图标分析器等等

  这些就留给读者自己去实践了。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-25 12:12:07

使用LoadRunner对web服务器压力测试总结的相关文章

Web服务器性能压力测试工具

Web服务器性能压力测试工具 http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死. 还可以测试HTTPS类的网站请求. 下载地址:http_load-12mar2006.tar.gz 安装很简单 tar zxvf http_load-12mar2006.tar.gz cd http_load-12mar2006 make && m

Windows开源Web服务器性能和压力测试工具

linux有很多开源工具用来测试服务器负载,而windows上非常少,几乎没有除了几个复杂的JMeter WET等 将两个好用的工具是Linux版本通过Cygwin移植过来,方便广大windows人员使用,经过初步测试效果一致,是命令行简单易用的测试软件 1 http_load 程序非常小,http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 源码官方下载

Linux下Web性能压力测试工具http_load使用教程_服务器其它

http_load介绍:http_load基于linux平台的一种性能测工具.以并行复用的方式运行,用以测试web服务器的吞吐量与负载,测试web页面的性能. 下载及安装: wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz tar xzvf http_load-12mar2006.tar.gz cd http_load-12mar2006/ make && make install http_loa

使用 IIS 5.0 调整 Web服务器的艺术与科学--5

测试.试验及正式启用 在您利用 Windows 2000 的 IIS 5.0 当你的 Web 服务器之前,很重要的一点是必须先在一个尽可能仿真真实情况的环境中测试您提出的设计.如此不但能帮助您找出服务器及您打算在这些服务器上运用的 Web 应用程序可能存在的问题,也可保护您的线上服务器免受突发问题的干扰.最理想的状态是您可以在一个受控制的环境中进行测试 (例如实验室),并将不相关的流量隔离在服务器外.将测试服务器集中在测试您的硬件的设置状态及 Web 应用程序能承受多大的压力. 在您从 IIS

Web服务器- apache与nginx分析

Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务.     1.应用层使用HTTP协议.     2.HTML文档格式.     3.浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1  +---------------+                   +----------------+  |   

如何在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器

Lighttpd 是一款开源 Web 服务器软件.Lighttpd 安全快速,符合行业标准,适配性强并且针对高配置环境进行了优化.相对于其它的 Web 服务器而言,Lighttpd 占用内存更少:因其对 CPU 占用小和对处理速度的优化而在效率和速度方面从众多 Web 服务器中脱颖而出.而 Lighttpd 诸如 FastCGI.CGI.认证.输出压缩.URL 重写等高级功能更是那些面临性能压力的服务器的福音. 以下便是我们在运行 Ubuntu 15.04 或 CentOS 7 Linux 发行

Web性能压力测试工具之ApacheBench详解

PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试. ApacheBench命令原理: ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp.tomcat.IIS等其它Web服务器的压力. ab命令

linux中Web服务器Nginx多方位优化策略

Nginx(读音engine x)服务器由于性能优秀稳定.配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务器.各大小网站论坛博客也介绍说明了Nginx从安装到优化的各种配置.不过看了很多这些相关Nginx的文档之后,发现一个比较大的问题,就是这些文档基本也就从两个方面着手,一是修改Nginx的配置文件,二是调整操作系统的相关内核参数:而且文档说明也不够明了,缺乏比较系统级别的优化.本文将从Nginx源码编译安装开始,到修改配置文件,调整系统内

解析Web站点和Web服务器的终极防护方案

本文讲的是解析Web站点和Web服务器的终极防护方案,随着企业管理与应用的不断"Web"化,Web安全威胁愈演愈烈,这给企业用户带来不小的压力,然而对于安全厂商而言Web安全或许是一次不错的试金石.总体来看,Web安全市场可以分为两大支流,其中一个叫内容安全管理,另外一个叫应用安全管理.内容安全管理主要以上网行为管理产品为代表,主要侧重于企业web应用,是用户端的一个管理;另外一块就是以Web应用防火墙为代表. 伴随着Web应用的不断发展,市面上的Web应用防火墙品牌与功能也越来越多,