万字长文,带你学会JMeter的使用!!!赶紧收藏(下)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 万字长文,带你学会JMeter的使用!!!赶紧收藏

11.数据库测试计划教程

现在,我们将了解如何配置,运行和分析针对MySQL数据库的测试结果。这个示例是关于MySQL的,但是可以使用任何其他类型的数据库(如Oracle,MongoDB或其他数据库)来完成。

  • 安装MySQL

如果您的计算机中未安装MySQL,则可以从http://dev.mysql.com/downloads/下载并安装MySQL服务器,这非常容易。

  • 下载MySQL驱动程序

下载mysql connector(mysql-connector-java-5.1.6)并将其复制到jmeter的lib目录中C:\jmeter\apache-jmeter-2.11\lib

  • 启动MySQL

启动数据库服务器,以便您可以对其进行查询。

  • 建立资料库

您可以根据需要创建数据库,这只是一个非常简单的数据库的示例:

create database jmeter;``use jmeter;``create table jmeter_stuff(``id` `int, name varchar(50), description varchar(50));``insert into jmeter_stuff(``id``, name, description)VALUES(1, ``"dani"``, ``"the boss"``);``insert into jmeter_stuff(``id``, name, description)VALUES(2, ``"topo"``, ``"the worker"``);``insert into jmeter_stuff(``id``, name, description)VALUES(3, ``"tupac"``, ``"the other"``);
  • 创建测试计划

执行与上一章相同的操作,以使用新的线程组,JDBC配置类型的新配置元素和JDBC类型的新请求(采样器)创建测试计划,还添加一个侦听器以解析和查看结果与前面示例中的结果相同。唯一的区别是采样器的类型,在本例中为JDBC采样器。

  • JDBC采样器

给变量绑定池赋予一个有意义的名称,并编写一些SQL语句:

select` `* from jmeter_stuff;

image.png

  • JDBC连接配置

将新的JDBC连接配置添加到采样器。

右键单击JDBC采样器->添加连接配置

如下更改参数:

Variable Bound to Pool= same name as ``in` `the sampler``Database URl=jdbc:mysql:``//localhost``:3306``/jmeter``JDBC Driver class=com.mysql.jdbc.Driver``username=``password=``set` `username and password to your MySql credentials.

image.png

  • 保存计划并执行。
  • 使用之前配置的侦听器查看结果。

您可以按照与HTTP请求测试计划相同的方式来验证和检查输出,还可以添加预处理器,后处理器,断言或您可能需要的任何其他类型的元素。

image.png

在这种情况下,输出是select语句的结果。

您也可以通过在采样器配置中更改SQL语句来使用这种采样器来更新数据。

以下屏幕截图是有关请求响应结果的基本信息:

image.png在本章中,我们将解释如何将JMeter与JUnit结合使用。从负载和性能的角度来看,这提供了非常强大的机制来执行功能测试。

  • 首先,您需要创建一个Junit测试,如下所示:
