zoukankan      html  css  js  c++  java
  • LoadRunner系列之—-02 基于webservice协议的接口测试(脚本实例)

    Loadrunner 基于webservice协议的接口压力测试(脚本实例)

    接口功能如下:请求接口,报文只有一个参数为证件号码;返回报文中,有证件号码是否能查到对应数据,查到几条数据。

    思路:请求webservice接口,将测试数据,测试结果拼装为html文件并保存

    ---------------------------------------------------------------------------------

    vuser_init代码如下:
    
    //定义一个log文件,记录请求参数,期望结果,返回参数,测试结果和查询到的条数
    
    //定义结果文件变量
    long file_stream;
    
    //定义测试结果变量
    char V_Result[1024];
    
    vuser_init()
    {
    //取得文件名种子-----系统时间
    lr_save_datetime("%Y%m%d%H%M%S",DATE_NOW,"now_date");
    //拼接测试结果文件名称
    strcpy(V_Result,"D:\ResultFile\");
    strcat(V_Result,lr_eval_string("{PolValidate}"));
    strcat(V_Result,"_");
    strcat(V_Result,lr_eval_string("{now_date}"));
    strcat(V_Result,".html");
    //生成并打开测试结果文件
    if ((file_stream = fopen(V_Result, "w+")) == NULL) { 
    lr_error_message ("创建 %s 文件失败", V_Result); 
    return -1; 
    }
    //写入测试文件头部html信息
    strcpy(V_Result,"<html><table border='1'><tr><td>接口名称</td><td>证件号码</td><td>预期值</td><td>实际值</td><td>结果</td><td>保单数量</td></tr>");
    
    fputs(V_Result,file_stream);
    
    return 0;
    }
    
     
    
    Action代码如下:
    
    Action()
    {
    //存储测试结果状态
    char V_testStatus[1024];
    
    //定义预期值与实际值的比较结果
    int result;
    
    //取得登录名
    char *V_UserName=lr_eval_string("{UserID}");
    
    //获取服务器还回的状态state
    //Correlation comment - Do not change!Original value='00' Name ='errorCode'
    //errorCode&quot;:&quot;00&quot;,&quot;policyLevel
    // 
    web_reg_save_param_ex(
    "ParamName=errorCode",
    "LB=errorCode&quot;:&quot;",
    "RB=&quot",
    "Notfound=warning",
    SEARCH_FILTERS,
    "Scope=All",
    "RequestUrl=*/PolicyValidateTrueByIdService*",
    LAST);
    
    //保单数量
    //Correlation comment - Do not change!Original value='2' Name ='CorrelationParameter_1'
    //policyCount&quot;:2,&quot;errorCode
    web_reg_save_param_ex(
    "ParamName=policyCount",
    "LB=policyCount&quot;:",
    "RB=,&quot;errorCode",
    "Notfound=warning",
    SEARCH_FILTERS,
    "Scope=All",
    "RequestUrl=*/PolicyValidateTrueByIdService*",
    LAST);
    
    lr_think_time(2);
    
    
    lr_start_transaction("保单验真");
    
    
    web_custom_request("PolicyValidateTrueByIdService",
    "URL=http://{UrlAddress}/pcis/services/PolicyValidateTrueByIdService?wsdl",
    "Method=POST",
    "TargetFrame=",
    "Resource=0",
    "RecContentType=text/xml",
    "Referer=",
    "Snapshot=t2.inf",
    "Mode=HTML",
    "EncType=",
    "Body=<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:out="http://outer.interfaces.webservice.pcis.isoftstone.com/">
    "
    " <soapenv:Header/>
    "
    " <soapenv:Body>
    "
    " <out:validateById>
    "
    " <!--Optional:-->
    "
    " <arg0><![CDATA[
    "
    "{"reqData": 
    "
    "{
    "
    ""insuredFlag": "03",
    "
    ""idType": "0101",
    "
    ""customerId": "{UserID}",
    "
    ""minAmt": "1000",
    "
    ""lossDay": "7",
    "
    ""serialNo": "999999201702180302110001"
    "
    "}
    "
    "}
    "
    "]]></arg0>
    "
    " </out:validateById>
    "
    " </soapenv:Body>
    "
    "</soapenv:Envelope>",
    LAST);
    
    
    lr_end_transaction("保单验真", LR_AUTO);
    
    
    //比较预期值和实际值是否相等
    result=strcmp( lr_eval_string("00"),
    lr_eval_string("{errorCode}") );
    
    if(result==0){
    strcpy( V_testStatus,    " bgcolor="#00FF00">" );
    strcat( V_testStatus,    "PASS" );
    
    }else{
    
    strcpy( V_testStatus,    " bgcolor="#FF0000">" );
    strcat( V_testStatus,    "FAIL" );
    }
    
    strcpy( V_Result,"<tr>" );
    //写入接口名称
    strcat( V_Result,"<td id='interFaceName'>" );
    strcat( V_Result,lr_eval_string("PolicyValidateTrue") );
    strcat( V_Result,
    "</td>" );
    
    //写入测试参数
    strcat( V_Result,
    "<td id='uname'>" );
    strcat( V_Result,
    V_UserName );
    strcat( V_Result,
    "</td>" );
    
    //写入预期结果
    strcat( V_Result,
    "<td id='expected'>" );
    strcat( V_Result,
    lr_eval_string("00") );
    strcat( V_Result,
    "</td>" );
    
    //写入实际结果
    strcat( V_Result,
    "<td id='reality'>" );
    strcat( V_Result,
    lr_eval_string("{errorCode}") );
    strcat( V_Result,
    "</td>" );
    
    //写入测试状态
    strcat( V_Result,
    "<td id='status'" );
    strcat( V_Result,
    V_testStatus );
    strcat( V_Result,
    "</td>" );
    
    //写入保单数量
    strcat( V_Result,
    "<td id='status'>" );
    strcat( V_Result,
    lr_eval_string("{policyCount}") );
    strcat( V_Result,
    "</td></tr>" );
    
    fputs( V_Result,
    file_stream );
    
    
    return 0;
    }
    
    vuser_end代码如下:
    
    vuser_end()
    {
    //结束并关闭文件
    strcpy(V_Result,"</table></html>");
    
    fputs(V_Result,file_stream);
    
    if (fclose(file_stream)) 
    
    lr_error_message ("文件 %s 关闭出错", V_Result);
    
    return 0;
    }


    参考资料:http://blog.csdn.net/jiang1986829/article/details/48368829

  • 相关阅读:
    Mybatis Interceptor 拦截器原理 源码分析
    Mybatis SqlSessionTemplate 源码解析 原理理解
    DRUID连接池的实用 配置详解以及监控配置
    Oracle 单行函数
    Oracle复杂查询及总结
    Oracle数据更新、事务处理、数据伪列
    Oracle表的创建及管理
    Oracle建表、更新、查询综合练习
    Oracle约束
    Oracle集合、序列
  • 原文地址:https://www.cnblogs.com/liuyitan/p/6879154.html
Copyright © 2011-2022 走看看