您的位置:首页 > 其它

LR性能测试经验总结(持续跟新中)

2014-01-21 13:53 357 查看
情况1: 在Vuser中迭代跑脚本,更新客户信息,结束后验证更新成功。但在controller中场景跑脚本,发现200多个用户并没有更新信息(客户信息页面)

解决办法: 在Vuser中没有关联,然后从新运行场景,就发现信息更新了。原因是在脚本中的一个request中,有需要关联的地方。(在考虑脚本时,应想到request与关联的东西)

情况2:参数化

解决办法:应该充分考虑参数化的问题,即:submit中肯定有需要参数化的,还有就是用replace功能将所有点都参数化。对于没有变化的值可以考虑不用参数化

1.当前函数提交的地址,如果里面有需要关联或者参数化的内容,也需要。

2.但是在LR的每个提交函数都要重新参数化和关联。

3.它不会像页面一样给你持续保存,它只识别你当次上传的函数内容。

情况3:不同的用户自己有不同的客户,怎样做到一一对应,找到自己的客户。因为回放时会出错

解决办法: 参数化用户,名为loginname(它的取值方法随便,可以是unique。。。。)。 再参数化客户id(它的取值方法为,same line as loginname)

备注:也可以选择关联方法来

4.关联和参数化从本质上没有差别,在于数据来源的差别。

情况4:放置检查点的位置,检查点就是检查页面是否正确显示,那么在哪里添加

解决办法:明确脚本中页面的显示文字,即,到底在哪段代码中是显示这个页面的,则检查点要放在最后面,下个页面的前面。

总结:

一.web_find()使用时必须开启内容检查选项,在Runn-time Setting设置中,Preferences中勾选 Enable image and text check; web_reg_find()函数没有此限制

二.web_find()只能只用在基于html模式录制的脚本中,web_reg_find()没有此限制

三.web_find()是在返回的页面中进行内容查找,web_reg_find()是在缓存中进行查找,故在执行效率上没有web_reg_find()函数高。

四.web_reg_find的优先级要远远高于web_find(),所以web_fiind()已经属于向后兼容的功能,不在推荐使用:

简单来说,web_reg_find()函数比web_find()底层

问题一:

录制脚本后添加了这个web_reg_find()函数,查找页面上某段字符串,reply的时候没有问题,但是在并发测试的时候就会有好多事务报错说找不到这个字符串,但是为什么reply的时候没有问题呢?还有就是,如果我把应用部署在处理速度较快的机子上,测试时就没有出现这个问题,这跟服务器响应速度有关?不太懂

解答:

web_reg_find()函数,不是查找页面上某段字符串,而是在缓存中,web_find才是在页面中查找。web_reg_find的效率要高一些。

但是在并发较大的时候,服务器还没来得返回你请求的字符串有可能loadrunner已经进行下一步操作了,所以找不到。

把应用部署在处理速度较快的机子上,测试时就没有出现这个问题,正是因为这个原因

所有检查点函数:

web_reg_find:从下一个回应的HTML页面中查找指定的文本字符串

web_find:从HTML页面中查找指定的文本字符串

web_image_check:从HTML页面中查找指定的图片

web_global_verfication:从所有后续HTTP交互中查找指定的文本字符串

web_reg_find: 是注册型函数,一般放在请求之前,比如放在web_submit_from, Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()

函数祥解:

web_reg_find("Fail=NotFound",//表示 如果没有找到,检查点函数出错

"Search=Body",//搜索 的位置

"SaveCount=logcheck", //将结果保存到的参数

"Text=test",//要查找的内容文本或者图片内容

LAST);

情况5:

在检查点和关联的地方相同的前提下, 关联当中的左右边界值,可以左右检查点的左右边界值得参考。此发现需要实践

情况6:

在模拟不同用户下面有不同客户情况中,可以将用户登录参数化,而将点击自己所属客户进行关联, 回放试试。若成功可省去客户参数化。

情况7:

