如何使用JMeter进行性能和负载测试

JMeter负载测试

JMeter负载测试是使用一个名为Apache JMeter的负载测试工具完成的测试过程,Apache JMeter是一个基于Java的开源桌面应用程序。它还有助于分析高负载下的整体服务器。

JMeter性能测试是使用Apache JMeter测试Web应用程序性能的测试方法。JMeter for Performance Testing有助于同时测试静态和动态资源,有助于发现并发用户JMeter性能测试,包括Web应用的负载测试和压力测试。

Performance Testing using Jmeter
Performance Testing using Jmeter

Apache JMeter测试工具在性能测试方面提供以下好处

  • JMeter既可以用来测试静态资源(比如JavaScript和HTML)的性能,也可以用来测试动态资源(比如JSP、Servlet和AJAX)的性能。
  • JMeter可以发现网站可以处理的最大并发用户数
  • JMeter提供各种性能报告的图形分析。

JMeter性能测试包括:

Performance Testing using Jmeter
Performance Testing using Jmeter
  • 负载测试:通过模拟多个用户并发访问Web服务来对预期使用情况进行建模。
  • 压力测试:每台Web服务器都有最大负载能力。当负载超过极限时,压力测试的目的是找出Web服务器可以处理的最大负载。

下图显示了JMeter负载测试如何模拟重负载:

Performance Testing using Jmeter
Performance Testing using Jmeter

在JMeter中创建性能测试计划

在本教程中,我们将对1000名用户进行baidu.com的性能分析 。在测试目标Web应用程序的性能之前,我们应该确定-

  • 正常负载:访问网站的平均用户数
  • 高负载:访问网站的最大用户数
  • 这次测试的目标是什么?

以下是这个实际示例的路线图

Performance Testing using Jmeter
Performance Testing using Jmeter

步骤1) 添加线程组

  1. 启动JMeter
  2. 在树上选择测试计划
  3. 添加线程组

右键单击“测试计划”,添加一个新的线程组:Add->Thread(Users)->Thread Group

Performance Testing using Jmeter
Performance Testing using Jmeter

在线程组控制面板中,输入线程属性,如下所示:

Performance Testing using Jmeter
Performance Testing using Jmeter
  • 线程数:100(连接到目标网站的用户数:100)
  • 循环次数:10(执行测试次数)
  • 启动期:100

线程计数和循环计数不同。

Performance Testing using Jmeter
Performance Testing using Jmeter

启动周期告诉JMeter在启动下一个用户之前要延迟多长时间。例如,如果我们有100个用户和100秒的启动周期,那么启动用户之间的延迟将是1秒(100秒/100个用户)

Performance Testing using Jmeter

步骤2) 添加JMeter元素

现在我们确定此测试中的JMeter元素。这些元素包括

  • HTTP求默认值

可以通过右键单击Thread Group并选择:Add->Config Element->HTTP request Defaults来添加此元素。

Performance Testing using Jmeter
Performance Testing using Jmeter

在Http request Defaults控制面板中,输入正在测试的网站名称(http://www.google.com)

Performance Testing using Jmeter
Performance Testing using Jmeter
  • HTTP请求

右键单击Thread Group并选择:Add->Sampler->HTTP Request。

Performance Testing using Jmeter
Performance Testing using Jmeter

在HTTP求控制面板中,路径字段指示要将哪个URL求发送到Google服务器。

Performance Testing using Jmeter
Performance Testing using Jmeter

例如,如果在路径字段中输入“日历”。JMeter将创建指向谷歌服务器的URL求http://www.google.com/calendar

Performance Testing using Jmeter
Performance Testing using Jmeter

如果保留路径字段 空白 jeter将创建指向谷歌服务器的url求http://www.google.com。 在此测试中,将路径字段保留为空,以使JMeter创建到Google服务器的http://www.google.com请求。

步骤3) 添加图形结果

JMeter可以将测试结果以Graph格式显示。 右键单击“测试计划”,选择“添加”->“侦听器”->“绘制结果图”

Performance Testing using Jmeter
Performance Testing using Jmeter

步骤4) 运行测试并获得测试结果

按工具栏上的Run(运行)按钮(Ctrl+R)开始软件测试过程。将看到测试结果实时显示在Graph上。 下图显示了一个测试计划的图表,其中我们模拟了访问www.google.com网站的100个用户。

Performance Testing using Jmeter
Performance Testing using Jmeter

在图片底部,有以下用颜色表示的统计数据:

  • 黑色:当前发送的样本总数。
  • 蓝色 :当前发送的所有样本的平均值。
  • 红色 :当前标准偏差。
  • 绿色 :吞吐率,表示服务器每分钟处理的求数

让我们在下图中分析一下Google服务器的性能。

Performance Testing using Jmeter
Performance Testing using Jmeter

要分析被测Web服务器的性能,应该关注两个参数

  • 吞吐量
  • 偏差

吞吐量是最重要的参数。它表示吞吐量越高,服务器性能越好。 在本次测试中,Google服务器的吞吐量为1491.193/分钟。该值相当高,因此我们可以得出结论,Google服务器具有良好的性能 偏差用红色表示-它表示与平均值的偏差。越小越好。

让我们将Google服务器的性能与其他Web服务器进行比较。这是网站http://www.yahoo.com/的性能测试结果(可以选择其他网站)

Performance Testing using Jmeter
Performance Testing using Jmeter

被测网站http://www.yahoo.com的吞吐量为867.326/分钟。这意味着该服务器每分钟处理867.326个求,低于谷歌。 偏差为2689,远高于谷歌(577) 。所以我们可以确定这个网站的性能低于谷歌服务器。

注意:上面的值取决于几个因素,比如Google当前的服务器负载,网速,CPU能力等等。所以不要惊慌!

故障排除:

如果在运行上述方案时遇到此问题.执行以下操作

  1. 检查是否通过代理连接到Internet。如果是,删除代理。
  2. 打开一个新的Jeter实例
  3. 在Jeter中打开PerformanceTestPlan.jmx
  4. 双击线程组->图形结果
  5. 运行测试

IT赶路人

专注IT知识分享