zoukankan      html  css  js  c++  java
  • loadrunner 字符集与检查点的探讨

         很多人在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"/>后再次录制脚本,乱码变中文。

    专注于自动化、性能研究,博客为原创,转载请注明文章来源于:http://www.cnblogs.com/Automation_software/ 只求在IT界有一个清闲的世界让我静心的去专研,不求功名利禄,只为心中的那份成就感及自我成长、自我实现的快感。
  • 相关阅读:
    扫面线模板
    (动态规划、栈)leetcode 84. Largest Rectangle in Histogram, 85. Maximal Rectangle
    tmux 常见命令汇总
    leetcode 221
    leetcode 319 29
    (贪心)leetcode 392. Is Subsequence, 771. Jewels and Stones, 463. Island Perimeter
    leetcode 982 668
    Python import 同文件夹下的py文件的函数,pycharm报错
    Windows里Anaconda-Navigator无法打开的解决方案
    Windows下 gpu版 Tensorflow 安装
  • 原文地址:https://www.cnblogs.com/Automation_software/p/2091024.html
Copyright © 2011-2022 走看看