转自:http://lovesoo.org/use-loadrunner-call-webservice-interface-testing-optimization-summary.html

本文主要介绍使用Loadrunner调用Webservice接口进行性能测试时的方法及优化总结。

 

1.Webservice协议脚本编写流程

 

下面介绍使用Loadrunner调用Webservice接口通用的流程与方法。

 

1.1 新建脚本,选择"Webservice"协议

 
 

1.2 选择Manage Services->Import,输入URL(注意需要在Webservice地址后面加上?wsdl),最后选择Impoort

 
 

1.3 点击脚本中Action脚本中return 0前,后选择Add Service Call

 
 

1.4 在打开的New Web Service Call窗口中,选择输入参数inputXML,勾选Include argument in,在Value中可以随便填写一些字符(接下来脚本中,我们会做一些参数化设置)

 
 

1.5 同理,选择输出参数中SubmitNLSMSRequestResult,后选择Save returned value in param,最后选择OK

 
 

这样调用一次Webservice接口就保存在Action脚本中

 
 

1.6 参数化

 

在脚本中用" <mobileno>13312345678</mobileno><smscontent>飞信</smscontent>"(此接口输入参数示例)替换"xxx"

 

选中"13312345678"并右键选择Replace with a Parameter,输入参数名称及参数类型(Unique Number)

 
 

1.7 参数设置

 

选择脚本右上角P图标进入参数列表进行

 

选择Unique Number"唯一数",选择格式为%8d (下图②)

 

选择"Block size per vuser"为1000000(每个虚拟用户分配到的参数个数,下图③)

 

同时Update value选择"Each iteration",When Out of values选择"Continue in a cyclic manner"(每次迭代后,参数才会更新,且每个虚拟用户用到的参数超过分配的参数个数1000000时,从头开始取,如此循环。下图④)

 
 

到此,我们已经完成了基本的Loadrunner脚本编写,下面我们开始本文真正的重点:脚本优化及实战演练,包括集合点添加,事务添加,返回结果判断及"保存20000会话"脚本编写。

 

2.Webservice脚本优化

 

2.1集合点添加

 

2.1.1什么是集合点?

 

集合点用以同步虚拟用户以便恰好在同一时刻执行任务。性能测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到测试计划中的需求。

 

2.1.2如何添加集合点?

 

在需要添加集合点之处,如开始调用接口前,右键选择Insert->Rendezvous,输入集合点名称即可。也可以直接在需要添加的脚本前添加"lr_rendezvous("Step1");",其中Step1为集合点名称,可自定义。

 
 

2.2事务添加

 

2.2.1添加开始事务

 

由于需要统计响应时间重要参数指标等,需要在脚本中手工添加事务。添加事务方法与集合点类似。在需要添加事务处,如集合点后,右键选择Insert->Start Transaction,输入事务名称即可。也可在脚本中直接添加"lr_start_transaction("Step1");",其中Step1为事务名称,可自定义。

 
 

在集合点前后添加事务区别?

 

如果在集合点前添加事务,在最后统计事务时间时就包括了在集合点等待的时间,导致统计的响应时间数据不准确(变大)。所以在此,我们选择在集合点后添加事务。

 

2.2.2添加结束事务

 

同理,在需要添加结束事务处,一般在web_service_call后,右键选择Insert->End Transaction,输入需要结束的事务名称即可。也可在脚本中直接添加"lr_end_transaction("Step1", LR_AUTO);",其中Step1为需要结束的事务名称。

 
 

LR_AUTO是什么?

 

lr_end_transaction中第二个参数为"事务结束状态",有LR_PASS(通过)、LR_FAIL(失败)、LR_AUTO(自动)、LR_STOP(暂停)。如果在lr_end_transaction中没有指定结束事物状态是LR_AUTO,而是明确指定为LR_PASS、LR_FAIL、LR_STOP其中的一种,则事物将以最后指定的状态来结束。

 

2.3返回结果判断

 

2.3.1单个返回结果判断

 

例如,当我们调用Webservice接口输入如下参数时"<mobileno>13312345678</mobileno> <smscontent>飞信</smscontent>",接口正确返回结果包括"飞信是中国移动的业务"。在此我们就需要对返回结果进行判断。示例代码如下:

 
 

lr_eval_string函数说明

 

C的变量都不能被LR的函数直接调用。所以:LR函数调用C变量,得先经过lr_eval_string的解析,相当于桥梁的作用。

 

strstr函数说明

 

函数格式为strstr(str1,str2),其中str1: 被查找目标string expression to search,str2:要查找对象The string expression to find.该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL.

 

lr_error_message和lr_output_message函数说明

 

lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。

 

lr_error_message在回放日志中显示的是红色的字体,且显示语句所在行号;同时,如果脚本在controllor中运行时,会生成一个error信息。

 

lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。

 

2.3.2多个返回结果判断

 

与单个结果判断类似,其实就是嵌套if语句,在此恕不赘述,示例代码如下,:

 
 

3.实战演练 – 保存20000会话

 

3.1需求说明

 

实际项目中,需要测试组件是否可以保存最大20000个会话,同时在保存20000个会话后,用户可以正常发送上行短信结束该20000会话。 压力测试中,我们共添加了50个虚拟用户,那么一个虚拟用户只需开始保存20000/50=400个会话,后结束这些会话即可。

 

