接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文结果与预期结果进行比对的过程,接口测试可以通过Java发送httppost或者get请求来实现,也可以通过loadrunner来实现,今天介绍下Loadrunner接口自动化测试实例:

  Loadrunner接口测试原理是web_submit_data函数发送post或者get请求,将测试用例数据进行参数化,使用关联获取响应的结果值,与预期结果进行比对,将过程中相关的参数保存到html文件中,从而实现接口自动化,实现代码如下:

1、Init部分:生成html格式文件,文件名称为 test _系统时间(%Y%m%d%H%M%S)_虚拟用户编号,并写入测试结果文件的html开始标识:

//定义结果文件变量

long file;

//定义虚拟用户编号变量

char *vusernum;

//定义测试结果变量

char V_Result[1024];

vuser_init()

{

//取得虚拟用户编号

vusernum=lr_eval_string ("_{vuserid}");

//取得系统时间

lr_save_datetime("%Y%m%d%H%M%S", DATE_NOW, "now_date");

//拼接测试结果文件名称

strcpy(V_Result,"d://test/Result/test");

strcat(V_Result,lr_eval_string("_{now_date}"));

strcat(V_Result,vusernum);

strcat(V_Result,".html");

//生成并打开测试结果文件

file=fopen(V_Result,"at+");

//写入测试文件头部html信息

strcpy(V_Result,"<html><table border='1'><tr>< td>IMSI号码</td><td>预期值</td><td>返回值< /td><td>结果</td></tr>");

fputs(V_Result,file);

return 0;

}

2、Action部分:从参数化文件读取测试参数和预期结果、发送请求并获得服务器返回实际结果,比较测试结果后写入测试结果文件:

Action()

{

//测试结果文本

char V_testres[1024];

//定义返回结果是否正确变量

int result;

//取得IMSI号码

char *V_imsi=lr_eval_string ("{IMSI}");

//设置页面接收最大的字节数,该设置应大于服务器返回内容的大小

web_set_max_html_param_len("20000");

//取得服务器返回内容

web_reg_save_param("filecontent",

"LB=",

"RB=",

"Search=Body",

LAST);

//发送请求

web_submit_data("login",

"Action=http://host:port/autonavit/search?cmd=clientlogin&termver=5&termcode=30001&termdbver=3 ",

"Method=POST",

"RecContentType=text/html",

"Referer=",

"Snapshot=t9.inf",

"Mode=HTTP",

ITEMDATA,

"Name=imsi", "Value={IMSI}", ENDITEM,

LAST);

//比较预期值和实际值是否相等

result=strcmp(lr_eval_string("{YQJG}"),lr_eval_string("{filecontent}"));

if ( result == 0 )

{

strcpy(V_testres,"通过");

}

else

{

strcpy(V_testres,"失败");

}

strcpy(V_Result,"<tr><td>");

//写入测试参数

strcat(V_Result,V_imsi);

strcat(V_Result,"</td>");

strcat(V_Result,"<td id='yq'>");

//写入预期结果

strcat(V_Result,lr_eval_string("{YQJG}"));

strcat(V_Result,"</td>");

strcat(V_Result,"<td id='sj'>");

//写入实际结果

strcat(V_Result,lr_eval_string("{filecontent}"));

strcat(V_Result,"</td>");

strcat(V_Result,"<td>");

//写入测试是否通过

strcat(V_Result, V_testres);

strcat(V_Result,"</td></tr>");

fputs(V_Result,file);

return 0;

}

3、End部分:写入测试结果文件尾部html信息,关闭文件并结束测试:

vuser_end()

{

//结束并关闭文件

strcpy(V_Result,"</table></html>");

fputs(V_Result,file);

fclose(file);

return 0;

}

Loadrunner之HTTP接口测试脚本实例的更多相关文章

  1. loadrunner:HTTP接口脚本实例

    Action() { lr_rendezvous("getAppHomeModulesList"); lr_start_transaction("getAppHomeMo ...

  2. LoadRunner系列之—-02 基于webservice协议的接口测试(脚本实例)

    Loadrunner 基于webservice协议的接口压力测试(脚本实例) 接口功能如下:请求接口,报文只有一个参数为证件号码:返回报文中,有证件号码是否能查到对应数据,查到几条数据. 思路:请求w ...

  3. LoadRunner脚本实例来验证参数化的取值

    LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出:  主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d ...

  4. LoadRunner关联函数的脚本实例--如何操作关联参数

    LoadRunner关联函数的脚本实例--如何操作关联参数 这几天一直在学习LoadRunner的VuGen编程,今天想对关联函数web_reg_save_param做详细的试验和研究: ~f6p q ...

  5. loadrunner工具使用之脚本创建

    loadrunner工具使用之脚本创建 一.创建脚本 1.打开loadrunner,选择第一个控件VuGen(创建/编辑脚本),点击

  6. Loadrunner之HTTP接口测试

    Loadrunner之HTTP接口测试 接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程. ...

  7. 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

    通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

  8. 老李分享:loadrunner的java user脚本开发

    老李分享:loadrunner的java user脚本开发 poptest在性能测试loadrunner的课程里,以web协议为主,同时也讲解其他协议的脚本开发,对于一个性能测试工程师需要掌握一个以上 ...

  9. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

随机推荐

  1. Understand:高效代码静态分析神器详解(转)

    之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...

  2. 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...

  3. hiho #1284 机会渺茫

    #1284 : 机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要 ...

  4. C# 属性和索引

    //用索引取一个记录中的各项 using system; class IndexerRecord{ private string[] data= new string [6]; private str ...

  5. JavaScript中var关键字的使用详解

    作用 声明作用:如声明个变量. 语法 ? 1 var c = 1; 省略var 在javascript中,若省略var关键字而直接赋值,那么这个变量为全局变量,哪怕是在function里定义的. ? ...

  6. IOS系统ipa软件包在线安装

    如果iis不支持ipa和plist下载,可以添加memi类型. ipa     application/x-plist plist application/xml 下载用普通链接即可: <a h ...

  7. MySQL重复数据

    delete from porn where Id not in (select minid from (select min(id) as minid from porn group by view ...

  8. Bootstrap 3学习笔记 -栅格

    这是Bootstrap中非常基础一张表,但其实有这么容易掌握和理解吗? (1).对于col-md的div, 默认是垂直排列, 当视口(屏幕或浏览器的宽度)>992px,col-md-1的div块 ...

  9. Windows Setup progject : 修改默认安装路径

    建立Windows Setup project 之后,程序安装的时候会默认选择系统路径- 具体格式为:[ProgramFilesFolder][Manufacturer]\[ProductName], ...

  10. PowerDesigner16.5 连64位MySQL,出错:SQLSTATE = IM014。原因及解决方案