1、Jmeter使用简明文档王东辉 2015.6之 接口测试目录 前期准备 Test Plan Thread Group Sampler-HTTP Request Assertions Listener Config Element Pre Processor Post Processor前期准备Jmeter 是 一款使用 Java开发的,开源免费的测试工具, 主要用来做功能测试和性能测试(压力测试 /负载测试),而且用 Jmeter 来测试 Restful API, 非常好用 。下载 jmeter 官 网地址: http:/jmeter.apache.org/download_jmeter.cg
2、iJmeter 启动 下载 jmeter 后 解压 ,运行 bin目录下的 jmeter.bat 即 可启动 jmeter 非 GUI 模式启动 : jmeter -n -t test.jmx -l logfile1.jtl ant 执行测试 , extras 目录下有 build.xml (先配置好 ant 环境 ) 图形界面 启动 Jmeter 后, 点击 Options - Choose Language 来选择语言,支持 中文 需要 jdk1.6 以上An Example 此处需要演示 Example.jmx 一个简单测试包含的基本 元件 :Test plan(测试计划 )-Threa
3、d Group(线程组) -Sampler(取样器) - Assertions (断言) 和 Listener(监听器) 初步印象: 一 个 测试计划下,可以创建多个线程组(分组配置测试执行规则);线程组下的每个 sampler+断言组成用例,测试时监听器统计输出测试结果。Test Plan Name: 测试计划名字 Comments: 关于该测试计划 的注释 User Defined Variables: 可以 定义整个测试中使用的重复值,如服务器名称。如果相同的变量名 重复赋值, 该值被设置为在测试计划(读从上到下)的最后一个定义。需要注意的是测试计划不能引用它定义的变量。如果需要从测试计
4、划变量构建其他变量,使用配置元件 。其他地方引用变量用 $var_name Run Thread Groups consecutively: 勾选后,普通线程组 之间按上下排列顺序 执行,而非默认的并行。 Run tearDown Thread Groups after shutdown of main threads: 如果选中, tearDown线程组将在主线程正常关闭后( Stop Test)运行。如果测试被强制停止( Stop Test Now)tearDown线程将不会被运行 。 函数测试模式: 在非 GUI模式下运行时, -l标志创建的日志文件。此选项 勾选 后,日志文件默认写入更
5、多的数据字段如完整响应数据,影响性能。 添加 classpath: 类路径设置,可以添加 jar文件或目录到特定的测试计划。 【 须重新启动 JMeter】 可以 直接把 jar包放到 jmeter的 lib目录(默认的 classpath )Thread Group Name: 线程组名字 Comments: 关于该线程 组的注释 Action to be taken after a Sampler error: 遇到 sampler出现 error Continue: 忽略,继续运行测试 Start Next Thread Loop: 忽略错误,开始下一个 循环( Loop count),
6、 并继续进行 测试 Stop Thread: 退出当前线程组,继续其他测试 Stop Test: 整个测试在当前所有运行 sampler结束 后停止 Stop test Now: 立即停止测试,正在运行的 sampler也中断 Number of threads: 线程数 Ramp-Up Period: 多久后需启动所有线程(如 100s,共 10个线程,则每个线程在前一个线程开始后 10s开始) Loop count: 重复执行次数, forever(调度器停止或 error终止测试 ) Delay Thread creation until needed: 延迟线程创建,直到需要 (如 1
7、0s启动共 10个线程,则确保每隔 1s时创建一个,如果不选择该项,测试开始时默认创建所有线程,只是未到开始时间的线程会暂停 )。 Scheduler: 调度器 测试开始时间(启动测试时检查是否到达开始时间) 结束时间(如果到达结束时间,测试终止) 测试持续时间(设置后,忽略结束时间,次序 X秒后停止测试) 延迟开始(设置后,忽略开始时间, X秒后开始测试)pStop Test和 Stop Test Now对 teardown线程组影响 情况 1: Test 在准备阶段就出错了,即 Setup Thread Group运行 时出错。这时如果发生 “Stop Test“ 或者 “Stop Tes
8、t Now“ , Teardown Thread Group不会 被执行 。 情况 2: Test 已经开始执行 , 在 Thread Group 中发生了错误 。 “Stop Test Now” 发生 ,则这后所有的 Teardown Thread Groups 不会 运行。 “Stop Test“ 发生 , 则 Teardown Thread Groups 执行条件依赖于 Test Plan 的配置 “Run tearDown Thread Groups after shutdown of main threads“。如果 Enable 此设置,则Teardown Thread Group
9、s 会被执行。p线程组分类在 JMeter 中有 3 种 Thread Group, 一个 Test 中可以包含多个同类型的 Thread Group Thread Group: 标准线程组 Setup Thread Group: 在 Test 开始 先 被 执行的 Thread Group (方便用户做 Testing 的初始化 ) Teardown Thread Group: 在 所有其它类型的 Thread Group 结束后执行的 Thread Group (方便做 cleanup 的工作 )Tips-1 Name: 取样器名字 Comments: 取样器注释 Web server:分
10、别 是服务器地址 、端口;以及连接和响应的超时时间 设置。 Implementation:http请求实现方法,下拉选择项httpclient3.1、 httpclient4、 java、空,当该项为空时取jmeter.properties中 jmeter.httpsampler设置值,如果jmeter.properties也没 设置 ,则 默认为 httpclient4。 Protocol: HTTP, HTTPS or FILE. Default: HTTP。 Method: HTTP请求方法,常见的是 GET 和 POST。 Content encoding:请求内容 编码 (用于设置
11、POST, PUT,FILE 方法等发送的内容使用编码),响应读取时使用的 内容编码 设置是在 jmeter.properties 中的sampleresult.default.encoding项,默认为 ISO-8859-1。 Path: url 路径(不包括服务器、端口)。特例:如果 路径 以”http:/” 或 “ https:/” 开头,即视为完整 的 URL,这时设置的服务器、端口 和协议字段被忽略 ; 并且此时如果选择的是 GET和 DELETE 方法时, parameters设置也会被忽略。pSampler(取样器)模拟 各种 请求,如 : HTTP Request 、 Ftp
12、Request 、 JDBC Request等等。 Jmeter 中所有 实际的测试任务都 由 Sampler 承担,包括向 服务器发送 请求,记录 服务器的响应 数据和时间信息等结果信息。Sampler( HTTP Request) -1 Redirect Automatically/Follow Redirects:选择时两项互斥,当发送 HTTP请求后得到的响应是 302/301重定向时, JMeter 自动重定向到新的 页面 。 Redirect Automatically只记录最后跳转请求,会丢失初始请求上的 header、 cookie信息。 Follow Redirects记录整
13、个过程,过程请求为 sub-sampler。 Use KeepAlive:请求头信息 Connection:keep-alive,是否保持连接。 Use multipart/form-data for POST:当发送 HTTP POST 请求时, 使用 Content-Type: multipart/form-data (默认为application/x-www-form-urlencoded) 发送 ,默认不 选中(上传文件时使用)。 Browser-compatible headers:当使用 multipart/form-data, 请求 头 Content-Type、 Content
14、-Transfer-Encoding被忽略; Parameters:设置 url请求参数 Encode?:是否 urlencode,参数有 “ =” 、 “ &” 、 “ ? ” 等特殊符号时一定要选择。 Include Equals?:自动添加 参数名和值之间的等号。 Body data:设置 post消息体 Send Files:发送 文件相关设置 Proxy Server:代理 相关 设置 Retrieve All Embedded Resources from HTML Files:当 该选项被选中时, jmeter在发出 HTTP请求并获得响应的 HTML文件内容后,还对该 HTML
15、进行分析并 获取 HTML中包含的所有资源(图片、 flash等),默认不 选中 Use concurrent pool.size:发送 资源 请求时 使用并发连接,并设定并发连接数 Embedded URLs must match:使用正则表达式过滤特定页面 ,如 http:/ Source address type/Source address field:模拟请求发起的 ip地址(可参数化) Use as monitor:在 Monitor Results里查看服务器性能数据 (tomcat5以上, http:/10.211.93.207:9098/manager/status) Sav
16、e response as MD5 hash:响应保存为 32位的 MD5 加密字符Sampler( HTTP Request) -2 Pattern Matching Rules: Contains, matches:正则表达式匹配部分和全部。如 (注意转义 ):.* Equals,Substring:纯 文本,区分大 小写。 Not:取反 Apply to: main sample only , sub-sample only , main sample and sub sample, jmeter variable 一般勾选 “ main sample only” 就 足够了,因为我们一
17、个请求,实质上只有一个请求。 但是当我们发一个请求时,可以触发多个服务器请求,如 ajax,抑或是 重定向的 请求( 勾选了 “ 跟随重定向 ” )那么 就有main sample 和 sub-sample之分了 。 Jmeter Variable:比较 自定义 变量值。 Response Field toTest: Text Response:服务器 响应 文本(不包括头信息), 一般普通 http响应,都勾选这个。 Document(Text):一切 Apache Tika 的 支持 服务器响应,包括文本响应,还 支持 PDF, Office, Audio, Video formats。
18、jmeter会用Apache Tika 去解析服务器响应内容,会很耗内存,而且也很容易解析失败。所以一般普通 http请求,不要选择这个。 URL Sampled:是 对 sample的 url进行断言。如果请求没有重定向(302),那么就是这个就是请求 url。 如果有重定向(且跟随重定向),那么 url就包含请求 url 和 重定向 url( main sample and sub sample )Assertionsp Jmeter 提供 了很多种断言 ,经常 使用 的是响应断言( Response Assertion)。Response Field Test:Response code
19、:http响应代码,如 101,200,302,404,501等。但当 我们 要验证 4xx and 5xx 等 http响应代码时,需要勾选 “ Ignore status” 。因为当 http 响应代码为 400,500时, jmeter默认这个 请求失败。Response Message:http响应 代码对应的响应信息, 例如下面的: OK, FoundHTTP/1.1 200 OkHTTP/1.1 302 FoundResponse Header : 响应头 信息 Write result to file/Read from file: 保存结果到文件 Filename:选择本地文件
20、 LogDisplay Only:根据 结果是否成功,筛选后 显示和记录 Configure:配置 需要保存到结果的 内容(勾选项) Sampler显示区 : 响应 数据默认 以 Text显示, 还可以选择 Html等进行 渲染 ;其中 RegExp Tester可以测试正则表达式。 Scroll automatically:自动滚动到最后一个 结果显示区 : Sampler result: Thread Name: 线程组名称、 Sample Start: 启动开始时间 Load time: 加载时长、 Latency: 等待时长 Size in bytes: 发送的数据总大小、 Heade
21、rs size in bytes: 发送头大小、Body size in bytes: 发送数据的其余部分大小 Sample Count: 发送统计、 Error Count: 错误统计 Response code: 返回码、 Response message: 返回信息、 Response headers: 返回的头部信息 Request:发送的请求信息 Response data:响应的内容 Assertion Result:查看断言结果(点击各个 sampler下的断言列表时显示)Listener( View Results Tree)p Jmeter 提供了多种监听器。 查看结 果树一般不在进行负载测试期间 使用,因为它占用了大量的资源(内存和 CPU) 。但做功能测试 或在测试计划的调试和 验证阶段 使用 它很好用。 ( 其他 Listener:Aggregate Report、 View Results in Table) TEXT下结果 查询区 : 忽略大小写 /正则查询