3.3脚本编写

 

我们可以使用一个For循环完成这部分的工作,示例代码如下:

 
 

3.3.1lr_whoami函数说明

 

void lr_whoami (int *vuser_id, char **sgroup, int *scid);

 

返回值:返回当前运行的vuser ID、运行脚本的组名称以及场景ID

 

参数说明:

 

int *vuser_id 需先注册,保存正在运行的vuser的ID,在Virtual User Generator中回放返回-1

 

char **sgroup 需先注册,保存正在运行的vuser的组名(脚本名),在Virtual User Generator中回放返回None

 

int *scid需先注册,保存正在运行的Scenario的ID,在Virtual User Generator中回放返回0

 

3.3.2lr_save_int函数说明

 

lr_save_int函数意思是把一个整数保存为参数

 

abs(id)意思是取id的绝对值(因为在Virtual User Generator中,id返回为-1)

LR编写webservice协议接口的更多相关文章

  1. 使用LR编写HTTP协议Json报文格式接口脚本实战

    最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧. //实战代码如下所示:Action() { lr_start_tra ...

  2. SoapUI SoapUI测试WebService协议接口简介

    SoapUI测试WebService协议接口简介 by:授客 QQ:1033553122 1. 创建项目,入口:File -> New SOAP Project,或者右键默认项目Project- ...

  3. 基于LR的HTTP协议接口性能测试脚本实例

    背景介绍 XXX项目性能测试中新增业务场景:XX设备的在线激活,因为存在多用户同时在线激活,故需进行性能测试以确认后台服务器系统在多用并发时功能是否正常,性能指标是否满足规格要求.用户使用场景为用户通 ...

  4. 【LoadRunner】LR编写Dubbo协议脚本

    一.Dubbo服务简介 Dubbo是一个分布式服务架构,把核心业务抽取出来作为独立的服务,使前端应用能更快速和稳定的响应. Dubbo服务工作原理:服务提供方提供接口,并提供接口的实现,提供方注册服务 ...

  5. LR编写get请求

    LR编写简单Get接口 接口必备信息:接口功能.URL.支持格式.http请求方式.请求参数.返回参数 请求地址 http://api.k780.com:88/?app=life.time 请求方式 ...

  6. 性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写

    LoadRunner基于WebService协议脚本 WebService协议脚本有三种生成方式,一种是直接通过LoadRunner导入URL自动解析生成:一种是使用LoadRunner内置函数手动编 ...

  7. java之接口开发-初级篇-webservice协议

    webservice协议 客户端: 客户端生成使用soapUI生成 外部提供webservice地址,地址后加?wsdl.选择好目录然后生成,放到项目中实现 服务端: web.xml平级目录下创建se ...

  8. Loadrunner测试webservice协议总结

    Loadrunner测试webservice协议总结 一.协议选择 1.打开Virtual user generator,新建脚本,选择webservice协议

  9. Loadrunner11中webservice协议脚本总结

    Loadrunner11中webservice协议脚本总结 简介     webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...

随机推荐

  1. IIS添加网站

    打开IIS 在网站上面点击右键进行添加网站 进入添加网站配置

  2. Python 编辑注意点

    文本编辑 Python: 绝对不能用Word和Windows自带的记事本. (1)Word保存的不是纯文本文件 (2)记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会导 ...

  3. 题解【洛谷P3478】[POI2008]STA-Station

    题面 设\(dp_i\)表示以\(i\)为根节点时所有节点的深度之和. 首先以 \(1\) 为根求出所有点深度之和\(dp_1\),并预处理每个点的子树大小. 设 \(v\) 是 \(u\) 的孩子, ...

  4. 其他 - YAML 入门

    概述 简单介绍 YAML 语言 背景 很多地方, 都在使用 YAML k8s spring 其他 准备 验证工具 YAML.YML在线格式化校验工具 一个 YAML 转换 JSON 的工具 通常来说, ...

  5. Computer Abstractions

    计算机系统结构的概述 (MOOC:计算机系统设计) 组成: 硬件:CPU +MM(主存)+I/O(输入/输出) 软件:系统软件+应用软件 层次结构: 发展简史: 第一代:真空管  ·ENIAC ·冯诺 ...

  6. NMF: non-negative matrix factorization.

    1. 矩阵分解可以用来解决什么方法, 以及how? 利用矩阵分解来解决实际问题的分析方法很多,如PCA(主成分分析).ICA(独立成分分析).SVD(奇异值分解).VQ(矢量量化)等.在所有这些方法中 ...

  7. python3练习100题——017

    原题链接:http://www.runoob.com/python/python-exercise-example17.html 题目:输入一行字符,分别统计出其中 英文字母.空格.数字和其它字符的个 ...

  8. 将图片中的一部分图片用ps进行旋转

    先用选择工具选择你要进行变动的那部分图像,至于选择的方法有多种而且得看你的图片来决定采取何种选择方法.然后在英文输入状态下按下“CTRL+T”出现变换框,你将鼠标移动对角点上,当鼠标变为一种旋转的图标 ...

  9. Unity中引入Supersocket.ClientEngine并测试

    在使用Supersocket Server的过程中,发现Server是不支持.net 3.5的. 1.Server端中的几个Command: namespace SuperSocketProtoSer ...

  10. 前后端分离构架 与 json ajax简介

    前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服 ...