public` `class` `JMeterTest``{`` ``public` `JMeterTest()`` ``{``   ``// just for testing purposes``   ``System.out.println( ``"calling the constructor"` `);`` ``}`` ``@Before`` ``public` `void` `setUp() ``throws` `Exception`` ``{``   ``// just for testing purposes``   ``System.out.println( ``"calling setup"` `);`` ``}`` ``@After`` ``public` `void` `tearDown() ``throws` `Exception`` ``{``   ``// just for testing purposes``   ``System.out.println( ``"calling tearDown"` `);`` ``}`` ``@Test`` ``public` `void` `testMe()`` ``{``   ``for``( ``int` `i = ``0``; i < ``30``; i++ )``   ``{``     ``// just asserting randomly in order to check what happens in each case``     ``int` `randomNumber = (``int``)( Math.random() * ``100` `);``     ``System.out.println( randomNumber );``     ``assertEquals( ``0``, randomNumber % ``2` `);``   ``}`` ``}``}

该测试主要包含几个断言,以检查JMeter如何使用它们,而本教程的目的不是详细解释单元测试或JUnit。

  • 将测试添加到JUnit目录

将单元测试打包到jar文件中,然后将其复制到目录中jmeter/lib/junit。确保jar文件包含.class字节码以及要JMeter执行的测试。在本文的最后,您可以找到一个带有pom.xml的Java项目,您可以将其直接用于生成JMeter可以使用的jar文件。您只需要编译代码:

mvn compile

或者,您可以直接在Eclipse或您喜欢的IDE中将项目导出为JAR文件,包括字节码和生成的文件。

  • 添加一个JUnit采样器请求
    image.png像我们之前看到的那样创建一个测试计划,并添加一个JUnit请求类型的采样器:Add Sampler-> Junit Request并对其进行配置,以便执行您刚刚在上面创建的测试中想要的方法。

在我们的例子中,我们将执行基于JUnit 4的方法,但是您也可以使用JUnit 3通过为此选择复选框来执行此操作。

image.png

  • 像上一章一样添加一个侦听器以查看结果
  • 运行测试计划
  • 查看结果

在这里,我们可以看到刚刚创建的JUnit测试的结果:

image.png正如我们在上面的屏幕截图中看到的,我们所有的测试(1个测试,10个循环)都失败了。这是预期的行为,因为我们希望测试失败。实际上,我们刚刚编写的单元测试没有功能意义,并且没有用。它的目的只是演示如何配置JMeter以使用此类单元测试。

本章介绍的内容可能对使用JMeter来测试应用程序的功能和业务逻辑非常有用,并且具有该应用程序提供的所有好处,这也非常有趣,因为它可以将Java语言的所有优点与Java的多语言功能相结合。JMeter。

13.记录HTTP测试

现在我们将解释如何配置JMeter来记录HTTP请求。为此,我们需要在计算机上安装Firefox,我使用的是32版。

  • 获取Firefox以使用JMeter代理

转到Firefox网络设置,然后选择手动代理选项,并将其设置为服务器localhost和端口8080(实际上这会加深您的JMeter配置)。之后,检查选项“将此代理服务器用于所有协议”。

image.png

  • 首先,我们像以前一样创建测试计划。

我们添加一个新的线程组,并为其命名。我们将线程组配置为具有50个线程,启动周期和循环数等于1时为10秒。

image.png

  • 添加HTTP请求默认值。

在我们刚创建的线程组上,添加一个新的Config元素,然后选择“ HTTP Request Defaults”。

image.png

您应在此处输入要测试的服务器名称。

  • 添加录音控制器

现在,我们向工作台添加了一个记录控制器。

选择工作台,而不是测试计划,并添加“测试脚本记录器”类型的“非测试元素”。

image.png现在,您应该独立于测试计划来独立存储工作台。保存测试计划不会保存工作台。

如下配置记录器:

image.png

  • 添加计时器

如果您希望可以在记录器中添加一个计时器(常数),则记录的每个HTTP请求都将使用此计时器。

  • 开始录音

通过单击记录器的启动按钮,您将启动JMeter代理服务器。

image.png

  • 记录应出现

如果您访问网页以发出示例HTTP请求,例如使用Firefox访问http://www.oviedin.com(按照本章第一步的说明进行配置后),您将看到不同的内容。条目将显示在测试计划中的“记录控制器”下。

image.png

这些记录实际上是在查询前面提到的网页时完成的HTTP请求。仅存储在“记录的测试脚本”中配置的过滤器中包含的记录。它们可以在您的测试计划中重新配置和使用。

14. JMeter插件

高级用户和用例可以使用不同的插件,其中有些需要额外的安装,而有些则不需要。

有很多非常有用的插件,它们允许使用高级选项来解析结果,并使用诸如http://jmeter-plugins.org/wiki/GraphsGeneratorListener/图表来分析结果。

为了使JMeter与您的持续集成工具连接并直接从CI软件(如Jenkins的“ https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin ”)中运行JMeter测试计划,还提供了可用的插件。

正如我所说的那样,插件的数量在增加,不可能一一列举,在尝试自己实现一个插件之前,最好先检查一下互联网上是否有可用的插件。

您也可以为JMeter创建自己的插件,但这超出了本文的范围。

15. JMeter最佳做法

在本文结束之前,我们将写下一些非常有用的技巧和最佳实践:

  • 尽管JMeter UI是用于配置和创建不同测试计划的非常有用且直观的工具,但是经验丰富的用户还是希望使用非GUI模式来执行它们并存储其结果。

您可以通过键入以下内容来执行此操作:

jmeter -n -t test.jmx -l test.jtl.

假设测试是您要执行的测试。您必须提供存储测试的完整路径。

  • 侦听器可以很好地解析结果,但是它们也会占用大量资源,并且会占用大量内存,因此最好在配置中使用尽可能少的侦听器。标志-l全部删除它们,建议在不需要侦听器时使用。
  • 在结果树视图中选中“仅查看错误”标志,可能您只对检查测试期间发生的错误感兴趣。
  • 在同一采样器中使用变量和循环,而不是配置仅由它们使用的变量和参数来区分的多个相似样本。
  • 创建Junit测试计划时,建议提供有意义的错误和断言消息,以使JMeter输出尽可能地易于理解,这是在这种情况下完全适用的单元测试的一般建议。
  • 使用Stop (Control + '.')。如果可能,这将立即停止线程。
  • 使用关机(Control + ',')。这要求线程在任何当前工作结束时停止。其他工具提示可从https://wiki.apache.org/jmeter/JMeterShortcuts获得。

16.总结

这就是全部。我们看到了如何安装JMeter以及如何配置它以执行各种类型的测试,例如HTTP请求,针对数据库的测试以及针对Junit的功能测试。JMeter提供了许多其他类型的测试和功能,但本教程未涵盖。本教程的目的是对应用程序进行完整描述,并说明如何配置您的第一个测试计划。我们还解释了JMeter UI的主要部分以及如何使用它,以及JMeter随附的测试计划元素。在上一章中,我们提到了使用不同的插件扩展JMeter的可能性。对于有高级需求的经验用户来说,这是非常有趣的一点。

17.资源


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
前端开发 JavaScript Java
万字长文,带你学会JMeter的使用!!!赶紧收藏(中)
万字长文,带你学会JMeter的使用!!!赶紧收藏
292 0
万字长文,带你学会JMeter的使用!!!赶紧收藏(中)
|
XML 网络协议 Oracle
万字长文,带你学会JMeter的使用!!!赶紧收藏(上)
万字长文,带你学会JMeter的使用!!!赶紧收藏
367 0
万字长文,带你学会JMeter的使用!!!赶紧收藏(上)
|
6月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
765 0
|
5月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1044 10
|
5月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
686 0
|
7月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1098 23
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
503 3
|
9月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
428 2
|
12月前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
450 1
Jmeter如何对UDP协议进行测试?