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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 万字长文,带你学会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.资源


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
前端开发 JavaScript Java
万字长文,带你学会JMeter的使用!!!赶紧收藏(中)
万字长文,带你学会JMeter的使用!!!赶紧收藏
182 0
万字长文,带你学会JMeter的使用!!!赶紧收藏(中)
|
XML 网络协议 Oracle
万字长文,带你学会JMeter的使用!!!赶紧收藏(上)
万字长文,带你学会JMeter的使用!!!赶紧收藏
255 0
万字长文,带你学会JMeter的使用!!!赶紧收藏(上)
|
3月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
174 3
|
4月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
132 2
|
5月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【8月更文挑战第5天】性能测试确保应用高负载下稳定运行。Apache JMeter与Locust是两大利器,助力识别解决性能瓶颈。本文介绍这两款工具的应用与优化技巧,并通过实战示例展示性能测试流程。首先,通过JMeter测试静态与动态资源;接着,利用Locust的Python脚本模拟HTTP请求。文中提供安装指南、命令行运行示例与性能优化建议,帮助读者掌握性能测试核心技能。
142 0
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
95 3
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
62 1
|
4月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
123 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
3月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
90 4
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
280 7
Jmeter实现WebSocket协议的接口测试方法