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

    iOS开发初级课程 针对学员 掌握Objective  C,C或者C++,有语言基础的学员,想从事iOS开发工作. iOS开发那些事-了解iOS开发(8集) 在课程中,我们首先介绍如何使用nib和故事 ...

  2. iOS开发——网络篇——UIWebview基本使用,NSInvocation(封装类),NSMethodSignature(签名),JavaScript,抛异常,消除警告

    一.UIWebView简介 1.UIWebView什么是UIWebViewUIWebView是iOS内置的浏览器控件系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但 ...

  3. css代码优化

    一.CSS代码优化作用与意义 1.减少占用网页字节.在同等条件下缩短浏览器下载css代码时间,相当于加快网页打开速度2.便于维护.简化和标准化css代码让css代码减少,便于日后维护3.让自己写的cs ...

  4. TP5的图片上传

    public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); $picture=mod ...

  5. Eclipse/MyEclipse 安装国际化资源文件编辑插件(i18n tools)

    一.JInto 官网:http://www.guh-software.de/index_en.html http://www.guh-software.de/jinto_en.html 下载地址:ht ...

  6. OpenCV加载图像并显示

    从文件中读取一直一张图片,并加载出来 代码: #include "stdafx.h" #include "iostream" using namespace s ...

  7. ajax 载入html后不能执行其中的js解决方法

    事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js. 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁 ...

  8. Linux ffmpeg命令的介绍与使用

    ffmpeg使用语法 ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉(只在Linu ...

  9. Android客户端的图形化拖放操作的设计实现

    为什么要拖放?拖放在某些UI交互中可以简化用户操作. 拖放的步骤包括哪些?“Drag and Drop”,拖放,顾名思义,总共就分三步:1, 开始拖起来:2, 正在拖:3, 放下,进行操作:在这三步里 ...

  10. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...