接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文结果与预期结果进行比对的过程,接口测试可以通过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. CSU 1120 病毒(DP)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...

  2. jquery版时钟(css3实现)

    做时钟的主要原因是因为喜欢,觉得它好看(本人对特效有点爱不释手……).做的时候感觉工程量会有点大,做着做着发现实现起来其实并不难,只要理清思绪,其实还蛮简单的(我制作东西喜欢整体方向制定好,然后边做边 ...

  3. android中返回键捕获处理

    在android平台上捕获Back键事件,主要用来处理返回的相关逻辑,下列几种方法都可以捕获,如下所示: 1.获取按钮按下事件,兼容android 1.0到android 2.1,重写onKeyDow ...

  4. SVN迁移到Git的过程(+ 一些技巧)

    SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clo ...

  5. 百度地图API 海量点 自定义添加信息

    <!--添加百度地图--> <script type="text/javascript" src="http://api.map.baidu.com/a ...

  6. python tkinter用Treeview实现ListView效果

    先上图 再上代码: import ttk from Tkinter import * root = Tk() tree = ttk.Treeview(root, columns=('col1','co ...

  7. SqlBulkCopy 批量复制数据到数据表

    使用 SqlBulkCopy 类只能向 SQL Server 表写入数据.但是,数据源不限于 SQL Server:可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataR ...

  8. Oracle中创建MD5方法

    create or replace function MD5(passwd in varchar2) return varchar2 is retval ); begin retval := utl_ ...

  9. Union-Find Algorithm

    Union-Find Algrithm is used to check whether two components are connected or not. Examples: By using ...

  10. C#之串口

    1.字符发送 string strSend = "00 01 02 03"; serialPort1.Write(strSend); 2.字符接收 ReadDataFromSeri ...