利用loadrunner接口测试

接口地址:http://apistore.baidu.com/apiworks/servicedetail/697.html?qq-pf-to=pcqq.group

/*脚本说明:
脚本名称:
业务功能:
交易路径:脚本从哪个模块到哪个模块
开发协议:
开发时间:
作者:
参数化说明:
修改记录:
修改时间:
修改人:
修改内容:
*/

Action()
{   //添加头文件标识
    web_add_header ("apikey","a0736354b1d69377716d5f891b2deb93"); //参数位置是header
lr_start_transaction ("车票查询");
    //获取响应报文,放进s_respond中
web_reg_save_param ("S_respond","LB=","RB=",LAST);
    //添加检查点
web_reg_find ("Text=\"ret\":true,",LAST);
//发送报文
    /*web_url("www.abc.com", 
    "URL=http://apis.baidu.com/qunar/qunar_train_service/traindetail?&&version=1.0&&train=G101&&from=%E5%8C%97%E4%BA%AC%E5%8D%97&&to=E4%B8%8A%E6%B5%B7%E8%99%B9%E6%A1%A5&&date=2016-07-30", 
    "TargetFrame=", 
    "Resource=0", 
    "RecContentType=text/HTML", 
    "Snapshot=t1.inf", 
    "Mode=HTML",
    LAST ); //以HTML方式传送*/
//发送报文
web_submit_data("select", 
    "Action=http://apis.baidu.com/qunar/qunar_train_service/traindetail", 
    "Method=get", 
    "TargetFrame=", 
    "RecContentType=text/Json", //请求内容是json格式
    "Snapshot=t7.inf", 
    "Mode=HTML", //发送方式是HTML
    ITEMDATA, //参数位置urlparam
    "Name=version", "Value=1.0", ENDITEM, 
    "Name=train", "Value=G101", ENDITEM, 
    "Name=from", "Value=%E5%8C%97%E4%BA%AC%E5%8D%97", ENDITEM,  //请求格式也是json,传输参数也是json格式,与上面一样
    "Name=to", "Value=%E4%B8%8A%E6%B5%B7%E8%99%B9%E6%A1%A5", ENDITEM,  //传输参数也是json格式
    "Name=date", "Value=2016-07-30", ENDITEM, 
    LAST ); 
    //web_find ("Text=\"ret\":true",LAST);
    //对响应报文进行转码
    lr_convert_string_encoding ( lr_eval_string ("{S_respond}"),LR_ENC_UTF8 ,NULL,"zhuanma");
    //打印转码后的响应报文
lr_output_message ( "%s",lr_eval_string ("{zhuanma}"));
    lr_end_transaction ("车票查询",LR_AUTO);
return 0;
}

根据API接口文档资料,

注意的是:参数位置,URL\header;请求方式,GET\POST;参数传输类型,JSON\HTML

函数说明:

1.web_reg_save_param ("S_respond","LB=","RB=",LAST); //打印响应报文,把响应报文保存在第一个参数"S_respond",显示出来;

2.web_add_header ("apikey","a0736354b1d69377716d5f891b2deb93");//参数位置是header,就用这个函数;

3.请求成功后对脚本进行检查,添加检查点:

web_reg_find ("Text=\"ret\":true",LAST);

//检查点,检查点必须是唯一值,有双引号,需要进行转译,如:\”\”(在每个双引号左边加一个斜杠直到所有参数变为蓝色就行)

4.说明:

  %_reg_% 这个是注册函数,注册函数在回放日志中都是先有一个注册成功,下面才是该内容,例如检查函数:(Action.c(7): Registering web_reg_find was successful   [MsgId: MMSG-26390] 回放日志内这个显示注册成功)、

(Action.c(24): Registered web_reg_find successful for "Text="ret":true," (count=1)   [MsgId: MMSG-26364])上面显示注册成功后这里就显示结果。

5.web_find();是检查性的函数,不是注册函数,直接放在请求函数web_submit_data();web_url();等后面就可以,但是一般都是使用注册函数;

6.lr_convert_string_encoding (lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"zhuanma");

//转换字符类型,把中文字符串转为NULL,不知道具体的类型就用NULL,它就会转为默认的类型;

7.lr_output_message ("%s",lr_eval_string ("{zhuanma}"));

  //转换后就要用这个函数输出到LR窗口,lr_eval_string("{}")函数主要是返回脚本中的一个参数当前的值。

8.lr_convert_string_encoding() 转换字符类型的函数;

9.lr_eval_string(“{}”) 返回脚本中的一个参数当前的值

对于自定义的变量,如果直接赋值,就直接使用变量名称;如果使用了web_reg_save_param,就使用 lr_eval_string("{rtn}")

10.lr_output_message( const char *format, exp1, exp2,...expn.);

11.lr_output_message( “%s”, “字符串”);  发送信息到输出窗口或日志文件

脚本说明:具体看脚本事例!

"RecContentType=text/Json", //请求内容是json格式

"Mode=HTML", //发送页面信息HTML

添加事务处理:

lr_start_transaction ("车票查询");

lr_end_transaction ("车票查询",LR_AUTO);

用关联做检查点:

 1.先添加关联,

//{"ret":true,"data"

  web_reg_save_param ("S_respond","LB={\"ret\":","RB=,\"data\"",LAST);

2.添加if判断,字符串的匹配函数,stricmp()比较函数、strstr()字符串匹配,

    if (strstr(lr_eval_string ("{S_respond}"),"ture")==NULL) {

      lr_end_transaction ("车站搜索接口",LR_FAIL);

 }else{

      lr_end_transaction ("车站搜索接口",LR_PASS);

}

说明:

1.不是所有的接口都能用一个函数,这个不行的就换一个函数;

2.返回结果是4开头那么就是请求发不对造成的,添加检查点是对下面请求报文进行检查,下面的日志中检查点的内容必须唯一;

Post请求:

web_custom_request("unifiedOrder.exe", 

"URL=http://222.222.120.75:808/webCash-core/webCash/pay/unifiedOrder",
"Method=POST",    //post请求方法
"RecContentType=application/json", //请求头,数据交互方式json
"TargetFrame=",  
"Body={S_body}",  //body里面直接放json串
LAST ); 

body里面直接放json串或者把抓包放进去,参数中的引号"前需要加斜杠\转译”如:

利用loadrunner接口测试_第1张图片

http header设置:

Content-Type:application/json,请求头,数据交互协议json

Accept:application/json;   //accept指返回的响应报文,客户端或浏览器可以处理的请求类型有哪些。

jmeter post接口测试body写法:

利用loadrunner接口测试_第2张图片

jmeter中有些接口需要前一个接口的结果做参数,就要写关联用到正则表达式。

接口测试是为了看接口调用的正不正确,响应报文算是一种方式,接口可以写断言,用断言结果和实际结果对比。下面是断言截图:(jmeter中断言和lr中检查点是一个意思吧!)

利用loadrunner接口测试_第3张图片



你可能感兴趣的:(接口测试,loadrunner)