如何完善LoadRunner录制后产生的脚本

发表于:2018-2-14 10:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张晓敏    来源:光荣之路

  当录制完一个基本的用户脚本后,在正式使用前我们还需要完善脚本,增强脚本的灵活性。一般情况下,我们通过以下几种方法来完善测试脚本。插入事务、检查点、插入集合点、参数化、思考时间。
  插入事务:
  事务:为了衡量服务器的性能,我们需要定义事务,比如我们在脚本中有一个数据库查询操作,为了衡量服务器执行查询操作的性能,我们把查询操作定义为一个事务,在运行脚本时,loadrunner运行到该点时,会开始计时,直到运行到该事务的结束点时,计时结束,
  这个事务的运行时间在结果中会有反映。
  插入事务操作可以在录制过程中进行,也可以在录制结束后进行。
  插入检查点:
  LoadRunner提供了在脚本中插入检查点的方法,就是检查Web服务器返回的网页是否正确。
  Loadrunner中检查点有两种:图片和文本,可以用以下三个函数实现:
  web_find(),web_reg_find(),web_image_check().
  web_find()只能在html录制模式下查找html页面的文字,查找速度慢,需要在html请求结束后查找(要放在查找内容的后面)
  实例:
  web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);
  RrightOf指在a的右边是所查找的内容name,LeftOf指b的左边是所查找的内容name,a name b
  注意事项:使用该函数时,要在Vuser->Run-Tme Settings中勾选Enable Image and text check
  系统默认是不勾选该选项的。
  web_reg_find()
  函数作用:在缓存中查找相应的内容,所以要放在查找内容之前
  Web_reg_find是注册类型函数,它本身并不执行,不能通过它的返回值来作为事务的判断条件(因为web_reg_find()的返回值0和1表示web_reg_find()是否注册成功,并不代表查找的内容是否存在,也就是说无论查找的文本内容是否存在,都返回0。它是从返回的缓冲区扫描而不是在接收的页面中查找。这是比web_find更高效的一个函数。web_reg_save_param也是注册类函数,需要放到请求的页面之前,而且查找的内容是服务器返回的缓冲数据中查找,所以查找内容应该看html源代码的内容。
  参数举例:web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);
  在使用web_reg_find时有一点需要注意,如果抓取的是中文,不要用utf8格式,否则抓到的都是乱码,运行总是不会成功。
  注:在录制过程中添加的检查点,用到的函数是web_reg_find(),且参数只有“Text=”
  web_image_check()
  函数作用:在页面中查找一个具体的图片,写在对应的web_url后面
  使用该函数时,要在Vuser->Run-Tme Settings中勾选Enable Image and text check
  实例:web_image_check("web_image_check",“Alt=”,"src=/images/signoff.gif",LAST);
  “Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值;
  这里说明一下对应的src可以在脚本执行后的日志里面找到,日志记录的是完整路径,src部分只要相对路径就可以了
  参数化
  首先:为什么要对脚本进行参数化
  a)为了减少脚本的大小和脚本数量,借助参数化我们可以减少脚本的数量,如果不进行参数化,我们为了达到目标可能要拷贝并修改很多个脚本。
  b)使业务更接近其实的客户的业务,每个虚拟用户使用不同参数值来模拟这样才接近客户的实际情况。
  这里总结一下,参数化过程中要注意的问题:
  1)参数化文件尽可能少,因为参数是放在内存中的,占用了内存的资源;
  2)参数化文件与脚本分离;
  3)参数文件的路径应该以相对路径来取;
  4)一些时候为了使参数更具有真实性,参数应该从数据库中来获得;
  5)参数类型的选择;
  6)参数的数据一般要由业务决定;
  注意: LoadRunner允许最大参数化用户数为100人,如需扩大参数量,可在安装路径下vugen.ini文件中修改:MaxVisibleLines=1000。(此为设置允许最大参数化用户数为1000人)
  “Select next row”有几种选择:Sequential、Random、Unique。
  “Update value on”有几种选择:Each iteration、Each occurrence、Once。
  组合类型:
  Sequential
  ·与Each iteration组合:将为每次跌倒从数据表中提取下一个值。
  ·与Each occurrence组合:将为每一次参数的出现从数据表格中提取下一个值,即使它在同一次迭代中。
  ·与Once组合:第一次迭代中分配的值就会在每个Vuse接下来所有的迭代中使用。
  Random
  ·与Each iteration组合:将会为每一次迭代从数据表中提取一个新的随机值。
  ·与Each occurrence组合:将会为每一次参数的出现从数据表中提取一个新的随机值,即使它在同一次迭代中。
  ·与Once组合:第一次迭代中分配的随机值就会在改Vuser的所有迭代中使用。
  Unique
  ·与Each iteration组合:将会为每一次迭代从数据表格中提取下一个唯一值。
  ·与Each occurrence组合:将会为每一次参数的出现从数据表格中提取一个新的一直,即使它在同一次迭代中。
  ·与Once组合:第一次迭代中分配的唯一值就会在每个Vuser的所有接下来的迭代中使用。
  插入集合点
  执行负载测试时,需要模拟系统上有较重的用户负载。要实现此操作,可以同步 Vuser 以便恰好在同一时刻执行任务。通过创建集合点,可以配置多个 Vuser 同时执行操作。当某个 Vuser 到达该集合点时,将进行等待,直到参与该集合的全部 Vuser 都到达。指定数量的 Vuser 均到达后,释放所有这些 Vuser。
  可通过将集合点插入到 Vuser 脚本来指定会合位置。在 Vuser 执行脚本并遇到集合点时,脚本将暂停执行,Vuser 将等待 Controller 或控制台的允许以继续执行。Vuser 从集合释放后,将执行脚本中的下一个任务。
  注意:只能向 Action 部分(而不是 init 或 end 部分)添加集合。
  思考时间lr_think_time
  就是一个事务要开始时思考的时间;比如,你要点击一个“登录按钮”,我们都要点击这个按钮要先思考下,就是人为脑袋思维的延迟,还有手指点击鼠标的这个动作的时间 一般是1-5秒,这就是思考时间,性能测试模拟思考时间就是模拟真实人为动作的方式来做压力测试
  一般在脚本中思考时间是这样写比较合理,在一个事务的结束点另一个事务的起始点,两者中间定义思考时间。事务之间没有思考时间
  lr_end_transaction("登录", LR_AUTO);
  lr_think_time(3);
  lr_start_transaction("计算连接");
  正常情况下思考时间越短,对服务器的压力会越大。
  事务的响应时间就是指从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。
  响应时间= 网络响应时间+ 应用程序响应时间
  一般在测试结果分析时,要分析事务的响应时间,要过滤掉思考时间。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号