LoadRunner学习知多少

作者&投稿:禽紫 (若有异议请与网页底部的电邮联系)
LoadRunner学习知多少~

一、设置检查点的方法

1.将脚本切换到树结构,在page
view页面上找到你要check的文本内容, 并执行鼠标右键,选择Add a text check.

2.将脚本切换回代码界面,在光标闪烁的上行,手动添加如下的代码

web_reg_find("Text=Payment
Details", "SaveCount=para_count", LAST);

这里是要运行的页面脚本

if
(atoi(lr_eval_string("{para_count}"))>0)
//验证是否找到了页面上的要检查的字符串


 lr_output_message("Pass!");

else

  lr_output_message("Failed!");

注意:

l
“Payment Details” 为你要检查的文本;

l
脚本执行到此处,不管页面上是否存在你要检查的字符串,脚本都不会报错,而是执行下去。

l
此段代码将找到的你要检查的字符串的个数,存为一个参数。
然后在页面代码的后面,通过检查这个参数的值是否大于0,来判断是否找到了你所要检查的字符串。

l
这里的测试结果均以200状态码返回,其失败的结果将在分析报告中进行分类标识。

//atoi()函数的作用是将一个ASCII字符串转换为整型

//lr_eval_string()函数作用是取得参数值,将字符串变量中的参数值替换为当前的参数值并将这个字符串返回



3.
光标停留在要插入函数的位置,在INSERT菜单中,选择new
step,在列表中选择或查找要插入的函数,根据提示填写必要的参数;



二、设置检查点时要注意

1.在使用检查点的时候我们还需要注意一些问题,通常我们都要设置一些中文检查点,但是LR默认不支持,如果你设置了中文检查点而报错,那你就应该注意了,在录制脚本的时候选中设置的UTF-8选择,如下图所示:



2.使用文本检查点时,需要设置启用图片和文本检查点,如下图所示:



系统默认是不勾选该选项的。



三、检查点脚本运行中经常出现的错误

1.错误代码Error -27257:
Pending web_reg_save_param/reg_find/create_html_param[_ex]
request(s) detected and reset at the end of iteration number
1

原因:web_reg_find的位置错了, 你将它放在某个action的最后,它的后面是
return 0, 所以出错了

解决方法:web_reg_find位置放错了,应该放到请求页面前面。



2.错误代码:Action.c(27):
Error -26366: "Text=ABC" not found for
web_reg_find [MsgId: MERR-26366]

出现该问题时,需要检查web_reg_find是否放在查找内容的前面。



3. 错误代码:
Action.c(22): Error -27191: "web_image_check" failed (0
occurrence(s) found.[MsgId: MERR-27191]



如果是web_find(),检查函数的位置是否在要查找内容的后面;如果是web_image_check(),查看该图片的源代码,看其是否是这个页面上的图片,很可能是图片选择错误,即所选图片不属于该页面。





四、相关函数介绍

1. web_find()函数

web
find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右边界;“What=”定义查找内容;

例如上述参数举例中的意思就是在页面中查找左边界为b,右边界为a,内容为name的信息;

使用该函数注意事项:该函数是在查找页面中的内容,所以要放在要查找的内容的后面;该函数只能在基于HTML模式录制的脚本中进行查找



2. web_reg_find()函数

web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

参数解释:
Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到;

例如上述参数举例中的意思就是Body中查找内容为aaa的信息,并将出现次数记录在变量ddd中;

使用该函数注意事项:该函数是在缓存中查找相应的内容,所以要放在查找内容之前;通常情况下写在如下六个函数之
前:Web_castom_request(); web_image(); web_link(); web_submit_data();
web_submit_form(); web_url();

使用技巧:在该函数的参数中有个“SaveCount”,该参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到。



3. web_image_check()函数

web_image_check("web_image_check","Alt=","Src=",LAST);

参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值;

经过测试,该函数用到查找内容前面或后面,都不影响查找结果。



五.
web_find与web_reg_find函数比较

l
这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数;
l
WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制;
l
WEB_FIND只能用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制;
l
WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找;
l
WEB_FIND在执行效率上不如WEB_REG_FIND;
l
WEB_FIND使用时放在检查内容后面;而WEB_REG_FIND使用时放在检查内容前面。

  一.关联操作的条件

  客户端需要从服务端返回的数据中获取部分数据,并将这部分数据处理后作为自己下一次请求的一部分发出。

  那么什么地方需要关联呢?
  凡是脚本每次执行时都必须获得唯一标识的地方都需要关联。假如脚本需要关联,如果不做关联是不会执行通过的,也就是说会有错误消息发生。不过很遗憾,并没有任何特定的错误消息和关联是有关系的。会出现什么错误消息,与系统实际的错误处理机制有关。错误消息有可能会提醒用户要重新登录,但是也可能直接就显示HTTP 404的错误消息。

  

  二.如何找出要关联的数据呢

  简单地说,每一次执行时都会变动的值,就有可能需要做关联。

  如:序列号和随机数一般需要关联。

  常见的需要关联的情景:

  1.登录操作

  2.先查后修改,先查后删除

  3.并发控制:防止两个用户同时修改或同时删除一条记录

  

  三.一般关联操作的步骤

  从服务端返回的数据中选取需要进行关联的操作。
  将该数据存入脚本的一个参数中。
  将脚本中需要使用该数据的地方用参数来替代。
  注:对于WEB应用来说,一般会用一个hidden的Field存放。

  

  四.关联分为自动关联和手动关联

  自动关联操作只对Web协议、DB协议和其他少数几种协议有效,对socket等协议录制的脚本不起作用。

  

  五.关联函数web_reg_save_param_ex详解

  在LR11中除了对web_reg_save_param加强为web_reg_save_param_ex,还提供了另外两个非常好用的函数web_reg_save_param_regexp和web_reg_save_param_xpath。

  选项:

  Parameter Name
  此处设置存放参数的名称,关联出来的内容将会存放在该参数中。这里受到Ordinal选项的影响。

  设置Parameter Name为temp,当对应的Ordinal选项是任意一个数字的时候,只会关联一个匹配的记录,关联值将会存放在temp这个参数中。当Ordinal是All的时候,关联成功后的值将会依次存放在“temp_数字”这样的参数数组中,并且还会添加一个temp_count的参数存放关联出来的记录条数。

  Left Boundary
  此处设置左边界,这里是用来填写关联对于数据处理的左匹配内容规则。

  注意:如果输入的内容里面有双引号,那么需要通过转义符\来进行处理,例如:

  web_reg_save_param_ex(
  "ParamName=test",
  "LB=\"左边界",
  "RB=",
  SEARCH_FILTERS,
  LAST);

  Match case
  默认情况下边界是Match case的,也就是检查大小写的,可以取消下面的选项来忽略大小写检查,会看到函数变为以下形式:

  web_reg_save_param_ex(

  "ParamName=test",

  "LB/IC=左边界",

  "RB=",

  SEARCH_FILTERS,

  LAST);

  Binary data
  如果需要关联的内容是非ASCII字符的,那么需要使用该选项。选中该选项后可以看到函数变为以下形式:

  web_reg_save_param_ex(

  "ParamName=test",

  "LB/BIN=\\x3F\\xDD",

  "RB=",

  SEARCH_FILTERS,

  LAST);

  Regular expression
  该功能由函数web_reg_save_param_regexp实现。

  Right Boundary
  此处设置右边界,这里是用来填写关联时对于数据处理的右匹配内容规则,选项同左边界。

  DFEs
  在录制选项和回放选项中我们提到过了DFE的功能,在关联这里也支持DFE的数据处理,我们先回到录制选项中的那个例子中,为其写一个普通关联看看返回(为了让返回结果看得更清楚,这里提前使用了Scope=BODY规则,该规则作用参考后面的Scope属性介绍)。

  接着我们使用关联的DFE功能,在这里设置关联的DFEs格式为JsonXml(这里的格式是指系统自带的DFE模块的Tag名,参考图3.35),然后还要确保Run-time settings中的DFE功能启用,代码变为:

  web_reg_save_param_ex(

  "ParamName=jsonresponse",

  "LB=",

  "RB=",

  "DFEs=JsonXml",

  "Ordinal=1",

  SEARCH_FILTERS,

  LAST);

  web_url("json.php",

  "URL=http://localhost:8000/phpwind85/json.php",

  LAST);

  Ordinal
  这个关键字在很多函数里面都有应用,在这里可以填写任意一个整数,也可以填All。如果填写数字,那么说明从返回的记录中取出对应顺序的值,而填写All的话将会返回所有的内容。

  当使用Ordinal =All时,关联函数会把所有匹配过滤策略的记录都抓出来,由于参数只能存放一条记录,所以关联函数会生成一个参数数组。被关联的记录会以{关联参数名_关联id}的形式生成参数列表,并且在最后会有一个{关联参数名_count}的参数来存放被关联到的记录条数。

  例如,上面写过的一个关联热搜关键字的例子,代码如下所示:

  web_reg_save_param_ex(

  "ParamName=hotsearch",

  "LB=

  "RB=&type=thread\">",

  SEARCH_FILTERS,

  LAST);

  当Instance设置为All时,代码变为:

  web_reg_save_param_ex(

  "ParamName=hotsearch",

  "LB=

  "RB=&type=thread\">",

  "Ordinal=ALL",

  SEARCH_FILTERS,

  LAST);

  运行代码后,关联将会返回所有匹配左右边界的内容,结果如下:

  Action.c(20): Notify: Saving Parameter "hotsearch_1 = 结婚".

  Action.c(20): Notify: Saving Parameter "hotsearch_2 = 母婴".

  Action.c(20): Notify: Saving Parameter "hotsearch_3 = phpwind".

  Action.c(20): Notify: Saving Parameter "hotsearch_4 = testing001".

  Action.c(20): Notify: Saving Parameter "hotsearch_5 = 结婚".

  Action.c(20): Notify: Saving Parameter "hotsearch_count = 5".

  Save Offset
  设置关联的内容偏移量,从第几位开始进行关联操作。回到最开始的例子,我们抓取的是You have successfully installed XAMPP on this system!,如果需要获得successfully installed XAMPP on this system!这个字符串,则不用改变左边界,只需要设置Save Offset为9即可,代码为:

  web_reg_save_param_ex(

  "ParamName=temp",

  "LB=Congratulations:
  ",

  "RB=

  ",

  "Ordinal=1",

  "SaveOffset=9",

  SEARCH_FILTERS,

  "ContentType=text/html",

  LAST);

  Save Length
  关联出来的内容所需要保存的长度。在Save Offset的例子中我们写到如何获得successfully installed XAMPP on this system!这个字符串,如果我们还希望获得这个字符串中的successfully installed XAMPP,那么可以再添加Save Length为22,代码变为:

  web_reg_save_param_ex(

  "ParamName=temp",

  "LB=Congratulations:
  ",

  "RB=

  ",

  "Ordinal=1",

  "SaveOffset=9",

  "SaveLen=22",

  SEARCH_FILTERS,

  "ContentType=text/html",

  LAST);

  通过Save Length和Save Offset的设置,我们就可以方便地抓取服务器返回的定长数据的任意一个部分了。

  

  关联可以调整偏移量和长度,那么参数能做到吗?当然可以,如果需要对一个参数值进行偏移和长度设置,则需要使用lr_save_var函数,例如,下面的代码:

  lr_save_string("I come from shanghai","city");

  lr_save_var(lr_eval_string("{city}"),6,0,"result");

  //从city这个参数中取6位长度的内容保存到result参数中

  lr_save_var(lr_eval_string("{city}")+7,4,0,"result");

  //从city这个参数的第7位开始取4个长度的内容保存到result参数中

  可以看到运行的结果是:

  Action.c(3): Notify: Saving Parameter "city = I come from shanghai"

  Action.c(4): Notify: Saving Parameter "result = I come"

  Action.c(5): Notify: Saving Parameter "result = from"

  

  Warm if text was not found (Default is Error)
  如果关联的对象不存在,又该如何进行处理呢?默认值为Error,默认情况下如果没有关联到任何内容则提示错误。

  Filters
  下面的选项都是帮助关联返回限定的,通过这些设置可以进一步减少返回的范围。

  Scope
  该项设置关联查询的范围,在LR11中和以前的范围做了一些调整,应该算是更加强大了,这里Scope提供了4个选项:Body、Headers、Cookies、All。

  1)ALL

  比较容易理解,就是让服务器的返回所有内容作为需要关联的目标来处理。

  2)Headers/Body/Cookies

  这3个选项都是从请求返回的所有内容进行关联处理,包括图片、JavaScript脚本等。区别在于对返回信息的分隔方式。在前面介绍HTTP的时候介绍过HTTP返回的内容其实是由Header(HTTP信息头)和Body(HTTP内容)组成的,而Cookie又是Header中的一部分,在Tree模式下的HTTP View视图中可以清晰地看到LR如何定义各块内容。当我们对Phpwind登录返回做关联时,不同的Scope带来的效果如下。

  3)Header

  指所关联的内容是所有服务器返回请求的HTTP头部分内容。可以通过查看服务器返回内容来了解,Body之前的内容都属于Header:

  4)Body

  就是服务器返回在Body以后的内容:

  5)Cookie

  指Header部分关于Cookie定义的部分内容。

  Request URL

  这里提供了针对URL地址的过滤方式来减少关联范围,例如,我们可以填写*.php来说明只对PHP页面进行过滤。

  Content Type

  回顾我们在讲录制下载操作的时候,提到了Content Type这个概念,这样在录制的时候可以通过这个特性来过滤录制对象。而在关联这里,这个属性的效果是相同的,在网站应用中,我们要关联的内容一般都存放在HTML页面中,所以这里我们通常都是用text/html来作为Content Type过滤规则的。

  Frame ID

  这个选项是专门针对框架结构的网站设计的,有些时候需要关联的内容是在某个框架中的,这个时候就需要说明所关联的页面是框架中的哪一个了。

  Ignore Redirection
  在某些情况下系统会使用HTTP 3xx的重定向操作来完成页面跳转,该选项是用来忽略跳转页面信息的。如果选中该选项,通过这种重定向技术的页面将不会被关联。

  

  有时需要配合使用web_set_max_html_param_len函数可以自定义关联返回值存放的参数的最大长度。

