很多人在loadrunner测试脚本中加入中文检查点的时候会出现检查失败的情况,究竟是为什么呢?其实是被测试系统与loadrunner字符集之间的转换出现了问题。下面我们来一一解释。

我们知道loadrunner在录制选项中有一个字符集的设置:Recording Options>>Advanced>>Support charset,在这里可以设置loadrunner支持的字符集。

那么被测试系统的字符集与loadrunner字符集会有什么样的关系呢?下面我们以百度、Google为例子加以说明。

首先分别查看百度、Google网站的字符集是什么?打开相应的网站,通过右键查看源文件来获取它们的字符集。百度的字符集为:gb2312,源文件代码中内容为:<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312">;Google的字符集为:UTF-8,源文件代码中内容为:<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">。

1、在录制百度的测试脚本的时候不设置loadrunner字符集,脚本如下:

Action()
{
web_reg_find("Search=body",
"SaveCount=times",
"Text=百度",
LAST);

web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=/img/i2.png", ENDITEM,
"Url=/img/arr.gif", ENDITEM,
"Url=/js/bdsug.js?v=1.0.3.0", ENDITEM,
"Url=/cache/hps/js/hps-1.0.js", ENDITEM,
LAST);

if(atoi(lr_eval_string ("{times}"))>0)
lr_output_message("search successful");
else
lr_error_message("search failed");

return 0;
}

运行测试脚本,检查点可以通过。

2、设置loadrunner的字符集为:UTF-8,再次录制一个百度的测试脚本,测试脚本同上。这时运行测试脚本,会发现检查点没有通过,日志信息显示:Action.c(26): Error: search failed。

为什么没有设置loadrunner的字符集的检查点可以通过,而设置loadrunner的字符集为:UTF-8的检查点却不能通过呢?我们来看下这两个脚本所产生的代码生成日志信息,在测试脚本的data目录下的CodeGenerationLog.txt文件中。这时我们可以在两个文件中搜索检查点“百度”关键字,可以发现在没有设置loadrunner字符集的这个文件中可以搜索到“百度”关键字而在设置loadrunner的字符集为:UTF-8的这个文件中却搜索不到“百度”关键字。这是因为设置loadrunner的字符集为:UTF-8会把测试脚本所生成的信息会强制将gb2312转换为UTF-8。所以对于被测试系统字符集是gb2312的网站,loadrunner中又将字符集设置为:UTF-8,中文关键字作为检查点的时候可能失败。

再以google为例:

1、在录制google的测试脚本的时候不设置loadrunner字符集,脚本如下:

Action()
{
web_reg_find("Search=body",
"SaveCount=times",
"Text=地图",
LAST);

web_url("www.google.com.hk",
"URL=http://www.google.com.hk/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t2.inf",
"Mode=HTML",
EXTRARES,
"Url=/extern_js/f/CgV6aC1DThICaGsrMEU4ACwrMFo4ACwrMA44ACwrMBc4ACwrMDw4ACwrMFE4ACwrMAo4AUACLCswFjgALCswGTgAmgICc2gsKzAlOAAsKzBAOAAsKzBNOAAsKzBOOAAsKzBUOAAsKzBpOAAsKzAYOAAsKzAmOAAsgAJJkAJC/-1wqCmgtU-M.js", ENDITEM,
"Url=/images/srpr/nav_logo73.png", ENDITEM,
"Url=/csi?v=3&s=webhp&action=&e=17259,17315,23628,28505,28936,29561,29810,30348,30760,31090,31127,31267,52921&ei=RTkHTtGwDYHEvgPK1firDQ&expi=17259,17315,23628,28505,28936,29561,29810,30348,30760,31090,31127,31267,52921&imc=1&imn=1&imp=1&rt=xjsls.47,prt.62,xjses.3922,xjsee.3953,ol.4000,iml.984,xjs.4109", ENDITEM,
"Url=/complete/search?hl=zh-CN&client=hp&xhr=t&q=n&cp=1", ENDITEM,
"Url=/complete/search?hl=zh-CN&client=hp&xhr=t&q=nb&cp=2", ENDITEM,
LAST);

if(atoi(lr_eval_string ("{times}"))>0)
lr_output_message("search successful");
else
lr_error_message("search failed");

return 0;
}

运行测试脚本,检查点没有通过,日志信息显示:Action.c(31): Error: search failed。

2、设置loadrunner的字符集为:UTF-8,再次录制一个google的测试脚本,测试脚本同上。这时运行测试脚本,会发现检查点通过。

为什么没有设置loadrunner的字符集的检查点不能通过,而设置loadrunner的字符集为:UTF-8的检查点却能够通过呢?我们来看下这两个脚本所产生的代码生成日志信息,在测试脚本的data目录下的CodeGenerationLog.txt文件中。这时我们可以在两个文件中搜索检查点“地图”关键字,可以发现在没有设置loadrunner字符集的这个文件中搜索不到“地图”关键字而在设置loadrunner的字符集为:UTF-8的这个文件中却能够搜索到“地图”关键字。这是因为没有设置loadrunner的字符集为:UTF-8,不会自动把测试脚本所生成的信息转换为UTF-8而是转换为其他的Encode。所以对于被测试系统字符集是UTF-8的网站,loadrunner中必须将字符集设置为:UTF-8,中文关键字作为检查点的时候才能通过。

附:录制脚本后,切换到树视图中,打开相应的脚本页面。在右侧的PageView中录制的脚本呈现中文版式,但是当切换到Server Response中,所有的中文全部换成的乱码,如“勌缞仫訆”,原因是服务器端没有把响应的编码设置为gb2312,可以找到Web.Config文件,在<system.web>….</system.web>节点加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次录制脚本,乱码变中文。

转载于:https://www.cnblogs.com/Automation_software/archive/2011/06/27/2091024.html

loadrunner 字符集与检查点的探讨相关推荐

  1. 字符集问题的初步探讨

    字符集问题的初步探讨 Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库 ...

  2. loadrunner脚本--添加检查点

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 检查点 回放 注意 检查点 loadrunner中检查点是用来判断脚本是否执行成功的. 不加检查点,只要服务器返回的HTTP ...

  3. 字符集问题的初步探讨-乱码的产生

    通常在我们的现实环境中,存在3个字符集设置. 第一: 客户端应用字符集(Client Application Character Set) 第二: 客户端NLS_LANG参数设置 第三: 服务器端,数 ...

  4. [LoadRunner]LR函数小全

    给出一部分常用的LoadRunner函数,供大家参考. LR函数: lr_start_transaction 为性能分析标记事务的开始 lr_end_transaction 为性能分析标记事务的结束 ...

  5. 『性能测试』文章大汇总

    为了方便阅读,我重新整理本文,将包含本博客所有与性能测试有关的内容. ------------------------------------------- 近两年市面上的性能测试书籍很多了,但大部分 ...

  6. 如何使用Jemeter对HTTP接口压测

    我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的.笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试.负载测试.疲劳 ...

  7. 性能测试之JMeter中JSON断言详解

    JMeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似.用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 若接口的返回 ...

  8. JMETER 各组件执行顺序与作用域

    JMETER 各组件执行顺序与作用域 配置元件: 配置元件的作用主要为了初始化默认值和变量,以便后续采样器引用.相对于JAVA 语言中间定义一些常量和静态变量.配置元件作用域是最初始阶段处理,配置元件 ...

  9. Jmeter系列之接口断言

    VOL 136 19 2020-06 今天距2021年195天 这是ITester软件测试小栈第136次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  10. 【六】Jmeter:断言

    目录 一.Assertion(断言) 二.Response Assertion[响应断言]                    三.JSON Assertion[JSON 断言] 四.Size As ...

最新文章

  1. MySQL检查冗余索引代码
  2. 错过CVPR 2017?绝对不能错过GAIR大讲堂——上海交大专场开启报名
  3. CImageList上的位图, CTabCtrl 还是用ICON好!
  4. 【爬虫】爬取百度贴吧数据
  5. 遭银行账号诈骗最快最有效自救法
  6. html 360不识别,html 为什么在ie里显示正常在360浏览器不正常呢?
  7. 布同:pdf自定义分割(断章)
  8. 光盘安装 windowns 10 系统 与 Win10 英文系统修改成中文系统
  9. Linux学习笔记:常用100条命令(一)
  10. java求1到20的阶乘
  11. Photoshop插件-动作相关概念-ActionList-ActionDescriptor-ActionList-动作执行加载调用删除-PS插件开发
  12. 2012年的Android之旅:梦想、学习、坚持、自信、淡定
  13. 电路实验一阶电路误差分析_差动放大电路 | 电阻误差对共模抑制比的影响有多大?...
  14. 简单实现微信小程序音乐音频播放的功能
  15. texi2dvi - 打印 Texinfo 文档
  16. 2021年1月国产数据库排行榜:OceanBase重回前三,TDSQL增长趋势最强劲!
  17. 解释源代码文件、目标代码文件和可执行文件之间的区别
  18. 【收藏】如何优雅的在 Python设置报警通知(邮件、短信、电脑外放声音)
  19. 【深度学习】详解Faster-R-CNN
  20. 2021哈工大网安837考研初试经验贴

热门文章

  1. 数据结构 关键路径的个人理解
  2. 爬虫—分析Ajax爬取今日头条图片
  3. linux服务器下安装phpstudy 如何命令行进入mysql
  4. 2012NOIP模拟试题
  5. css3弹性盒模型flex快速入门与上手(align-content与align-items)
  6. hammer的初始化及移动端各种滑动
  7. Error:Execution failed for task ':clean'. Unable to delete directory :\build\intermediates (转)...
  8. IO-同步、异步、阻塞、非阻塞
  9. 使用谷歌统计来跟踪网页加载时间
  10. 如何查询redhat的版本信息