发布新日志

  • LoadRunner录制HTTP脚本问题合集一

    2018-02-06 08:57:29

    1 录制脚本问题

    1.1 HTTP 脚本问题

    1.11 LoadRunner录制脚本时为什么不弹出IE浏览器?

    1.一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决。

    启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题

    LoadRunner录制HTTP脚本问题合集一

      提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制。因此建议运行LoadRunner得主机上保持一个干净的测试环境。

    2.在系统中安装了多个浏览器需在“program to record”中指定需要启动的浏览器的可执行文件。

    LoadRunner录制HTTP脚本问题合集一

    3.览器的版本应与loadrunner的版本一致。

    LR 8--------àIE6

    LR9---------àIE7

    LR11--------àIE8

    4.操作系统有关

    windows server 在有数据执行保护,应将vugen.exe加入不受系统的保护项。

    LoadRunner录制HTTP脚本问题合集一

    1.12 录制脚本为空

    LR录制是客户端与服务器的数据交互,只有在有交互的时候才可以录制到脚本。

      A、(1) 交互方式若是通过客户端的server进行交互,则在script中选择最后一个track processes created as COM local servers ,把script里的最后一个选项选上就好了。

    LoadRunner录制HTTP脚本问题合集一

    (2)若是非客户端与服务器的交互操作,在页面上点前进或后退,如果页面是从缓存中取出来的,那么也就没有和服务器数据交互,所以也录制的为空脚本。 在windows注册表中禁用缓存就好了.

    (3)协议选择错误,b/s不一定走http协议,还可能是https(hypertext transfer protocol over secure socket layer)协议。

    LoadRunner录制HTTP脚本问题合集一

    B、选择internet选项里的连接里的局域网设置的代理不能选,因为LR在录制的时候会动态选择。

    C、网页里的恶意代码,检测的时候响应LR录制脚本[用工具检测恶意代码,然后卸载恶意代码,例如:Ad_Aweare] ,这个可能性不大。

    D、防病毒软件和防火墙,在录制时暂时关闭。

    E、 因为LR自身原因报错或者有些脚本不能录制下来,录制时最好选用view script,此时会报错,但能录下脚本,是因为LR无法解析,可以手工修改,而view tree 就直接停止了。

    1.13 录制Web脚本时,生成的脚本中存在乱码该如何解决?

    第一步:

    LoadRunner录制HTTP脚本问题合集一

    录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8。再次录制,就不会出现中文乱码问题了。

    第二步:服务器响应报文中显示乱码

    若是录制的脚本在切换到Server Response中,所有的中文全部变成乱码,如“勌缞仫訆”。

    原因是服务器端没有把响应的编码设置为gb2312,在IIS中找到Web.Config文件,在<system.web>….</system.web>节加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次录制脚本,乱码变中文。

    还有另一种情况:是录制的脚本里有乱码,但是不影响回放,测试中需要对其进行参数化,我们可以通过字符串编码转换的函数lr_convert_string_encoding( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName)进行转换:

    lr_convert_string_encoding(lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

    strcpy(tmp,lr_eval_string("{str}"));

    第三步:回放过程中,LR的快照中显示乱码

    解决方案:

    在Run-time settings下Browser Emulation中点击change。。按钮

    LoadRunner录制HTTP脚本问题合集一

    在User-Agent对话框中更改Browser的类型和版本。

    1.14 ERROR:not found the correlation ParameterMemorry violation

    1.关联错误,检查关联的内容是否正确,左右边界取值是否准确很多时候,在关联的左右边界中是不分大小写的。

    2.关联较多时如果左右边界不唯一,会出现左右边界分不清的情况,参数值也会取不到。

    解决办法有两种:一、左右边界可以取长点直到可以唯一标识关联参数时;二、如果需要的关联很多,可以利用ORD控制(ord用来确定第几次出现的值,是要关联的值 ,默认值为1,就是第一次出现的值为关联的值,而设置成ALL则表示关联全部存在于左右边界的值,ord=all时可以使用参数数组)。在9.x的版本中提供了三个关于Ord的主要函数:

    lr_paramarr_len

    lr_paramarr_idx

    lr_paramarr_random

    1.15 关联报错:Action.c(20): Error -26377: No match found for the requested parameter "xxxxxx". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]

    这个问题是因为存放参数的缓冲区大小默认为1024个字节,也就是1k,比较小。应该根据需要进行调整。

    解决方法:

    web_set_max_html_param_len()函数可以自定义关联返回值存放的参数的最大长度,且一定要写在关联函数前面.

    1.16 问题描Error-27257: Pendingweb_reg_save_param/ reg_find/create_html_param[_ex] request(s) detected and reset at the end ofiteration number 1

    解决方法:web_reg_save_param位置放错了,应该放到请求页面前面。且在插入文本检查点时,正确写入 web_reg_find的参数值,通常TextPfx和TextSfx中会包含特殊字符如:双引号,等特殊字符,需要进行转义(用斜杠)例如:

    web_reg_find("Search=Body",

    "SaveCount=Welcome",

    "TextPfx=欢迎<a class="drop" id="viewpro" nMouseOver="showMenu(this.id)">",

    "TextSfx=</a>",

    LAST);

    1.17 为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?

    由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。

    LoadRunner录制HTTP脚本问题合集一

      进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks下的“Enable Image and text check”选项即可。

      检查执行结果时推荐使用web_reg_find方法。

    1.18 一些Web虚拟用户脚本录制后立刻回放没有任何问题,但是当设置迭代次数大于1时,如果进行回放则只能成功迭代一次。为什么从第二次迭代开始发生错误?

    这种现象多是由于在“Run-time Setting”的“Browse Emulation”的设置中,勾选了“Simulate a new user on each iteration”及其下面的选项“Clear cache on each iteration”这两个选项的含义是每次迭代时模拟一个新的用户及每次迭代时清除缓存。

    由于脚本迭代时,init和end只能执行一次,如果每次都模拟一个新的用户并清除缓存,则用户登录信息将一并删除,迭代式可能会出现问题。

    LoadRunner录制HTTP脚本问题合集一

    1.19 LoadRunner请求无法找到:在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止。

    错误现象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]

    Action.c(41): web_submit_form. highest severity level was “ERROR”,0 body bytes, 0 header bytes [MsgId: MMSG-27178]”这时在tree view中看不到此组件的相关URL。

    错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、使用HTTPS安全协议,这时则使用“URL-based script”模式进行录制。

    解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。然后再选择使用“URL-based script”模式来录制脚本。

    LoadRunner录制HTTP脚本问题合集一

    注: HTML-based 方式和URL-based 方式的区别

    HTML-based 方式对每个页面录制形成一条语句,对LoadRunner来说,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。

    URL-based 方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。

    如何决定选择何种录制方式?

    1、如果应用是WEB应用,首选是HTML-based方式;

    2、如果应用是使用HTTP协议的非WEB应用,首选是URL-based方式;

    3、如果WEB应用中使用了java applet程序,且applet程序与服务器之间存在通讯,选用URL-based方式;

    4、如果WEB应用中使用的javascript、vbscript脚本与服务器之间存在通讯(调用了服务端组件),选用URL-based方式。

    1.20 在录制一个应用的过程中,需要进行查询操作,若查询的返回结果过多,引起后续的脚本无法继续录制。

    这是由于loadrunner所能处理的数据条目小于返回的数据条目,导致了loadrunner不能处理返回的值。可以通过修改vugen.ini文件中的CmdSize=xxxxxxx的值,使得loadrunner所能处理的数据条目大于查询返回的数据条目。

Open Toolbar