一. 什么是LoadRunner
LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟多个用户实施并发负载测试及实时性能检测的方式来确认和查找问题,能对整个企业架构进行测试。
二. LoadRunner的优点
1. 轻松创建虚拟用户:通过记录下业务流程转为测试脚本,在机器上产生多个用户访问,减少负载测试需要的硬件和人力资源。
2. 创建真实的负载:可以通过Controller设定负载方案,如定义用户在什么时候访问系统以产生负载,所有用户同时执行一个动作来模拟峰值负载情况等。
3. 实时监测器:可以实时显示交易性能数据(如响应时间)和其他系统组件如数据库,网络等的实时性能。
4. 分析结果以精确定位问题所在:LoadRunner能收集汇总所有测试数据,提供高级的分析和报告工具。
三. LoadRunner的安装与使用
1.安装过程详见上传的LoadRunner使用手册,在此不再详细介绍。
2.具体使用:

点击File新建录制文件,也可以点击下面的NEW快捷键进行新建。使用File新建,会弹出协议选择窗口,选择新的单协议脚本(New SingleProtocol Script)的Web(HTTP/HTML)项,确定即可(选择Web项是因为我们测试的是Web应用)。接着会弹出开始录制的设置项,需要写入录入系统的地址,点击确定后就会根据录入地址展现系统页面,开始录制脚本,出现小工具条:

第一个按钮为录制键
第二个为回放脚本键
第三个为停止录制键
第四个为暂停录制键
第五个为编译脚本键
第六个为创建新的Action键。LR的录制脚本分为三个部分,vuser_init、vuser_end和 Action。脚本循环执行时,只执行一次vuser_init和vuser_end,而多次循环Action部分。比如录制投保业务时,登陆系统部分放入vuser_init,退出登陆放到vuser_end,中间的投保操作放到Action中,则循环执行时就会登陆一次投保系统开始反复执行投保操作直到结束退出系统。
第七个为用来改变录制的options设置按钮
第八个和第九个为插入事务的起始点和结束点键,结合起来构成一个完整事物,用来衡量服务器的性能。比如录制脚本过程中,投保系统的查询投保单号操作,可以在输入完查询信息后点击查询按钮前插入事务的起始点,查询出数据后插入事务的结束点,这样在运行测试脚本时,Loadrunner在运行到该事务时,便会计算出这个查询操作所花时间,便于衡量服务器执行查询操作的性能。
第十个为插入集合点键,可用于衡量在加重负载的情况下服务器的性能。比如要验证系统是否能承受100人同时进行报案操作,便可在脚本录入过程中,点击报案确认键操作前插入集合点,这样当脚本运行到集合点时,Loadrunner会让100个虚拟用户同时点击报案确认按钮(如果有的用户还没运行到集合点,先到用户要等未到用户一起操作)进行报案,从而达到测试目的。
最后一个为设置验证点键,在创建事物后,设置一个验证点可以用来确认事物执行是否成功。比如进行查询事务操作时,LR只要检测到网页的响应,就认为事务pass,而不管显示页面内容是否正确。因此为了检查Web服务器返回的网页是否正确,可以插入Text/Image检查点,验证网页上是否存在指定的Text或Image。
设置验证点时,如果我们验证的文本内容是中文,有时会返回无法找到验证内容的报错信息,而页面显示又是正确的,出现问题的原因可能是因为LR对中文的支持部好,尽量选择验证信息为数字或字母;也可能是设置问题,可以尝试将Tools->Recording Options->HTTP Properties下的Advanced选项里设置支持UTF-8,再检查开发人员有没有设置支持中文。
录制结束后,先点击保存脚本,同时为脚本命名。然后编译脚本,看是否存在语法错误,编译成功后,即可回放,看录制脚本是否成功。
LoadRunner录制得到的脚本基本没有错误,不像robot会有录入数据的缺失,只是会录入一些非录入系统的网页信息,根据地址可以识别并删除掉。
四. LoadRunner脚本录制学习小结
1. LoadRunner录制脚本,主要是为了进行压力测试,所以跑流程时,跑了主要流程即可,也就是系统必须的信息录入就可以了。
2. LoadRunner的脚本运行过程中,只能用于一次业务办理的数据需要做参数化,如车辆车架号,车牌,报案号等,以免出现重复投保或报案无法立案现象,不能继续进行下去。参数化步骤:
1) 将需要做参数化的数据右键点击,选择Replace with a parameter,进行设置。
2) 在弹出编辑框里,设置易懂的参数名称,再点击Properties进行属性设置。
3) 点击Create Table 按钮,生成参数表格,再点击Edit with Notepad按钮,即可在记事本里添加新的参数,添加完后再次回车(不回车可能最后条数据读取不到)关闭,参数化操作完成。
4) 使用Ctrl +H键可以找到替换同样的需要参数化的数据。
3. 脚本跑流程过程中,因为业务运转,前面生成的投保单要接着进行提交核保业务,而每次生成的投保单号不一样,用于进行提交核保的单号也要与之前的保持一致,因此需要做关联处理,读取到生成的新投保单号给提交核保流程。关联步骤:
1) .查找关联数据第一次出现的位置,判断该数据是由什么函数返回的。
2) .在树形结构里点击返回该数据值的函数,看它的Server Response信息,用复制的关联数据进行查找它的返回语句,找到区分度明显的语句(不一定要是第一个返回语句),然后使用web_reg_save_param函数进行关联。
注:关联函数一定要写在第一个返回该数据值的函数前。
3) .web_reg_save_param (const char *ParamName, <List ofAttributes>, LAST);
函数的第一个参数是用来对关联数据进行定义的,取名最好可读性强;第二个参数是用来标识关联数据在返回语句里的具体位置的,写出该数据的左右边界,程序才能识别;LAST表示属性列的结束。比如办理理赔业务的流程号,在服务器的返回语句里是:
<input name=flowID type="hidden" value=L05012009110000035215>
做关联为:
web_reg_save_param("LogFlowID",
"LB=name=flowIDtype=\"hidden\" value=",
"RB=>",
LAST);
定义的参数名就叫LogFlowID,表示流程号,易于明白;左边界从name取就可以标识了,也可取长点或短点,只要能区分;右边界只有>,写上就好;最后写上LAST。
在定义的左右边界中,如果有双引号,在脚本中是需要转义的,因为双引号在C中是有意义的,这里只要表示语句信息,加上右斜杠。尖括号直写。
左右边界也需要用双引号括起来。定义好的参数写在程序中,需要在加上单尖括号:swfLogFlowID={LogFlowID}
五. 脚本执行过程中的报错处理
1. vuser_init.c(3051):Error -26377: No match found for the requested parameter"proposalNo". Check whether the requested boundaries exist in theresponse data. Also, if the data you want to save exceeds 256 bytes, useweb_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]
2. vuser_init.c(3051):web_submit_data("UIPrPoEnInputNext.jsp") highest severity level was"ERROR", 4312 body bytes, 258 header bytes [MsgId: MMSG-26388]
两个错误一起出现,出错语句都是在关联函数下的提交数据函数位置,但是具体出错有可能是:
1). 关联函数左右边界没写对,所有信息都要用字符输入,不能是中文或其他。
2). 在关联函数确认写对的情况下,看提交数据函数中的业务设置,比如有可能是因为保单查询语句,设置的查询时间是过去的时间,新生成的投保单当然查不到,这样程序也会报这样的错。
3. loadrunner 执行理赔的立案处理,录制好脚本后,回放,报错:

脚本日志信息提示:
1.Action.c(400):Error -26366: "Text=立案信息提交成功" not found for web_reg_find [MsgId: MERR-26366]
2.Action.c(400):web_submit_data("claimSave.do") highest severity level was"ERROR", 4424 body bytes, 258 header bytes [MsgId: MMSG-26388]
脚本执行过程停止在立案信息提交页面,错误原因:数据问题,可能是有的应该变化的信息没有变。
在该流程中,一个报案号只能做一次立案,而初始脚本没有设置参数、关联,使用保单号进行查询,错误被掩盖。在立案系统中,一个保单号可以重复报案,但是一个报案号只能一次立案,要跑通流程,需要先将这一保单再重复报案,得到新的报案号。
六. 性能测试的场景设置
脚本录制完毕后,接着准备测试场景。
1.首先准备测试数据。比如车险投保,需要投保人和车架号信息来唯一标识一辆被保车,因此就需要将投保人和车架号做参数化处理,编辑文本框录入大量数据让脚本唯一读取:
1). 录入投保人参数,车架号参数,过程同脚本录制的参数化处理
2). 因为投保人和车架号一起生成一条投保数据,可设置车架号随投保人参数一起读取,设置步骤为:
投保人文件存放路径--File path

投保人参数数据读取方式

