Jmeter关联实现及参数化使用解析

Jmeter关联实现及参数化使用解析,第1张

答应给大家的:自己保存呦!

31 关联的概念

关联也称为串行传参或数据依赖,即上一个接口返回的内容的部分值作为下一个接口运行的参数的过程。

32 关联的实现步骤

正则表达式提取器界面 *** 作介绍:

JSON提取器界面 *** 作介绍:

参数化是为了让相同的模块、方法使用不同的参数进行测试,达到提高测试覆盖率的目的,jmeter实现参数化的方式很多,常用的方式有:

用户定义的变量实现

函数助手对话框的部分函数实现

依次进入--tools菜单--函数助手对话框,部分函数举例如下:

${__machineIP()}函数:

${__Random()}函数:

${__RandomDate()}函数:

${__RandomString()}函数:

利用csv文件实现

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,jmeter使用csv文件也可以来进行参数化。

通过右击线程组--添加--配置文件--csv数据文件设置,界面如下:

五:总结

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我

如果你想成为备受企业青睐的IT人才

想要高薪offer(面试宝典免费送)

没有项目实战经验怎么办?

点击下方链接我来教你

全套软件测试/自动化测试海量资料免费领取

把登陆改为cookie进行登陆。

负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试(Load Testing)是确定在各种工作负载下系统的性能。

目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。

负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

前面我们已经学习过用 Badboy 录制 webtours 网站 的注册脚本,录制下来的脚本可以直接回放并注册成功一个新用户(前提是录制脚本时创建的用户要先清除,系统用户名有唯一性)。

如果我们想保留之前注册成功的用户,然后继续创建新的用户,这种情况应该如何 *** 作呢?大家可能想到去改脚本,把之前注册用户时填写的用户信息改成新用户的信息。一个用户可以这样 *** 作,但要注册10个,100个,1000个新用户呢?

大家想想都应该知道不可能每注册一个用户时都去修改一次脚本,这样牛都会累死的。

我们平时录制的脚本内容都是固定死在脚本里的,每次运行脚本时使用的是同样的数据。那我们有没有办法把这些“死”的脚本救“活”呢?这个就是我们接下来要学习的脚本参数化。

在 *** 作之前我们先来看看提交用户注册信息的请求。

上图圈出来的内容就是用户注册时填写的信息,我们需要对这部分的内容进行参数化。参数化其实就是把脚本里具体的内容改成调用变量的方式。

既然我们知道了 *** 作的方向,那如何调用变量呢?变量我们现在还没创建,创建变量有多种方式,可以在测试计划下创建全局变量,也可以在用户参数下创建用户变量,还可以在配置元件下创建数据 CSV 数据文件导入变量。

在这里,我们只学习平时用得比较多的一种方式,在配置元件下添加 CSV 数据文件导入变量。下面我们来看一下配置选项:

名称: 自定义,给该元件起个名字。

注释: 自定义,一般写改元件的作用。

文件名: 表示参数文件存放的路径,文件不一定是 CSV 格式文件,可以是 CSV 文件 ,也可以是 txt 文件,如 d:\testtxt 。这个配置项在 JMeter 一些低的版本里面是没有右边的 浏览 按钮选择文件的,只能手写文件路径。

文件编码: 读取文件时的编码格式,如果为空的话则为本地系统默认的编码方式,Windows 默认是 GBK,Linux 默认是 UTF-8。

变量名称: 参数名字,如果有多个就用英文状态下的逗号分隔,如 name,password 。如果参数名称为空, JMeter 会默认将参数文件的第一行值作为参数名字,从第二行开始调用参数值 。

忽略首行: 忽略 CSV 文件的第一行,只在上一项变量名称不为空时使用,如果变量名为空,则第一行必须包含头信息。

分隔符: 一般标准的 CSV 文件都是采用的逗号作为列分隔符,这里只需要和参数文件的分割方式匹配即可。

