【测试基础】jmeter工具介绍及使用方法
目录一、Jmeter介绍二、Jmeter文件目录介绍1.1bin目录1.2docs目录1.3printable_docs目录1.4lib目录三、Jmeter的基础配置汉化设置主题修改四、Jmeter的基本操作基本元件作用域元件的执行顺序Jemter重要的三个组件五、Jmeter参数化常用方式用户定义的变量用户参数CSVDataSetConfig函数六、Jmeter断言响应断言Json断言断言持续时间:七、Jmeter关联(提取器、数据库、逻辑控制器等)提取器八、Jmeter数据库连接与操作连接准备:直连数据库使用:九、Jmeter的逻辑控制器if控制器循环控制器ForEach控制器十、Jmeter定时器同步定时器常数吞吐量定时器十一、Jmeter的分布式原理:分布式相关注意事项:分布式配置一、Jmeter介绍jmeter是Apache组织基于java开发的一款性能测试软件。是一款开源、小巧、支持多协议(HTTP/HTTPS、JDBC、JAVA...等等)、众多插件为一体的强大工具。它不仅做性能测试,还可以做接口的自动化测试。
优点
1.开源免费2.体积小3.有丰富的第三方插件缺点
1.不支持ip欺骗2.报表的精度比LR要差二、Jmeter文件目录介绍1.1bin目录存放可执行文件和配置文件
jmeter.bat:windows的启动文件jmeter.log:日志文件jmeter.sh:linux的启动文件jmeter-properties:系统配置文件jmeter-server.bat:windows分布式测试要用到的服务器配置jmeter-server:linux分布式测试要用到的服务器配置1.2docs目录docs:是Jmeter的api文档,可打开api/index.html页面来查看1.3printable_docs目录printable_docs的usermanual子目录下的内容是Jmeter的用户手册文档。usermanual下component_reference.html是最常用到的核心元件帮助文档。提示:printable_docs的demos子目录下有些常用Jmeter脚本案例,可以参考。
1.4lib目录该目录用来存放Jmeter依赖的jar包和用户扩展所依赖的jar包。
三、Jmeter的基础配置汉化设置临时修改:
options--->language--->chooselanguage--->Chinese
永久修改:
打开jmeter.properties
修改language=zh_CN
重启jmeter
主题修改选项--->主题--->选择对应的主题,重启jmeter
四、Jmeter的基本操作启动jmeter添加线程组添加http请求的取样器,并配置添加查询结果树的监听器点击"启动"运行jmeter,并查看结果基本元件线程组:模拟用户的。配置元件:进行测试环境和测试数据初始化--->比如自动化脚本中setup前置处理器:对要发送请求进行预处理--->比如自动化脚本中参数化取样器:往服务器发送请求--->比如自动化脚本中发请求的代码后置处理器:对收到服务器的响应进行数据提取--->比如自动化脚本中获取响应中特定字段语句断言:将收到响应结果又预期结果做对比--->比如自动化脚本中断言监听器:查看测试脚本运行后结果和日志--->比如自动化脚本中测试报告定时器:等待一段时间--->比如自动化脚本中sleep测试片段:封装基本功能,不单独执行,需要通过脚本的调用才能执行--->比如自动化脚本中封装函数
作用域核心:根据测试计划中的树形结构的父子节点来确定的
原则:
取样器是没有作用域的。逻辑控制器:只对其子节点下的所有元件有效。其他的元件。如果其父节点是取样器,则只对父节点取样器有效。如果其父节点不是取样器,对父节点下所有子节点及节点中子节点有效。元件的执行顺序顺序:配置元件--->前置处理器--->定时器--->取样器--->后置处理器--->断言--->监听器
注意:
配置元件、前置处理器、后置处理器都需要依赖取样器才能运行在同一个作用域下,相同类型元件执行顺序是从上到下来按顺序执行Jemter重要的三个组件线程组
作用:通过配置线程组中的线程数来模拟用户。线程数就是用户数,线程组是用户组
特点:
模拟多用户取样器和逻辑控制器必须在线程组下使用一个测试计划下可以添加多个线程组,可以并行或串行执行并行:默认情况下线程组为并行执行串行:在测试计划下勾上"独立运行每个线程组"线程组的分类:
setup线程组:拥有测试前预处理操作,在所有线程组中最先执行普通线程组:来执行业务测试脚本teardown线程组:用来测试后的后置处理(数据、恢复环境)的操作,在所有的线程组中最后执行线程组的属性
线程数:模拟虚拟用户数
Ramp-up时间:虚拟用户启动所需要的时间
循环次数:
配置指定次数:控制脚本运行执行的次数配置循环永远需要调度器配置使用运行时间:脚本执行的时间延迟启动时间:脚本等待特定的时间才能开始运行http请求
http协议:可以填写为HTTP或者HTTPS,默认不填写为HTTP协议
http主机名/ip: 如:http://baidu.com 80
端口:可以填写为任意值。默认不填写时为80端口
请求发方法:HTTP协议所有支持的所有方法
路径:目录+参数
编码格式:默认IOS国际标准,推荐使用utf-8
查看结果树
取样器结果:统计请求相关的信息
请求:HTTP请求的请求头和请求体的详情信息
响应:HTTP响应的响应头和响应体的详情信息
jmeter响应中出现乱码时:
修改jmeter.properties文件中,sampleresult.default.encoding=utf-8重启jmeter五、Jmeter参数化常用方式用户定义的变量方式1:添加:线程组--->配置元件--->用户自定义变量配置:参数名+参数值使用:在HTTP请求的取样器中引用定义变量。$(参数名)方式2:配置:在测试计划中去配置用户定义变量使用:在HTTP请求的取样器中引用定义变量。$(参数名)应用场景:当大量脚本中的参数值需要修改时候,直接修改用户定义变量中值会更方便用户参数添加:线程组--->前置处理器--->用户参数配置:
参数:添加变量参数值:添加用户--->针对每个用户配置不同的参数值使用:在HTTP请求的取样器中引用定义的变量。$(参数名)
应用场景:可以针对不同的用户获取到不同的参数值
CSVDataSetConfig添加:线程组--->配置元件--->CSV数据文件设置
编写CSV数据文件(.csv作为后缀):
多个参数写为多列,其中用逗号分隔多组参数值,则使用多行来设置配置:
路径文件编码:UTF-8变量名称:从CSV数据文件中读取的数据需要保存变量名。有多个变量时用逗号分隔是否忽略首行:是否从CSV文件第一行中开始读取分隔符:要求与CSV数据文件中多列的分隔符一致遇到文件结束符是否再次循环:默认TRUE遇到文件结束符是否停止线程:当前一个参数为FALSE,该参数有效,一般设置为TRUE函数counter:
TRUE:每个用户使用独立计数器FALSE:所有的用户使用全局计数器引用:在取样器中使用$(__counter(FALSE,))来引用对应值
建议大家使用函数方式
六、Jmeter断言作用:让脚本自动化执行过程中,能够自动判定执行结果是否符合要求时候,需要添加断言
响应断言添加:线程组--->HTTP请求--->断言--->响应断言
配置:
测试字段:需要检查的字段模式匹配规则:需要使用什么规则来进行检查测试模式:需要校验的值Json断言适用于返回的HTTP响应为JSON格式
添加:线程组--->HTTP请求--->断言--->JSON断言
配置:
JSONPATH:$.weatherinfo.city勾选"Addltonalassertvalue"在expectedvalue里填写期望值断言持续时间:适用于性能测试时,检查HTTP请求的响应时间是否超过预期值
添加:线程组--->HTTP请求--->断言--->断言持续时间
配置:预期时间
七、Jmeter关联(提取器、数据库、逻辑控制器等)当多个请求之间有依赖关系,后一个请求的参数需要使用前一个请求的响应数据时,需要用到关联。
分类:
正则表达式提取器xpath提取器Json提取器提取器正则提取器
添加:线程组--->HTTP请求--->后置处理器--->正则表达式提取器
配置:
要检查的响应字段:默认主体引用名称:匹配后的数据要存储的变量名正则表达式:(.*?)
,"()"里是要保存的数据模板:$1$数据1代表上面正则表达式中第几个()匹配数字:0代表随机值、1代表第一个结果,-1代表所有结果缺省值:当没有匹配上时将该值保存到变量里xpath提取器
添加:线程组--->HTTP请求--->后置处理器--->xpath提取器
配置:
引用名称:匹配后的数据要存储的变量名xpathpath:xpath匹配规则匹配数字:0代表随机值、1代表第一个结果,-1代表所有结果缺省值:当没有匹配上时将该值保存到变量里json提取器
添加:线程组--->HTTP请求--->后置处理器--->json提取器
配置:
引用名称:匹配后的数据要存储的变量名jsonpath:json路径。$.weatherinfo.city引用:直接引用变量名即可
八、Jmeter数据库连接与操作连接准备:打开数据库,确定数据库的表及对应的字段加载mysql的jdbc驱动方法一:将jdbc驱动通过测试计划,浏览的方式添加方式二:将jdbc驱动jar包放入到libext目录下,并重启jmeter配置jdbcconnectionconfigurationcreatedpoolname:给连接池命名,用于后续引用数据库URL:jdbc:mysql://127.0.0.1:3306/test用户名密码直连数据库使用:添加JDBCRequest:取样器下添加配置:配置连接池名称配置SQL语句配置保存的变量名如果SQL语句返回了多个参数,输入相同个数的变量名来保存HTTP断言中,就可以引用变量来进行判断九、Jmeter的逻辑控制器控制元件的执行顺序
if控制器添加:线程组--->逻辑控制器--->if控制器
配置:
使用JS预发:"${name}"=="baidu"使用jmeter函数的方式:${__jexl3("${name}"=="baidu",)}推荐使用函数的方式循环控制器指定HTTP请求执行特定的次数
添加:线程组--->逻辑控制器--->循环控制器
配置:次数
循环控制器中的循环次数配置m与线程组中的循环次数n配置对比:
关系:如果同时配置,循环控制器下HTTP请求实际执行的次数应该是n*m区别:这两个循环次数作用域不同ForEach控制器与用户定义的变量或正则表达式提取器配合使用,循环读取返回的变量值,执行一次或多次。
与用户定义的变量配合
添加:线程组--->逻辑控制器--->ForEach控制器
配置:
用户定义的变量
变量名:固定前缀+连续数字ForEach控制器
变量前缀:用户定义的变量中配置的固定前缀起始数字:连续数字的最小值-1结束数字:连续数字的最大值输出变量名称:依次读取变量值后存储到参数中,共HTTP请求来引用HTTP请求:
引用输出的变量名称与正则表达式配合使用
先通过正则表达式提取器,提取出请求中所有满足条件数据添加ForEach控制器,并配置提取所有满足条件的数据,并保存为变量在其子节点下,添加HTTP请求并引用变量,可循环读取正则表达式里匹配的所有数据十、Jmeter定时器同步定时器需要进行大量用户的并发测试时,为了让用户能真正同时执行,添加"同步定时器"使其阻塞线程,直到线程达到了预先设置数值,才开始进行取样器操作。
配置:
并发数:同事达到多少用户才开始发请求
超时时间:
必须配置:否则当虚拟用户数无法被并发数整除时,会导致有部分用户挂起无法执行配置不能太短:必须比并发数加载时间要长。否则无法达到并发数的要求,数据就会被释放掉常数吞吐量定时器用于性能测试中模拟用户产生业务压力,通过给定QPS来对服务器发送固定频率要求。
添加:线程组--->HTTP取样器--->常数吞吐量定时器
配置:吞吐量的值QPS*60
十一、Jmeter的分布式原理:分布式测试时分为一台控制机和多台代理机控制机负责发布测试任务给代理机代理机接收任务并向服务器发送请求,并接收服务器返回的响应,然后将测试结果返回给控制机由控制机对测试结果数据进行汇总统计分布式相关注意事项:所有的测试机防火墙都已经关闭所有的测试机及服务器在同一个网络内所有的测试机的jmeter版本和JDK版本完全相同关闭jmeter里的RMISSL开关分布式配置配置
代理机server_port:不重复。如果使用多个机器做代理机,可不用配置关闭RMISSL控制机remote_server:所有代理机的IP+port,有多个代理机时要使用逗号分隔关闭RMISSL运行
代理机jmeter-server.bat运行控制机:jmeter.bat运行控制代理机执行脚本,运行--->远程启动所有ai的使用方法
AI(人工智能)是一种通过计算机和机器学习技术实现人类智能的技术。使用AI的方法与应用非常广泛,包括自然语言处理、图像识别、智能推荐、预测分析等领域。通常使用AI的步骤如下:
定义问题:首先需要明确你需要解决的问题是什么,例如,你想通过语音识别来实现自动文字转换。
收集数据:为了训练AI模型需要大量的数据,你需要从各种渠道收集相关的数据,并清理和整理数据。
选择模型:根据你的问题和数据,选择最适合解决该问题的AI模型,例如,你可以选择卷积神经网络模型用于图像识别任务。
训练模型:使用你的数据集进行模型训练,这会花费一定的时间和计算资源。
测试模型:对训练好的模型进行测试,检查模型的预测准确性和性能。
部署模型:一旦确定模型工作正常,可以将它部署到生产环境中去。
以上就是使用AI的一般步骤,但它只是一个大概的流程,具体的实现方法和步骤会因不同的应用而有所不同。
Cisco Packet Tracer软件介绍与使用方法
先来看看软件介绍:PacketTracer是Cisco公司为思科网络技术学院开发的一款模拟软件,一种创新且功能强大的网络仿真工具,用于练习,发现和故障排除。可以用来模拟CCNA的实验。这里提供思科PacketTracer官网下载地址:戳我.
安装并熟悉界面和操作1.安装好以后启动,软件界面如图:2.我们在工作区中添加一个2600XM路由器。首先我们在设备类型库中选择路由器,特定设备库中单击2600XM路由器,然后在工作区中单击一下就可以把2600XM路由器添加到工作区中了。我们用同样的方式再添加一个2950-24交换机和两台PC。注意我们可以按住Ctrl键再单击相应设备以连续添加设备。3.接下来我们要选取合适的线型将设备连接起来。我们可以根据设备间的不同接口选择特定的线型来连接,当然如果我们只是想快速的建立网络拓扑而不考虑线型选择时我们可以选择自动连线。各线缆两端有不同颜色的圆点,它们分别表示什么样的含义呢?
链路圆点的状态含义亮绿色物理连接准备就绪,还没有LineProtocolstatus的指示闪烁的绿色连接激活红色物理连接不通,没有信号黄色交换机端口处于"阻塞"状态名词解释:
DHCP动态主机控制协议subnetMask子网掩码defaultGateway(默认路由)默认网关router路由器switches交换机hubs集线器wirelessDevices无线设备WANemulation仿真广域网界面基本组件介绍:Routers路由器(Ctrl+Alt+R)Switches交换机(Ctrl+Alt+S)
Hubs集线器(Ctrl+Alt+U)
WielessDevices无线设备(Ctrl+Alt+W)
Connections通讯链路(Ctrl+Alt+O)我们一般选择连接线中的第一个,它会帮自动选择合适的链路的类型
EndDevices终端设备(Ctrl+Alt+V)
WANEmualtionWAN仿真(Ctrl+Alt+N)
CustomMadeDevices定制设备(Ctrl+Alt+T)
MultiuserConnection多用户连接器(Ctrl+Alt+N)
接下来用一个具体的例子来介绍基本使用方法最终的效果图:
①192.168.0.*/24②192.168.1.*/24③192.168.2.*/24④192.168.3.*/24⑤192.168.4.*/24首先添加如下设备:当我们想要想使用自动连接线连接各个设备时,发现报错:原因在于默认的2620XM路由器端口不够用,我们需要在设备互连前要添加所需的路由器模块(添加模块时注意要关闭电源)。我们为Router0添加NM-4E模块(将模块添加到空缺处即可,删除模块时将模块拖回到原处即可)。关闭后再次将NM-4E模块拖拽进空缺处,然后启动路由器电源,即可。上面三个路由器都重复此操作,全部换上NM-4E路由单元。构成以下网络拓扑图:红色灯表示物理连接不通,没有信号,如何把红色灯变成绿色呢?很简单,只需把已连接的端口状态打开即可。如图,我们可以把鼠标移动到红点上,会显示当前的线路连接的是设备的哪个端口。找到对应的端口后,鼠标单击设备,把对应端口的PortStatus打开。重复以上步骤,把所有的指示灯全部变绿。但是,我们还需要进一步的配置,才能真正将其联通。安装了NM-4E路由单元的路由器,具有5个可连接端口:这些端口是我们配置路由的关键。我们可以看到Router0与PC0机器相连接的是Fa0/0端口。配置Router0的FastEthernet0/0接口:配置主机PC0的IP地址信息(必须确保与上面Router0的相应接口配置匹配!!!!):对于路由器而言每个端口必须保证IP地址唯一。重复以上步骤,直到,所有的设备都分配了唯一的IP地址,并且路由器的端口都配置配置正确。