让我们来讲一个故事
今天和女朋友吵架了,(假设你有女朋友)。
今晚又是一个人睡沙发,这天晚上,你躺在沙发上,夜不能寐
决定学习一下这个事情——如何使用JMeter进行性能和负载测试
前言
JMeter 负载测试与性能测试
JMeter负载测试是使用名为Apache JMeter的负载测试工具完成的测试过程,Apache JMeter是基于Java的开源桌面应用程序。用于负载测试的 JMeter 是决定被测 Web 应用程序是否能够满足高负载要求的重要工具。它还有助于分析重负载下的整体服务器。
JMeter 性能测试是使用 Apache JMeter 执行的测试方法,用于测试 Web 应用程序的性能。用于性能测试的JMeter有助于测试静态和动态资源,有助于发现网站上的并发用户,并为性能测试提供各种图形分析。JMeter性能测试包括Web应用程序的负载测试和压力测试。
- Apache JMeter 测试工具在性能测试中提供以下优势
- JMeter 既可用于测试静态资源(如JavaScript和 HTML)的性能,也可用于测试动态资源(如 JSP、Servlet 和 AJAX)的性能。
- JMeter 可以发现您的网站可以处理的最大并发用户数
- JMeter 提供各种性能报告的图形分析。
JMeter 性能测试包括哪些?
那么,性能测试包括什么呢?
- 负载测试:通过模拟多个用户同时访问Web 服务来对预期使用情况进行建模。
- 压力测试:每个网络服务器都有最大负载能力。当负载超出限制时,Web 服务器开始响应缓慢并产生错误。压力测试的目的是找出Web服务器可以处理的最大负载。
下图展示了JMeter loadTesting如何模拟重负载
如何使用Jmeter进性能测试?
在测试目标 Web 应用程序的性能之前,我们应该确定 -
- 正常负载:访问您网站的平均用户数
- 重载:访问您网站的最大用户数
- 你在这次测试中的目标是什么?
这是这个实际例子的路线图
以谷歌为例子。进行一次简单的压测
步骤1)添加线程组
- 启动JMeter
- 在树上选择测试计划
- 添加线程组
右键单击“测试计划”并添加新的线程组:添加->线程(用户) ->线程组
在“线程组”控制面板中,输入“线程属性”,如下所示:
- 线程数:100(连接到目标网站的用户数:100)
- 循环计数:10(执行测试的时间数)
- 加速期:100
线程计数和循环计数不同。
Ramp-Up period 告诉 JMeter在启动下一个用户之前延迟多长时间。例如,如果我们有 100 个用户和 100 秒的 Ramp-Up 周期,则启动用户之间的延迟将为 1 秒(100 秒/100 个用户)
步骤 2) 添加 JMeter 元素
现在我们确定本次测试中有哪些 JMeter 元素。这些元素是
- HTTP 请求默认
可以通过右键单击线程组并选择:添加->配置元素-> HTTP 请求默认值来添加此元素。
在 HTTP 请求默认值控制面板中,输入要测试的网站名称 ( http://www.google.com )
- HTTP请求
右键单击线程组并选择:添加->采样器-> HTTP 请求。
在 HTTP 请求控制面板中,路径字段指示您要向 Google 服务器发送哪个URL 请求。
例如,如果您在路径字段中输入“calendar”。 JMeter 将向Google 服务器创建 URL 请求http://www.google.com/calendar
如果将 Path 字段保留为空, JMeter 将向Google 服务器创建 URL 请求http://www.google.com 。
在此测试中,您将 Path 字段保留为空,以使 JMeter 创建到 Google 服务器的 URL 请求http://www.google.com 。
步骤3)添加图形结果
JMeter可以以Graph的形式显示测试结果。
右键单击测试计划,添加->侦听器->图形结果
步骤4)运行测试并获取测试结果
按工具栏上的运行按钮 (Ctrl + R) 开始软件测试过程。您将看到测试结果实时显示在图表上。
下图展示了一个测试计划的图表,其中我们模拟了访问网站www.google.com 的100 个用户。
图片底部有以下统计数据,用颜色表示:
- 黑色:当前发送的样本总数。
- 蓝色:当前发送的所有样本的平均值。
- 红色:当前标准差。
- 绿色:吞吐量,表示服务器每分钟处理的请求数
我们来分析下图Google服务器的性能。
要分析被测Web服务器的性能,您应该关注2个参数
- 吞吐量
- 偏差
吞吐量是最重要的参数。它代表了服务器处理重负载的能力。吞吐量越高,服务器性能越好。
本次测试中,Google服务器的吞吐量为1,491.193/分钟。这意味着 Google 服务器每分钟可以处理 1,491.193 个请求。这个值相当高,所以我们可以断定Google服务器具有良好的性能,谷歌好有钱。
偏差以红色显示——表示与平均值的偏差。越小越好。
总结
性能测试是软件测试的一个重要部分,它的主要目的是确定和评价系统性能的一些重要参数,例如响应时间、吞吐量、资源利用率和可扩展性。以下是进行性能测试的一些主要原因:
- 确定性能基准: 通过性能测试,可以确定系统在特定条件下的性能基准。
- 验证系统性能要求: 性能测试可以帮助确定系统是否满足预定的性能要求。
- 找出瓶颈: 通过性能测试,可以找出系统的瓶颈,如是否存在CPU过载、I/O问题、网络瓶颈或者内存限制。
- 确保系统性能满足用户预期: 通过性能测试,可以确保系统在负载增加的情况下仍然能够提供满足用户预期的服务。
- 预测系统行为: 对于负载的增加、硬件更改或软件升级,性能测试可以帮助快速预测系统的行为。
- 降低运营风险: 系统性能问题可能导致用户满意度下降,利润减少,甚至法律责任。进行性能测试可以降低这些风险。
在软件的整个开发和部署周期中,性能测试在确保软件产品的成功中起着关键作用。无论是在软件的初步开发阶段,还是在后续的版本升级和维护阶段,性能测试都是必不可少的。
以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。 咱们下篇文章见,Bye~👋