1。JMeter概述▲JMeter简介ApacheJMeter?是由Apache开发的开源软件。JMeter主要用于应用程序的功能负载测试,以衡量软件性能,也可以用于其他类型的测试,如接口测试、API测试等。▲JMeter版本不同版本的JMeter具有不同的功能,对JDK也不一样。JMeter新版本的部分功能将逐步完善,引入新的功能组件,性能将逐步提升。因此,在JMeter官网的最佳实践中,还是建议用户使用最新的JMeter版本。最新版本下载页面链接:https://jmeter.apache.org/download_jmeter.cgi。这里介绍JMeter5.2.1版本。▲JMeter和Loadrunner的区别▲JMeterGUI界面JMeter在GUI模式下运行时,窗口主要由三部分组成:1.功能区上方的菜单栏和下方的工具栏。菜单栏显示了JMeter提供的功能菜单,而工具栏中的图标是常用功能的快捷方式。2、视图区以树状结构呈现JMeter元素,其中“TestPlane”是树的根节点,每个节点都是一个JMeter元素。在此区域中,您可以通过拖动来添加或删除节点或调整节点的位置。3.内容区当在视图区选中一个JMeter元素节点时,内容区会相应地显示该元素的内容。此时,您可以查看和设置其内容。2.JMeter测试组成JMeter构建测试类似于组装一个智能电子设备,比如智能手机。一部智能手机由CPU、内存、输入输出设备(如USB接口、摄像头等)、屏幕、电池等一系列物理部件组成。JMeter测试也由一系列JMeter元素组成。JMeter提供了构建测试的所有元素。您可以随意组合这些元素来完成您想要的测试。JMeter元素有以下四种类型的测试元素:测试计划。线程组。组件:包含配置元素、预处理器、计时器、后处理器、断言和侦听器。控制器:包括采样器、逻辑控制器和测试片段。(1)测试计划测试计划描述了JMeter测试将在运行时执行的一系列步骤。一个完整的测试计划由一个或多个线程组、逻辑控制器、采样器、监听器、计时器、断言和配置元素组成。测试计划元素是JMeter测试树的根节点,是唯一的,所有测试元素节点都位于根节点下。(2)线程组在手动测试中,测试用例由测试工程师手动执行。性能测试和自动化测试的测试用例由选定的测试工具执行,而不是由测试工程师执行。JMeter执行测试的任务是由线程组完成的。例如,线程组相当于在手动测试中执行测试用例的测试工程师。线程组控制JMeter用于执行测试的线程数。模拟有多少用户(称为虚拟用户)执行测试,可以通过修改线程组中的线程数来实现。例如设置线程数为10,表示模拟10个用户执行测试。所有采样器和逻辑控制器都必须位于线程组下。从这个角度来说,JMeter的测试计划真正是从线程组开始的。其他元素,如监听器,可以直接放在测试计划下,在这种情况下它们将作用于所有线程组。一个测试计划下可以有多个线程组,多个线程组可以配置为在测试计划中并行或顺序启动。(3)组件JMeter中最基本的元素是组件,组件是JMeter测试中最小的功能单元,每个组件都有特定的功能。例如,“正则表达式提取器”组件可以实现使用正则表达式提取响应数据的功能。JMeter提供了许多组件。为了方便用户使用和管理众多组件,JMeter将多个功能相似或逻辑相关的组件归为一类,称为组件。JMeter由六个主要组件组成:配置元素、预处理器、计时器、后处理器、断言和侦听器。配置元素配置元素与采样器密切相关。类似于软件的配置文件,软件配置文件可以影响软件的行为;也可以通过配置组件,增加或修改请求内容,实现请求的定制化。预处理器预处理器在发出采样器请求之前执行一些操作。如果预处理器附加到采样器元素,它将在该采样器元素运行之前执行。预处理器通常用于在运行前修改采样器请求的设置,或更新未从响应文本中提取的变量。计时器默认情况下,JMeter线程按顺序执行采样器,不会暂停。通过在线程组中添加定时器来指定延迟。如果不加延迟,JMeter可能会在短时间内向服务器发送过多的请求,导致服务器过载而崩溃。定时器可以延迟其范围内的每个采样器的执行一段时间。后处理器后处理器在采样器请求完成后执行一些操作。如果后处理器附加到采样器元素,它将在该采样器元素运行后执行。后处理器通常用于处理响应数据并从中提取所需的值。断言断言用于验证采样器请求或相应响应是否返回预期结果。JMeter测试是否执行成功,结果是否符合预期,可以通过添加断言来验证。Listener监听器可以收集JMeter执行测试过程中的相关数据,并以树、图、报告等不同形式呈现数据。例如“GraphResults”监听器绘制响应时间图,““ViewResultsTree”监听器展示了采样器请求和响应的详细信息等。此外,一些监听器还可以将收集到的测试数据保存到文件中,以备后用。(4)ControllerSamplersampler用于构造发送给服务器进行处理的请求,即告诉JMeter如何将请求发送给服务器。例如,要发送HTTP请求,您可以选择“HTTP请求”采样器,也可以通过添加配置元素来自定义请求。Logiccontroller采样器请求默认顺序执行,满足某些情况下复杂的业务/场景需求。通过逻辑控制器,可以控制JMeter发送请求的逻辑,实现复杂的业务/场景。例如,某些请求的选择性执行、请求的循环执行、逻辑相关请求的整体执行、请求的交替执行等,都可以使用相应的逻辑控制来实现。TestFragmentTestFragment元素是一种特殊类型的控制器,与ThreadGroup元素同级。它与线程组的区别在于,除非被ModuleController或IncludeController引用,否则不会执行。测试片段主要用于测试脚本的重用。3.一个简单的JMeter测试方案以访问百度(www.baidu.com)为例。按照以下步骤完成测试计划:1.右键单击??测试计划节点并选择添加->线程(用户)->线程组。在TreadProperties下,将“NumberofThreads(users)”设置为1。2.右键单击??ThreadGroup节点并选择Add->Sampler->HTTPRequest。在Web服务器下,将“服务器名称或IP”设置为www.baidu.com。在HTTP请求下,将“路径”设置为/。3.右键单击??HTTPRequest节点并选择Add->Assertions->ResponseAssertion。在要测试的字段下,选择“响应代码”。在“PatternstoTest”项下,点击“Add”,输入200。4.继续右击HTTPRequest节点,选择Add->Listener->ViewResultsTree。5.单击“保存”快捷按钮,然后输入测试计划文件名并保存。6、点击“开始”快捷按钮执行测试,可以在“查看结果树”中查看测试结果。JMeter测试视图结果树展示如下:
