一直准备大促,再有手头项目,中断了太久了……
接上篇 http://blog.csdn.net/yue530tomtom/article/details/78229064
取样器
FTP Request
FTP控制器可以向FTP服务器发送下载文件和上传文件的请求,如果需要多次向FTP服务器发送相同的请求,可以使用配置元件”FTP Request Defaults “进行配置,减少重复的通用配置。
来看看该取样器的样子
各个配置项简单啰嗦一下
属性 | 描述 | 是否必须 |
---|---|---|
属性名称 | 在测试树中展现的名称 | 否 |
服务器 | 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组件
- 空:依赖缺省
- Java:使用jvm的http实现,有一些限制
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 | desc | required |
---|---|---|
名称 | 在测试树中展示用的标识 | 否 |
协议 | 默认是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中引用。
query Type中选择操作类型若需要传入变量,就需要用”prepared xxxxxx”相关的方法,并在”parameter values”中传入实际的入参值(见下图第一个参数),当然这里可以使用参数化实现数据多样化覆盖。
“variable names”变量名用来存储查询返回的结果(存储形式类似__regexFunction 不在赘述)。
设置完变量,变量和自动创建的变量结果如下(数组形式)
如果Select语句返回零行,那么A和C变量将被设置为0,并且不会设置其他变量。
设置相同的变量,变量会被覆盖.oOOo.,例如,如果第一个select检索2行,而第二个选择只返回1行,那么多余的附加变量将被删除。
下图演示了入参的参数化和变量
未完待续……
jmeter应用—测试元件介绍(一)
jmeter应用—测试元件介绍(二)
jmeter应用—测试元件介绍(三)
jmeter应用—测试元件介绍(四)
原文连接 http://blog.csdn.net/yue530tomtom/article/details/78530854