脚本按列名读取参数,每行数据读取一次,每次循环取一次新值。
接着设置车架号参数信息:
车架号参数读取文件路径设为和投保人文件路径一样

脚本按列名读取参数,行号选择和读取的投保人数据同一行

这样得到所需的投保单生成参数数据

2.设置测试场景
点击Tools->Create Controller Scenarios,弹出场景类型选择框:

录入需要的虚拟用户数,选择生成结果存放路径和组名。确定后进入具体设置页面:

Quantity表示虚拟用户个数,group name为组名。
1). 设置运行时间选项Run – time Settings

选择循环次数Run Logic->Iteration Count,设置循环10次,虚拟用户数为之前设置的5人,则预计一共可生成50张投保单。

设置思考时间,思考时间通常是录制脚本过程中,填写页面信息花费的时间,选择忽略项,节省跑脚本的时间。

设置网络连接时间,点击网络协议项Internet Protocol 的Options键,将弹出页面里的HTTP-request connect timeout和 HTTP-request receive timeout的数值改为1000。使得能在网络状况不太好的情况下向服务器发送接收数据。

2). 设置EditSchedule
选择虚拟用户加载方式:

可以一次加载所有用户,也可以按需要设置,一秒加载一个用户或其他。
选择结束方式:

当选择一秒加载一个用户时,结束设置为直到跑完所有脚本停止执行。如果选择选择一次加载所有用户可以选择运行多少时间后停止和不停止选项。
这些设置完成后,一次测试场景布置完成。可以进行基线检查或单点并发测试。
七. 性能测试步骤
一). 除测试工具外性能测试必备的系统及业务知识
1、熟悉保险行业业务特点,有助于与开发和客户讨论需求,制定测试用例;
2、熟悉系统的实现特点,开发实现方式,有助于选择程序处理复杂、消耗系统资源的用例点;
3、熟悉数据结构,了解数据存储规则,对脚本调试、数据准备、测试执行和监视都有帮助;
4、熟悉系统所使用的数据库、操作系统、中间件的监视和性能问题查看,有助于测试监视和发现问题;
5、熟悉系统架构及系统集成方式,有助于分析及明确定位性能问题。
二) 性能测试执行过程
1. 基线检查
1).目的:验证环境是否可用;
验证脚本是否能在场景正常执行。
2).方法:1个人单独循环5次--没有其他人干扰,干净的环境
3).结果:一般一个事物的响应时间超过3秒就可能存在问题,要提报开发人
2. 单点并发
1).目的:为了快速的发现问题,如多进程的锁机制,看是否相互间有影响。
2).方法:一般是10人或20人执行10到15分钟,执行过程忽略思考时间。
忽略思考时间可以减少客户端时间,加快向服务器传送数据速度,很大程度上增大了服务器的压力,20个人单点并发的压力就相当于200人正常执行带给服务器的压力。
3).单点测试的数据可以用来进行混发测试,但是有可能单点测试的数据不足以进行混发,需要自己再准备足够的数据。
3.方案测试--混发测试
1).目的:模拟生产环境
2).方法:执行1小时左右,加上思考时间
八.资源监控及调优
性能测试执行过程中,需要监控系统各项资源,看是否能满足用户实际需要,如内存使用,SQL SERVER等,结合LR生成的分析报告,分析系统哪里可能存在问题,需要改进,进行调优,这也是我之后要接着进行学习的地方。
1. 学习使用weblogic,了解weblogic常配参数的意义。通过weblogic自身的监控台,可以了解到目前的JVM的大小、数据库连接池的使用情况以及目前连接的客户端数量以及请求状况等等。
2. 学习oracle使用,熟悉它的体系结构,尤其是oracle10里 的awr,awr能采集与统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
3. 需要继续学习LR的理论知识和实际操作,参考书籍《Web性能测试实战》、《软件性能测试过程详解与案例剖析》


