jmeter应用---测试元件介绍(二)

33 篇文章 3 订阅
31 篇文章 6 订阅

一直准备大促,再有手头项目,中断了太久了……
接上篇 http://blog.csdn.net/yue530tomtom/article/details/78229064

取样器

FTP Request

FTP控制器可以向FTP服务器发送下载文件和上传文件的请求,如果需要多次向FTP服务器发送相同的请求,可以使用配置元件”FTP Request Defaults “进行配置,减少重复的通用配置。

来看看该取样器的样子
ftp-request


各个配置项简单啰嗦一下

属性描述是否必须
属性名称在测试树中展现的名称
服务器FTP服务器的域名或者IP
端口FTP服务器使用的端口.如果配置的数值大于0,则使用配置的端口,否则使用FTP默认的端口
远程文件下载文件或者上传的目标文件
本地文件上传文件或者下载的目标文件是,如果上传文件
本地文件内容上传的文件内容,覆盖本地配置是,如果上传文件
get(RETR)/put(STOR)上传还是下载文件
使用Binary模式检查是否使用Binary模式,默认是ASCII模式
在返回结果中保存文件是否见文件内容保存返回结果中,如果是ASCII模式,测试结果树中能展现文件内容是,如果是下载文件
用户名FTP账户名称一般需要
密码FTP账户密码一般需要


具体例子参见官网

HTTP Request

HTTP请求是向web服务器发送http/https请求。Jmeter可以控制是否解析HTML中的图片和其他嵌入的资源,并向服务器发送请求获取资源。

下面的嵌入资源会从服务器下载

  • images
  • applets
  • stylesheets (CSS) and resources referenced from those files
  • external scripts
  • frames, iframes
  • background images (body, table, TD, TR)
  • background sound

默认的解析器是org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser,当然可以通过在jmeter.properties配置文件中修改htmlparser.className的值来改变。
如果对于同一个http请求需要请求多次,可使用配置元件”HTTP Request Default”,可以节省编辑脚本和维护脚本的额时间。对于手工编写http脚本还有更快捷的方法就是录制http脚本 可以参考jmeter编辑web脚本

有两种不同的测试元件定义取样器
两个取样器从ui上没有太大区别,只是在高级设置中有区别,http支持的设置更多,以下红色框中的配置HTTP取样器中有,AJP中没有
区别

  • AJP/1.3
    使用tomcat mod_jk协议,允许在AJP模式中测试tomgcat而不需要apache httpd,AJP取样器不支持多文件上传,当传送多个文件时只有第一个会被使用。
    UI上Files uploads tab页与HTTPRequest没有区别,可以传入多个,但只有第一个有效。
  • HTTP Request
    提供一个已经实现的下拉列表,使用已选择的实现,共有3种
    • Java:使用jvm的http实现,有一些限制
      • 如何重新使用连接是无法控制的。当JMeter释放连接时,它可能也可能不会被相同的线程重用。
      • 该API最适合单线程使用——各种设置都是通过系统属性定义的,因此适用于所有连接。
      • 通过代理对HTTPS的处理有一个bug(连接没有正确处理)。
      • 它不支持虚拟主机。
      • 它只支持以下方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE
      • 它不支持基于密钥库配置的客户端证书测试。
    • HTTPClient4:使用apache 的httpclient4.x组件
    • 空:依赖缺省

FILE协议仅用于测试目的。不管使用哪种HTTP采样器,它都是由相同的代码处理的。

如果http请求需要服务器或代理登录认证时,则可以使用配置元件 “HTTP Authorization Manager “(就是使用浏览器访问网站时会弹出一个对话框,要求输入用户名及密码)
这里写图片描述

每个线程都使用一个单独的SSL上下文。如果您想使用单个SSL上下文(而不是浏览器的标准行为),设置JMeter属性

https.sessioncontext.shared=true

默认情况下,在测试期间将保留SSL上下文。SSL会话可以为每个测试迭代重新设置。为了实现这一点,设置JMeter属性:

https.use.cached.ssl.context=false

注意:以上设置不适合java HTTP实现

Jmeter默认的SSL协议级别是TLS,如果服务器需要设置不同的级别就需要需要修改jmeter属性

https.default.protocol=SSLv3

Jmeter可以启用额外的的协议,通过修改https.socket.protocols

如果请求需要使用cookies,可以通过配置元件”HTTP Cookie Manager”
这里写图片描述

如果需要配置header配置,通过”HTTP Header Manager”

这里写图片描述

处理参数:

对于POST和PUT方法,如果没有要发送的文件,并且省略了参数的名称,那么请求内容为所有参数的值连接起来。注意,这些值是在不添加任何行尾字符的情况下连接的。可以通过在值字段中使用__char()函数来添加这些功能。这允许发送任意的请求内容。如果设置了编码标志,则值将被编码。对于其他方法,如果缺少参数的名称,则忽略参数。这允许使用变量定义的可选参数。
当一个请求只有一个未命名的参数(或者根本没有参数)时,可以选择切换到Body Data选项卡。
这里写图片描述
这个选项在以下情况下很有用:

  • GWT RPC HTTP Request
  • JSON REST HTTP Request
  • XML REST HTTP Request
  • SOAP HTTP Request

注意,一旦离开测试树节点,就不能切换回参数选项卡,除非清除Body Data选项卡中的数据。就是说在httprequest中paramters有无名参数时切到bodydata选项卡中,然后在测试树节点中点击当前节点外的其他节点再切回httprequest,再点击paramters选项卡提示无法切回,清楚bodydata节点的内容就可以切回了(个人认为这样设计很二,这玩意就是防止两个也签中的数据不一致,导致问题,只能保留一个,工具可以将数据保留一份,分两种展现形式即可,为啥不实现why why why?呵呵~)。

这里写图片描述

在Body Data模式中,除了最后一行之外,每一行都将被附加的CRLF发送。要在最后一行数据之后发送一个CRLF,请确保后面有一条空行。(除了指出光标是否可以放在后续行之外,这一点是不可见的。)

请求方法处理

GET, DELETE, POST, PUT 和PATCH请求方法都比较类似,只有POST方法支持复杂数据请求和上传文件。PUT和PATCH方法的方法体有固定的格式,只能是以下其中之一

  • 将方法体存储在文件中,文件内容是使用无名参数,MIME type使用Content-Type
  • 定义方法体作为无名参数的值
  • 使用Body Data tab页

GET、DELETE和POST方法也可以使用Parameters面板传递参数,GET、DELETE、PUT和PATCH需要Content-Type,如果不使用文件,添加Header Manager,并在那里定义content-type

响应大小计算

可选属性,允许更改方法以获得响应大小

  • 以字节为主体,以字节为实际网络大小
sampleresult.getbytes.body_real_size=true
  • 将HTTP头添加到完整的响应大小
sampleresult.getbytes.headers_size=true

Java实现不包括传输开销,例如响应报文中的响应头。
HttpClient4实现包含响应体大小的开销,因此其值可能大于响应内容中的字节数。
当这两个属性设置为false时,JMeter只返回数据响应大小(如果请求使用gzip/deflate 模式,则不压缩)。

修改jmeter.properties

sampleresult.getbytes.body_real_size=true
sampleresult.getbytes.headers_size=true

重试处理

对于HttpClient4,重试计数被设置为0,这意味着不尝试重试。注意,Java实现尝试了1次。可以通过设置相关的JMeter属性来覆盖重试计数,例如:

httpclient4.retrycount=3
httpclient4.request_sent_retry_enabled=true
properties    descrequired    
名称在测试树中展示用的标识
协议默认是http
服务器web服务器域名或者web服务器ip,如www.baidu.com/192.168.1.1是,除非是提供了http默认配置
端口web服务器监听的端口,默认是80
请求方法下拉选择框GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE, PATCH (不支持JAVA实现)。对于HttpClient4还允许: COPY, LOCK, MKCOL, MOVE, PROPFIND, PROPPATCH, UNLOCK, REPORT, MKCALENDAR, SEARCH.也可以通过预定义使用更多的方法
访问路径资源的路径,如/servlets/myServlet。特别指出若资源使用http或https开头需要给出完整的路径,此时服务器、端口和协议的配置湖北忽略;get和delete方法的参数也会被忽略。另外也需要注意路径的编码,避免异常出现
参数请求携带的参数例如name=yl,可以添加多个参数是个列表
请求内容基本是针对post、put请求来讲的,这时候传入富文本如json或者xml等
文件上传名字说明了它的作用,上传文件使用的
客户端实现java、httpClient4和空
超时控制请求超时用的,两种连接超时和返回超时。一般不配置,是通过服务器端的超时来控制
是否解析html资源解析嵌入html的资源,支持的支援类型可以见上面http取样器
资源地址该配置项只对httpclient实现有效,该项配置类似Loadrunner中的ip欺骗,覆盖默认的本地地址
代理服务器提供代理服务器ip、端口、登录用户、登录密码
保存MD5哈希选择,就不会保存服务器返回的内容,替代返回是MD5哈希的32个字符。当返回数据较大时可以使用这个方法

JDBC Request

JDBC Request允许将JDBC请求(一个SQL查询)发送到数据库。
在使用之前需要建立一个JDBC Connection Configuration配置元素,并在jdbcRequest中引用。

jdbcConfig

jdbcRequest
query Type中选择操作类型若需要传入变量,就需要用”prepared xxxxxx”相关的方法,并在”parameter values”中传入实际的入参值(见下图第一个参数),当然这里可以使用参数化实现数据多样化覆盖。
“variable names”变量名用来存储查询返回的结果(存储形式类似__regexFunction 不在赘述)。
jdbcVariables

设置完变量,变量和自动创建的变量结果如下(数组形式)
这里写图片描述
如果Select语句返回零行,那么A和C变量将被设置为0,并且不会设置其他变量。
设置相同的变量,变量会被覆盖.oOOo.,例如,如果第一个select检索2行,而第二个选择只返回1行,那么多余的附加变量将被删除。
下图演示了入参的参数化和变量
jdbc_request_all

未完待续……

jmeter应用—测试元件介绍(一)
jmeter应用—测试元件介绍(二)
jmeter应用—测试元件介绍(三)
jmeter应用—测试元件介绍(四)

原文连接 http://blog.csdn.net/yue530tomtom/article/details/78530854

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值