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

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

     

    ----------- 软件性能测试工作室:提供性能测试咨询、培训和项目指导 (QQ: 2225045276 E-Mail: Testing_is_believing@126.com)
  • 相关阅读:
    聊天ListView
    Android笔试题三
    java内存分配与垃圾回收
    Activity切换的时候生命周期的变化
    二分查找
    如何用报表工具实现树状层级结构的填报表
    报表数据填报中的自动计算
    报表数据填报中的合法性校验
    tab 页形式展现多张报表
    报表工具之数据校验竟可以如此简单
  • 原文地址:https://www.cnblogs.com/preftest/p/2124311.html
Copyright © 2011-2022 走看看