性能测试工具loadrunner性能测试工具
性能测试工具的主力load是Qaload,SilkPerformer在性能测试工具;有LoadRunner、Mercury测试工具、Rational测试工具、Segue测试工具、qtp自动化测试工具和AutoRunner工具等。详情如下:1.主流负载性能测试工具QALoad:Compuware公司的QA load是一款针对客户\/服务器系统、企业资源分配(ERP)和电子商务应用的自动化负载...

如何在电脑中安装Loadrunner
1. 首先第一步先打开【Loadrunner】软件文件夹,接着根据下图所示,找到并双击【setup.exe】选项。2. 第二步打开安装窗口后,根据下图所示,点击【LoadRunner完整安装程序】选项。3. 第三步在弹出的警告窗口中,根据下图所示,点击【否】选项。4. 第四步先按照要求安装列表中的必需程序,接着根据下图箭...

loadrunner是什么意思
Loadrunner是由美国Mercury Interactive公司开发的一款性能测试软件,旨在帮助软件开发者和测试人员对应用程序的性能进行测试、诊断和荟萃。Loadrunner可以模仿成千上万的用户同时访问一个应用程序,并可在低负载和高负载下测试它的实时性能表现。这让测试人员能够掌握应用程序的各项性能指标,确保其符合设计和用户...