在脚本文件夹中,如果确实data文件夹,则说明该脚本是手工黏贴产生,而非录制产生,顾确实data文件夹。具体影响有哪些还要在看

情况8:

关联当中Ord在关联后需要手动修改为ALL 这样才会把所有关联加进来。例如:

web_reg_save_param("keyword", "LB=........", "RB=.........", "Ord=1", .... LAST);

其中的1在关联完成后,脚本运行前需要改为ALL。因为在关联时,找到的往往是一些符合的选项,而回放时会有错误,因为没有全部包括进来。

情况9:

单独回放没有问题,但在场景中执行会报错。例如:出现htt404 can not find the pageXXX,检查通过的transaction数值,发现仅在第一次迭代时成功,查看web server日志,发现访问timeout。jsp页面,这个是seesion超时会访问的,首先不可能是因为迭代之间的等待时间过长导致的。考虑是LR的配置问题。首先明白sessionid是用来标识会话中的各个request和respond。保留sessionid的做法用hidden file,cookie或者在URL上附件seesionid。在LR的client
request中Jsessionid的信息在cookie中,判断此产品用cookie来记录sessionid。

解决办法: 在runtime setting中取消启用的simulate a new user on iteration

备注:同样的情况当login录制在action中,即每次迭代重新向server发出请求,则应启用这个simulate a new user on iteration。 因为他删除的是action的cookie之类的。前面那种情况,在vuser_init中记录的seesionid,传到action中,如果启用,则迭代时又删除,自然回放失败。其实不是在场景中失败,在vuser中回放时就应该会报错。注意两个runtime setting 都需要配置

情况10:

问题4:如何录制非标准 HTTP(S) 应用程序?

执行以下过程:

1. 选择“工具”>“录制选项”,然后单击“浏览器”节点。选择“手动启动应用程序”。

2. 单击“录制代理”节点,然后选择“使用自定义代理服务器”选项。单击“确定”关闭“录制选项”。

3. 单击“开始录制”按钮。VuGen 会提示您提供所录制的应用程序需要的代理服务器设置。注意主机和端口名。

4. 单击“取消”,然后打开“录制选项”(CTRL+F7)。单击“录制代理”节点,然后在“使用自定义代理服务器”部分输入建议的代理服务器设置。单击“确定”关闭“录制选项”。

5. 编辑正在录制的应用程序中的代理服务器设置。

6. 单击“开始录制”按钮,然后开始录制会话。

7. 在完成录制后关闭应用程序,然后还原原始代理服务器设置(还原失败可能会使该应用程序无法正常运行)。

问题3:当录制可访问支持 SSL 的站点的 Vuser 脚本时,弹出许多警告消息。这些消息应该出现吗?如果是这样,应该如何处理它们呢?

为了能够录制对支持 SSL 的站点的访问,VuGen 提供自己的服务器证书而非原始的服务器证书。这将产生两个安全冲突:

o 颁发的证书不适用于用户要连接到的站点。

o 该证书是由未知颁发机构颁发的。

这些安全冲突会使录制浏览器弹出警告消息。

如果正在使用 Netscape 3.0 或更高版本,或者正在使用 Internet Explorer 4.0 或更高版本,那么可以选择忽略这些警告。您可以安全地忽略这些消息。

注意: 弹出消息仅在录制脚本时出现,而不会在执行脚本时出现。

您可以禁止其中一些弹出消息出现,但不能禁止全部消息。

问题8:如果查看 Web Vuser 脚本,可以弄清楚 Vuser 访问的是常规 (HTTP) 服务器还是支持 SSL 的 (HTTPS) 服务器吗?

有时可以。Web Vuser 脚本不区分安全和非安全请求:图形 Vuser 脚本对安全请求和非安全请求使用相同的图标;基于文本的 Vuser 脚本对安全请求和非安全请求使用相同的函数。但是,如果 Vuser 脚本中的某个步骤包含 URL,那么您或许可以根据该 URL 辨别该步骤访问的是常规 (HTTP) 服务器还是支持 SSL 的 (HTTPS) 服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: