做书评的网站,网络营销推广系统,网站建设必学课程,wordpress头部图片Jmeter的使用
1.Jmeter简介
以下内容来自Jmeter中文网http://www.jmeter.com.cn/jieshao#xff0c;很好的解释了Jmeter的作用#xff1a;
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试#xff0c;它最初被设计用于Web应用测试#xf…Jmeter的使用
1.Jmeter简介
以下内容来自Jmeter中文网http://www.jmeter.com.cn/jieshao很好的解释了Jmeter的作用
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载来自不同压力类别下测试它们的强度和分析整体性能。另外JMeter能够对应用程序做功能/回归测试通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源文件ServletPerl脚本java 对象数据库和查询FTP服务器等等的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
JMeter的作用
1.能够对HTTP和FTP服务器进行压力和性能测试 也可以对任何数据库进行同样的测试通过JDBC。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
JMeter的高可扩展性
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能包括Javascript。
5.支持脚本编程的取样器在1.9.2及以上版本支持BeanShell。
在设计阶段JMeter能够充当HTTP PROXY代理来记录IE/NETSCAPE的HTTP请求也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后测试运行时可以方便的设置重复次数和并发度线程数来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。
相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件并且将其装载到内存让用户通过不同的菜单调用。 2.Jmeter的安装
进入官网https://jmeter.apache.org/找到下载入口下载对应的版本 下载安装好后点击jmeter安装目录下的bin/jmeter.bat就可以运行了运行界面如下 按如下方式可以设置中文 如上方式设置重启后还是变成英文如果想要设置永久有效可以找到安装目录下的/bin/jmeter.propertise文件做如下设置
languagezh-CN3.创建Jmeter测试计划
测试计划定义如何测试并定义一个布局。例如web应用程序以及客户端服务器应用程序它可以被看作容器运行测试一个完整的测试包括一个或多个元素如线程组、逻辑控制器、样品产生控制器、监听器、定时器、断言和配置元素。测试计划必须至少有一个线程组。
3.1.添加和删除元素
通过鼠标右键点击测试计划Test Plan节点并从add列表中选择一个新的元素就可以添加一个测试计划。另外元素可以从文件中加载并通过选择merge或open选项添加。例如添加一个线程组原件测试计划 要删除一个元素确保元素被选中右键单击该元素然后选择remove删除选项 3.2.加载和保存元素
从文件加载一个元素右键单击您要添加的加载元件对现有树元素并选择“merge”合并选项。选择文件保存元素。 JMeter会合并的元素放到树上。 为了保存树元素元素上点击右键并选择选择另存为…选项。 JMeter会保存选定的元素再加上它下面的所有子元素。默认情况下不保存JMeter 的元素需要明确地保存它如前面提到的。
3.3.保存测试计划
可以保存整个测试计划到本地方便随时使用。点击菜单栏File文件选项选择保存Save或Save Test Plan as 3.4.运行/停止测试计划
从Run菜单项中选择运行-启动“Start ”控制 R。当运行JMeter是它显示了一个绿色的小盒子右手端的部分只是在菜单栏下。 停止测试方法有两种
使用stopControl ‘.’。这立即停止线程如果可能的话。使用shutdownControl ‘,’。这就要求线程停止在任何当前工作的结束。
4.Jmeter的主要元素
4.1.主要元件
通过上面的创建可能你还不了解什么是测试计划什么是线程组那么我们就来了解下Jmeter的元素组件吧
测试计划 是使用Jmeter测试的起点为其他测试元件提供一个容器影响其作用范围内的所有组件**线程组**代表一定数量的用户它可以用来模拟用户并发送请求实际的请求内容在Sampler中定义它被线程组包含**配置原件**维护Sampler需要的配置信息并根据实际的需要修改请求的内容**前置处理器**负责在请求之前工作常用来修改请求设置在其作用范围内的每一个sampler元件之前执行**定时器**负责定义请求之间的延迟间隔在其作用范围内的每一个sampler有效**取样器(Sampler)**是性能测试中向服务器发送请求记录响应信息、响应时间的最小单元如HTTP Request、Sampler、FTP Request Sampler、TCP Request Sampler、JDBC Request Sampler等。每一种不同类型的Sampler可以根据设置的参数向服务器发送不同类型的请求**后置处理器**负责请求之后的工作常用获取返回的值在其作用范围内的每一个sampler元件之后执行**断言**用来判断请求响应的结果是否如用户所期望的在其作用范围内的对每一个sampler元件执行后的结果进行校验**监听器**负责收集测试结果同时确定结果显示的方式在其作用范围内对每一个sampler元件的信息收集并呈现**逻辑控制器**可以定义Jmeter发送请求的行为逻辑它与Sampler结合使用可以模拟复杂的请求序列。
4.2.执行顺序和接口测试流程
它们的执行顺序为
配置元件-前置处理器-定时器-取样器-后置处理程序-断言-监听器。
注意事项
1.前置处理器、后置处理器和断言等组件只能对取样器起作用因此如果在它们的作用域内没有任何取样器则不会被执行。
2.如果在同一作用域内有多个同一类型的元件则这些元件按照它们在测试计划中的上下顺序依次执行。
使用Jmeter进行接口测试的基本步骤如下
测试计划线程组HTTP Cookie管理器HTTP请求默认值HTTP请求(Sampler)断言监听(查看结果树图形结果聚合报告等。
5.测试流程详解
5.1.测试计划
打开Jmeter在菜单左侧出现测试计划Test Plan在这里测试计划我们可以把它理解成新建的空白项目在这个空白项目下可以添加一系列的接口。 5.2.线程组
添加方法右键单击Test Plan找到添加添加线程–线程组。一个线程组可以看作一个虚拟用户线程组中的每个线程都可以理解为一个虚拟用户。 **线程数**即虚拟用户数设置多少个线程数也就是设置多少虚拟用户**Ramp-Up时间(秒)**设置虚拟用户数全部启动的时长如果线程数为20秒准备时长为10秒那么需要10秒启动20个线程**循环次数**每个线程发动请求的个数如果线程数为20循环次数为10那么每个线程发送10次请求。总请求数为10*20200。如果勾选了“永远”那么所有的线程会一直发送请求直到手动点击菜单栏的停止按钮或者设置线程时间结束。
5.3.HTTP Cookie管理器
添加方法右键线程组–添加–配置元件–HTTP Cookie管理器。
HTTP Cookie管理器可以像浏览器一样存储和发送Cookie如果你要发送一个带Cookie的HTTP请求Cookie Manager会自动存储该请求的Cookies并且发送同源站点的HTTP请时都可以使用该Cookie。 5.4.HTTP请求默认值
添加方法右键线程组–添加–配置元件–HTTP请求默认值。
HTTP请求默认值是为了方便填写后续内容而设置主要填写IP和端口后续的HTTP请求就不用每次都填写IP地址和端口号了。 5.5.HTTP请求
添加方法右键线程组–添加–取样器–HTTP请求。
HTTP请求包括接口请求方法、请求路径、请求参数等。 HTTP请求各填写位置详解
名称用于标识一个取样器争取见名知义注释无作用仅用户记录可读的注释信息协议发送的HTTP请求协议默认是HTTP也可以选用HTTPS服务器名称或IP请求的服务名称或IP地址端口号默认值80方法请求所采用的方法默认是GET还可选择POST,DELETE等路径目标URL路径内容编码内容的编码方式默认为iso8859自动重定向如选中该选项当发送HTTP请求后得到的响应是301/302时Jmeter会自动重定向到新页面使用keepAlive保持Jmeter和目标服务器的活跃状态默认选中对POST请求使用multipart/from-data当发送POST请求时使用multipart/from-data方法发送默认不选中同请求一起发送参数带参数的URL请求Jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中表中的一行是参数的键值对信息。
5.6.响应断言
添加方法右键HTTP响应–添加–断言–响应断言。
检查接口是否访问成功如果检查失败会提示找不到断言内容没提示表示成功。 **Apply to:**指断言的作用范围通常发送一个请求只触发一个请求所以勾选Main sample only就可以了若发送一个请求可以触发多个服务器请求就有main sample and sub-samples了。 Main sample and sub-samples作用于主请求和子请求Main sample only仅作用于主请求Sub-samples only仅作用于子请求Jmeter Variable Name to use作用Jmeter变量输入Jmeter变量名称。 测试字段 响应文本匹配返回json数据响应代码返回200404500等状态码响应信息返回成功或失败的字样响应头匹配响应头请求头匹配请求头URL样本匹配请求的URL连接如果有重定向则则包含请求URL和 重定向URL文档文本匹配响应数据的文本形式忽略状态一个请求有多个响应断言第一个响应断言选中此项当第一个响应断言失败时可以忽略此响应结果继续进行下一个断言如果下一个断言成功则判定断言是成功的请求数据匹配请求数据。 模式匹配规则 包括响应内容包含需要匹配的内容即代表响应成功支持正则表达式匹配响应内容要完全匹配需要匹配的内容即代表响应成功大小写不敏感支持正则表达式相等响应内容要完全等于需要匹配的内容才代表成功大小写敏感不支持正则表达式字符串响应内容包含响应的内容才代表成功大小写不敏感不支持正则表达式否相当于取反结果为True勾上就是False或者如果不想用AND连接用OR选项可以用于将多个断言模式进行OR连接只要一个模式匹配断言就是成功。 **测试模式**断言的数据点击“添加”就可以添加断言的数据。
5.7.添加监听器
添加方法线程组–右键添加–监听器–查看结果树一般还须添加图形报告、聚合报告。
树状形式显示接口的访问结果包括请求结果、请求内容、服务器的响应内容。 相关参考https://blog.csdn.net/pengjiangchun/article/details/105707405?ops_request_misc%257B%2522request%255Fid%2522%253A%2522165414737616781432979561%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257Drequest_id165414737616781432979561biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105707405-null-null.142v11control,157v12controlutm_termjmeterspm1018.2226.3001.4187
http://www.jmeter.com.cn/2754.html
6.测试实例
6.1.Jmeter发送get请求
步骤测试计划—添加线程组—添加取样器—HTTP请求 接口参考网站https://www.juhe.cn/docs/api/id/65添加信息如下 key21f3d56edc75e82afaede5d8bbc2f6b1
在线程组中添加监听器—察看结果树 6.2.Jmeter发送post请求
步骤线程组—添加取样器—HTTP请求将请求方式设置为post请求。 6.3.HTTP请求默认值
目的有时候请求的数据有很多个且大部分的请求路径、参数、端口等数据相同所以不必要每个请求都添加这些数据我们可以添加HTTP请求默认值。
步骤选择线程组—添加配置元件—HTTP请求默认值。配置请求的默认值即可这样该线程组的数据都能共享到该默认值。
如上面的get和post请求的服务器名称、路径、参数key都相同我们就可以创建HTTP请求默认值把这些数据提取出来然后请求也是可达的。 6.4.响应断言
Jmeter中有个元件叫做断言Assertion它的作用和loadrunner中检查点类似用于检查测试中得到的响应数据等是否符合预期用以保证性能测试过程中数据交互与预期一致。
使用断言的目的是在request返回层面增加一层判断机制因为request成功了并不代表结果一定正确。所以通过断言我们不再会被200所迷惑而是可以通过断言看到我们请求是否真正成功。
我们添加一个http请求请求url为abc.oracleoaec.com。并在这个请求中添加响应断言。添加方式为HTTP请求—断言—响应断言 如需查看到响应断言的结果需要添加断言结果步骤为HTTP请求—监听器—断言结果。点击HTTP请求运行在断言结果中查看断言结果 6.5.用户自定义变量
之前我们在做“老黄历”的HTTP请求时只有添加的日期是不固定的每次都需要修改的。我们可以添加一组用户自定义变量以方便测试。添加步骤为线程组—添加配置元件—用户自定义变量。点击下面的添加添加需要测试的自定义变量变量以k-v形式存在 添加完自定义变量后在HTTP请求中添加的请求变量名仍然使用原有的名字值用**$(自定义变量名)**引入 6.6.参数化txt
请求登录地址https://abc.oracleoaec.com/传递两个参数mobilephone和pwd。
我们针对这个登录接口设计5条测试用例
正常登录正确的用户名和错误的密码不输入用户名不输入密码输入错误的用户名
测试步骤
添加一个新的线程取名“登录接口”添加一个HTTP请求取名“正常登录”。选择**“登录接口”的请求—添加配置元件—HTTP请求默认值** 在“正确登录”窗口添加两个参数mobilephone和pwd 添加察看结果树登录接口—添加监听器—察看结果树后点击运行查看到结果 选中“正常登录”按下CtrlShiftC复制5条测试用例并修改名字为我们需要的测试用例 根据测试用例的需求修改参数的值如不输入用户名就把用户名清空。点击察看结果树再点击上方导航栏的清除扫把按钮清除之前的结果再点击运行 此时我们发现随着测试用例的增多我们测试人员的工作也会陡然增加那么这时我们就可以引入text元件来管理测试用例它可以用来存储测试用例。添加步骤如下
点击登录接口–添加配置元件—CSV数据文件设置禁用其他用例只保留一个并修改名为测试用例 CSV数据文件设置需要引入一个文件作为测试用例的数据我们起名为jmeter_csv.txt数据为k-v结构文件内容如下 在“CSV数据文件设置”中引入文件 在“登录接口”的页面将循环次数改为5次匹配jmeter_csv.txt数据个数 在“测试用例”页面用**$(变量名)**该变量名为csv数据文件设置中的变量名称的方式引入变量 点击运行察看结果树得到想要的结果对应之前的数据 **这种方法适合批量数据的测试。**但还有一种方式更加简便那就是在本地创建一个表格将数据保存到表格中然后将数据另存为csv格式引入方式和txt方式一样。 6.7.压测百度实例
接口地址http://www.baidu.com/s?ieutf-8wdjmeter性能测试-百度搜索测试实例
请求参数
ie编码方式默认为utf-8 wd: 搜索词
添加一个线程组 添加一个HTTP取样器并添加如下数据 添加察看结果树并修改相应格式为HTML Source Formatted 添加聚合报告将线程组线程数改为10 运行分析结果 聚合报告参数详解
Label每个 JMeter 的 element例如 HTTP Request都有一个 Name 属性这里显示的就是 Name 属性的值Samples请求数——表示这次测试中一共发出了多少个请求如果模拟10个用户每个用户迭代10次那么这里显示100Average平均响应时间——默认情况下是单个 Request 的平均响应时间当使用了 Transaction Controller 时以Transaction 为单位显示平均响应时间Median中位数也就是 50 用户的响应时间90% Line90 用户的响应时间Min最小响应时间Max最大响应时间Error%错误率——错误请求数/请求总数Throughput吞吐量——默认情况下表示每秒完成的请求数Request per Second当使用了 Transaction Controller 时也可以表示类似 LoadRunner 的 Transaction per Second 数KB/Sec每秒从服务器端接收到的数据量相当于LoadRunner中的Throughput/Sec
一般而言性能测试中我们需要重点关注的数据有 #Samples 请求数Average 平均响应时间Min 最小响应时间Max 最大响应时间Error% 错误率及Throughput 吞吐量。
7.Jmeter录制web脚本
想要完成脚本录制我们需要完成如下两步 设置Jmeter相关参数 创建一个线程测试计划—添加线程组测试计划—添加非测试单元—HTTP代理服务器。要注意设置好端口和对应分组方便后期收集脚本。 此处的分组我们要匹配上面添加的线程组端口要是本地没有被占用的线程组。 设置浏览器 打开控制面板—点击Internet选项—连接—局域网设置—点击高级—HTTP地址设置为127.0.0.1端口设置为8888.也可在浏览器设置–系统–打开代理设置设置 点击HTTP代理服务器的运行按钮再点击整数确定按钮 7.1.登录脚本录制实战
登录网站http://cfgjt.cn:8981/devt-web
账号admin
密码11111111
创建代理测试计划—线程组—添加非测试元件—HTTP代理服务器设置如下 打开浏览器设置代理服务器为127.0.0.1端口为8888: 开启录制脚本并在浏览器请求网站http://cfgjt.cn:8981/devt-web进行登录 停止录制生成录制结果
测试元件—HTTP代理服务器**设置如下 打开浏览器设置代理服务器为127.0.0.1端口为8888: 开启录制脚本并在浏览器请求网站http://cfgjt.cn:8981/devt-web进行登录 停止录制生成录制结果