性能测试是一种非功能测试技术,用于确定系统参数在各种工作负载下的响应性和稳定性。性能测试衡量系统的质量属性,例如可扩展性、可靠性和资源使用情况。性能测试帮助产品所有者确定产品解决方案的基准。性能测试的目标不仅是发现代码中的错误,而且要找出瓶颈。在性能测试中,质量工程师使用任何可用于性能测试的工具来模拟真实的用户场景。
Apache JMeter 是一个开源 Java 桌面应用程序,旨在执行负载测试和检查 Web 应用程序的功能行为。质量工程师可以使用 JMeter 来分析和测量 Web 应用程序或各种服务(包括 Rest API)的响应时间。它可用于模拟服务器、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。JMeter 与 JDK 5 或更高版本兼容。
此外,JMeter 通过让您创建带有断言的测试脚本来验证您的应用程序是否返回了您期望的结果,从而帮助您对应用程序进行回归测试。为了获得最大的灵活性,JMeter 允许您使用正则表达式创建这些断言。请注意,JMeter 不是浏览器——它在协议级别工作。
JMeter 支持的协议包括:
HTTP、HTTPS 站点
网页服务
通过 JDBC 驱动程序的数据库
目录 – LDAP
ETC
SMTP
FTP 服务
JMeter 特点:
它有一个简单且用户友好的 GUI。
它独立于平台。在 Windows 上,可以使用 JMeter.bat 文件启动 JMeter 测试,在 Unix/Linux 上,通过单击 JMeter Shell Scripts 启动测试。
它以 XML 格式创建和存储其测试计划。这表明我们可以使用文本编辑器生成或创建测试计划。
它是一个多线程框架,用于使用多个线程进行并发采样。
它有助于自动化功能测试。
它是如何工作的?
JMeter 模拟一组用户向目标服务器发送请求,并通过表格、图表等返回显示目标服务器/应用程序性能/功能的统计信息(图 1、3-5)。
【图1 | JMeter模拟]
要使用 JMeter,必须定义测试计划,这意味着必须指定:
要访问的 http 或其他 URL 或要运行的 SQL 查询
如何存储/显示结果
运行多少线程来创建所需的负载/压力
在 JMeter 术语中,这些称为线程、采样器、侦听器等。完整的测试计划包含所有这些。要创建它,请右键单击 JMeter GUI 左侧窗格中的“Test Plan”并添加所需的元素(图 2)。
【图2 | JMeter的测试元素]
Apache JMeter 如何模拟多个用户?
让我们看一下网页请求是如何从用户的浏览器发送到网络服务器的,以及网页最终是如何显示的。理解这个工作流程将使我们有机会想象 JMeter 如何适应这个工作流程,以及它如何能像浏览器一样做同样的事情。
步骤 1:用户在浏览器中执行操作,即键入站点地址、单击链接或填写表单并按提交。
在 JMeter 中,这不是必需的。
第 2 步:浏览器创建 HTTP 格式的请求并将其发送到服务器。
在 JMeter 中,这成为一个 HTTP 请求采样器。HTTP 请求采样器以 HTTP 格式发送请求。
第 3 步:Web 服务器接收 HTTP 请求,创建 HTML 响应,并将 HTML 发送回浏览器。
在 JMeter 中,对于服务器来说,它是相同的请求。
第 4 步:浏览器接收 HTML。
在 JMeter 中,HTTP 请求采样器接收 HTML 响应并将其记录下来以供分析。
第 5 步:浏览器在屏幕上呈现 HTML,以便用户可以看到文本和颜色 (GUI)。
JMeter 不会像浏览器那样呈现 HTML。
那么,就 JMeter 而言,是什么促成了一次用户事务呢?
HTTP 请求采样器以 HTTP 格式发送请求。》 服务器接收 HTTP 请求,创建 HTML 响应并将 HTML 发送回 HTTP 请求采样器。》 HTTP 请求采样器接收 HTML 响应并记录它以供分析。
当我们在 JMeter 测试计划中添加一个 HTTP Request Sampler 时,它会存储一个网页调用和接收序列。我们可以将其称为单用户事务。一旦我们将这个告诉 JMeter,它就可以做同样的事情 n – 次数。它还同时多次执行此操作。
最后,JMeter 通过制作采样器的副本并在单独的线程中运行它们来模拟多个用户。
因为 JMeter 不完全是浏览器,所以 HTTP 请求采样器使所有接收到的数据都可用于进一步分析。View Tree Listener 用于可视化接收到的响应。View Tree Listener 是了解发送了什么请求、响应是什么以及事务结果的好方法。
为什么选择 JMeter?
JMeter 是一个开源工具,拥有众多虚拟用户的支持。
脚本在 JMeter 中不是必需的,但像 Loadrunner 这样的工具需要在 C 中编写脚本。
与其他工具相比,它可以轻松进行参数化和关联。
虚拟用户的设置不需要额外的配置,因为它会在 JVM 上自动生成 v-users。
JMeter 是跨平台的。
【图4 | 以表格形式报告]
【图5 | 以图形格式报告]
结论
JMeter 工具易于用于在 Web 应用程序服务器上注入负载。开发和质量工程师可以使用 JMeter 工具轻松模拟服务器上的繁重负载,无需为虚拟用户进行额外设置,无需额外的脚本编写工作,并且可以以图表和表格摘要的形式测量准确的响应时间。JMeter 结果图表有助于定位瓶颈并提高 Web 服务器应用程序的性能。质量工程师可以通过分析 JMeter 结果图表来识别罪魁祸首 RestAPI。JMeter 工具还用于执行服务器基准测试和可扩展性测试。
相关文章