LoadRunner学习知多少
LoadRunner录制得到的脚本基本没有错误,不像robot会有录入数据的缺失,只是会录入一些非录入系统的网页信息,根据地址可以识别并删除掉。四. LoadRunner脚本录制学习小结1. LoadRunner录制脚本,主要是为了进行压力测试,所以跑流程时,跑了主要流程即可,也就是系统必须的信息录入就可以了。2. LoadRunner的脚本运行过程中,只能...

如何完全卸载LoadRunner?
1.首先保证所有LoadRunner的相关进程(包括Controller、VuGen、Analysis和Agent Process)全部关闭。\\x0d\\x0a2.备份好LoadRunner安装目录下测试脚本,一般存放在LoadRunner安装目录下的“scrīpts”子目录里。\\x0d\\x0a3.在控制面板的“删除与添加程序”中运行LoadRunner的卸载程序。如果弹出提示信息关于共享...

LoadRunner是干什么用的
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner , 企业能最大限度地缩短测试时间, 优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量...

loadrunner和qtp有什么区别?
1、性质不同。LR:基于协议的性能测试。QTP: 基于UI对象的功能测试。2、录制原理不同 LR录制原理:捕获数据包。录制的前提是能识别协议报文。QTP 录制原理:消息机制,截获消息。录制的前提是能识别控件。3、侧重的功能不同 LR是性能测试工具,侧重的是压力,负载,容量,并发等的测试。QTP是功能测试...

loadrunner如何使用
1、使用LoadRunner 完成测试一般分为四个步骤:2、Vvitrual User Generator 创建脚本 创建脚本,选择协议 录制脚本 编辑脚本检查修改脚本是否有误3、中央控制器(Controller)来调度虚拟用户 创建Scenario,选择脚本 设置机器虚拟用户数设置Schedule如果模拟多机测试,设置Ip Spoofer4、运行脚本分析scenario分析测试结果5、安装LoadR...