是否允许带引号?: 是否允许参数中包含被引用的值。这个是什么意思呢?其实 JMeter 允许引用字段中包含 分隔符 ,如逗号,但引用的字段要用双引号括起来。举个栗子: 1,"2,3",4 ,这样表示1是一个整体,2,3是一个整体,4是一个整体。另外, JMeter 还允许引用字段中包含双引号,如果要包含双引号请使用 两个 双引号 。再举栗子: "5""6",7 ,这样表示5"6是一个整体,7是一个整体。

遇到文件结束符再次循环?: 当读取到参数文件的最后一个值时,是否允许循环取值?

遇到文件结束符停止线程?: 当读取到参数文件的最后一个值时,是否停止线程?这个配置项和上一个配置项只能有一个是 true。

线程共享模式: 共享模式,设置线程或者线程组对于参数文件的共享方式。有四种共享方式,默认是所有线程共享一个参数文件。

学习了上面的配置 *** 作后,我们来创建一个 CSV 文件并且把脚本中要使用的数据都准备好。

接着,把 CSV 数据文件设置选项设置好。

设置完成后,接下来要做的是导入 CSV 文件并且调用数据到脚本中使用,在 JMeter 里面调用变量格式是 ${变量名称} 。

设置脚本循环运行4次,看看能否调用到 CSV 文件数据。

从上图可以看出,脚本居然能调用到 CSV 文件的数据,说明脚本已经实现了参数化。

状态时许图:

抓包图:

状态时许图:

抓包图:

参数:

Name :名称

Comments :评论

TCPClient classname为TCP Sample使⽤的TCP Client的实现,可以是⾃定义的,可以是JMeter提供的。

TCPClientImpl :TCPClient最简单实现类,也是默认使⽤的Client。以⽂本⽅式发送和接收数据。读取响应时读到输⼊流结束或者结束符停⽌。其中结束符通过JMeter属性的tcpeolByte定义。使⽤的字符集通过tcpcharset配置。

BinaryTCPClientImpl :TCPClient的⼆进制实现类。以⼆进制(Hex流)的⽅式将配置的数据传送, 所以要求配置的数据必须是⼆进制(Hex流)。读取数据的时候会把数据重新转为⼆进制(Hex 流)。读取响应时⼀直读到输⼊流结束,或者定义好的结束字节,该字节通过 tcp BinaryTCPClienteomByte配置。

LengthPrefixedBinaryTCPClientImpl :BinaryTCPClientImpl的扩展类,在⼆进制(Hex流)的前⾯增 加了默认2字节的⻓度。也就是说对于配置的数据,该类会⾃动增加2字节的⻓度数据。2字节的配置可以改变,通过tcpbinaryLengthprefixlength配置。

Server Name or Ip :服务名称或者IP

Port number :端口号

Timeouts-Connect(milliseconds) :连接超时时长

Timeouts-Response(milliseconds) :响应超时时长

Re-use connection :选中表示重⽤TCP连接,含义是同⼀线程重⽤,即同⼀个线程内的多个请求使⽤客户端同⼀IP和相同端⼝与服务器连接,服务器维护的是⼀个TCP连接。当然,并发的不同线程使⽤的不同的连接。当在请求过程中出现错误,即使该配置被选中,也会在下⼀次请求时重新打开⼀个连接。哪些配置会影响请求的错误判断呢?配置⽂件中的tcpstatusprefix、tcpstatussuffix、 tcpstatusproperties还有就是tcphandler。后者是配置的TCPClient实现类,响应结果直接决定请求的成败。前两者是是如何获取服务端状态码,tcpstatusproperties是如何翻译获取的状态码。这些状态码可以决定请求的成败。注意,⽬前JMeter⽆法配置哪些成功、哪些失败,默认的 "400"-"499" and "500"-"599" 就是失败。

Close connection :选中表示请求结束后关闭连接。该配置会影响Re-use connection,如果选中Close connection则⽆论Re-use connection是否选中,都会在请求结束后关闭连接,⽽下⼀次请求重新创建⼀个连接。也就是Re-use connection配置⽆效。

Set NoDelay :选中则禁⽤ Nagle算法,与TCP协议的缓存有关的算法。简单讲就是,是⽴即发送数据,还是缓存⼀会⼉收集⼀个⼤包再发送。有实时性要求的系统设置NoDelay,默认是关闭的(就是默认的TCP协议启⽤Nagle算法)。

SO_LINGER :TCP协议中的延迟关闭时间,具体参考TCP协议。简单讲就是客户端要关闭连接时,是否要等待以秒为单位的时间。默认不配置或者配置为0,可以防⽌服务端维持⼤量处于TIME_WAIT状态的连接。

End of line(EOL) byte value : 结束字符配置,可配置的值在-128到+127。 与配置⽂件中的tcpeolByte⼀个作⽤。

Text to send :发送文本

Login Configuration :

Username :用户名称

Password :密码

TCP短连接 :发送1次请求,关闭连接。

TCP长连接 :发送N次请求,再关闭连接。

连接数满

设置了keep alive 导致的网络连接超时

网络延迟

丢包

参考:

>

1 建立WebServiceTest Plan

1) 添加ThreadGroup

右键单击Test Plan选择Add --> ThreadGroup配置

Number of Threads、Ramp-UpPeriod、Loop Count随测试同随修改

三种参数解释:

Number of Threads发起线程总数

Ramp-Up Period 指定JMeter启Number ofThreads线程所需间例待发起30线程(即模拟用户)Ram-Up Period15秒则每秒增加2线程(30用户/15秒)设置0则JMeter自启所模拟用户

Loop Count循环数

2 添加 WebService Requests

右键单击WebService线程组Add --> Sampler --> WebService(SOAP)

注:灰色线程组其测试使用线程组处设置Disabled线程组本测试使用

配置

发布Service WSDL URL粘贴WSDL URL点击Load WSDLWebMthods自d

需自选择Method单击Configure即完绝部自配置

面涉及Soap/XML-RPC Data编写我编写:

[plain] view plain copy

<soap:Envelope

xmlns:xsi=""

xmlns:xsd=""

xmlns:soap="">

<ns1:simpleMethod

xmlns:ns1="">

Yerasel

XML绝部都固定其余解释:

simpleMethodWebService发布;

simpleMethod所类(SimpleServer)域名即SimpleServer所包包名comdeltajserver;

namesimpleMethod参数名参数类型string;

Yerasel输入实参

SimpleService服务端源程序:

[java] view plain copy

// SimpleServicejava

package comdeltajserver;

public class SimpleServer {

/

简单测试

/

public String simpleMethod(String name) {

return name + "Say this is a Simple method ^-^";

}

}

注意:

Yerasel

发布wsdl候, 参数名称自映射arg0, arg1, 解决:

[java] view plain copy

Java代码

public User create(

@WebParam(name = "user")

User user);

SimpleService服务端源程序改写:

[java] view plain copy

// SimpleServicejava

package comdeltajserver;

public class SimpleServer {

/

简单测试

/

public String simpleMethod(@WebParam(name = "personname")String personname) {

return personname + "Say this is a Simple method ^-^";

}

}

Soap/XML-RPC Data :

[plain] view plain copy

<soap:Envelope

xmlns:xsi=""

xmlns:xsd=""

xmlns:soap="">

<ns1:simpleMethod

xmlns:ns1="">

Yerasel

注:

发布SimpleServer需要写xml发布WebService般步骤内容:

[plain] view plain copy

SimpleServer

comdeltajserverSimpleServer

文件名META-INF/servicesxml

文件布局

com面包及class

bin目录运行"jar cvf SimpleServeraar "即

aar放入Tomcatservices目录即发布

以上就是关于Jmeter关联实现及参数化使用解析全部的内容,包括:Jmeter关联实现及参数化使用解析、jmeter性能测试步骤是什么、JMeter 脚本技术(参数化)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10164822.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存