LoadRunner原理
LoadRunner工作原理:LoadRunner通过模拟上千万用户实施并发负载,实时性能监控的系统行为和性能方式来确认和查找问题。1、VuGen发生器:捕捉用户的业务流,并最终将其录制成一个脚本:(1)选择相应的一种协议;(2)在客户端模拟用户使用过程中的业务流程,并录制成一个脚本;(3)编辑脚本和设置Run-Time ...

软件测试里如何在LoadRunner脚本中做关联
教你在软件测试里如何在 LoadRunner 脚本中做关联 (Correlation)当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和...

七里河区13284468898: LoadRunner 是什么东西 -
包冒九味: LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期. LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能.

七里河区13284468898: loadrunner学习要花多少时间? -
包冒九味: 你得先去买本书啊,放狗上网去搜一下:loadrunner从入门到精通,然后看一下大概,最主要的还是上网看视频教程,然后视频和书本相结合,坚持一两个月就OK啦!

七里河区13284468898: 新手如何做快学会loadrunner -
包冒九味: 这个没什么技巧,给下我的经验吧.1、先从要自己熟悉安装卸载;2、找视频,从简单的性能测试做起.LR自带有练习用例;3、以上基础操作你掌握了,就要有实际的项目做了,从项目中学习自然是最快的.不过,前两项也是基础.4、加性能群 去论坛 多多请教学习

七里河区13284468898: loadrunner 从0开始如何学习 -
包冒九味: LR只是一个软件工具,起步的话:可以从网上down一个手册,照着做基本上分3大块:录制脚本测试执行分析结果但是它只是一个工具,学会了它怎么用,想要会性能测试,还得继续学习.就像钢笔,你学会了怎么样使用钢笔,想要写出一篇作文,是不是还得认字?知道该写什么?

七里河区13284468898: 如何学习好loadrunner -
包冒九味: 要想学好lr,首先学着去用Lr做服务器的自动化,这块你学好了,脚本编辑啥的就没问题了,至于压力,这个是经验问题,多做多看.

七里河区13284468898: 非常诚恳的请问下各位大侠,我该如何和学习和了解软件自动化测试工具QTP和性能测试工具loadrunner. -
包冒九味: 学历是你最大的瓶颈~会的在多,负责筛选简历的多是人事,他们只要看到学历不符合,根本不会再看你其它的.所以,哪怕是成考,先弄个大专或本科学历吧.其它的就是,你虽然做了5年,但的确没有技术含量……学JAVA吧,相对来说,...

七里河区13284468898: loadrunner中变量和参数的区别学习笔记 -
包冒九味: 参数表示一个值,过程希望您在调用它时传递该值.过程的声明定义其参数. 变量表示在您调用过程时传递给过程参数的那个值.调用代码在它调用过程时提供此变量.

七里河区13284468898: 如何学习好loadrunner -
包冒九味: 关于学习 loadrunner,我建议你可以买一本带loadrunner介绍的性能测试的书.这样的话可以在性能测试的框架下 ,学习loadrunner,效果会更好.还有 每天养成去性能测试论坛逛逛,这样日积月累下来 ,就会有质变的,一切都贵在坚持.好好加油吧~

七里河区13284468898: LoadRunner原理 -
包冒九味: 我英文不好,没看过官方文档,好多东西都是自己摸索的,如果回答的不正确大家别见笑. 1、Lr的用户数量就是一个多线程 2、Lr不会智能到自己分辨要测试的网站,这个只能由测试者编辑脚本达到要求,如果在设定的网站中打开其他的网站,这个动作也会被录制下来,在脚本的回放和运行中都会按照脚本中的动作去完成,所以你要测试那个网站的那个动作,都要自己编辑脚本来确定. 3、Lr压力的时候测试那个网站,由你的action中的动作决定,在压力时,首先它加载的是init,之后就开始循环action,init只会被加载一次,所以会不会测试被打开的网站,就看你打开的动作是在Init里面还是在ACTION里面.

七里河区13284468898: 我是黑盒测试人员,想自学性能测试及loadrunner的使用,有什么好的学习方法及文档书籍推荐么?谢谢~~ -
包冒九味: 《LoadRunner性能测试实战》,适合初级学习,里面还会讲到一些性能测试的基础知识,我就是看的这本书自学的性能测试和LoadRunner

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网