首页 > 其他分享 >Jmeter性能测试知识点

Jmeter性能测试知识点

时间:2023-05-16 15:14:18浏览次数:44  
标签:知识点 测试 启动 性能 线程 设置 aaz217 Jmeter

性能测试

一、测试理论:

1. 性能指标概念:

①吞吐量:每秒服务器处理请求个数和事务数

②响应时间:一个任务(事务)完成所花费的时间

③并发数:同时操作的用户个数

④最大并发数:在给定的预期平均响应时间下,系统最多能支持多少个并发用户。这个数据就是实际可以同时使用系统的用户数

⑤TPS:每秒传输的事物处理个数,即服务器每秒处理的事务数。TPS值越大,一秒钟处理的事务数就越多,说明处理速度越快,软件的效率就越好。计算:二八原理(80%的业务量在20%的时间里完成,确定tps)

⑥同步定时器(设置集合点,保证并发数同时运行):

A.Number of Simulated Users to Groupby:每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。如果设置为10,即集合10个线程等待,同时发送请求。注意:设置此数量不能超过线程组中的线程数量。

B.Timeout in milliseconds:如果设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users toGroup"中设置的值才释放。如果一直没有达到,则会一直等待,除非手动关闭执行。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users toGroup"中设置的值,Timer将不再等待,释放已到达的线程。默认为0

2. 测试类型概念:

①基准测试:是一种测量和评估软件性能指标的活动。在特定时期(系统稳定时)通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。基准测试可以比较系统在版本迭代过程中,各个性能指标的变化,为系统的版本迭代优化提供参考。

②负载测试:系统在不同负载下的性能表现,通过负载测试能够测试出系统在各种负载下的性能变化曲线,发现系统的性能拐点,从而找出系统的最佳性能。举例:用户并发测试(递增并发用户数,查看系统性能指标变化)。

③稳定性测试:通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。

 

二、实现步骤

1. 负载测试寻找性能瓶颈,找出最大并发数

①修改线程数一次一次增加线程数

②jp@gc - Stepping Thread Group

Rps平均值/汇合报告平均响应时间

this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程

first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程

then start:初次启动多少个线程;若设置为 0 个,表示初次不启动线程

next add:之后每次启动多少个线程;若设置为 10个,表示每个梯次启动 10 个线程

threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间;若设置为 30 秒,每梯次启动完线程之后再运行 30 秒

using ramp-up:启动线程的时间;若设置为 5 秒,表示每次启动线程都持续 5 秒(和基础线程组的ramp-up一样意思)

then hold load for:线程全部启动完之后持续运行多长时间,如图:设置为 60 秒,表示 100 个线程全部启动完之后再持续运行 60 秒

finally,stop/threads every:多长时间释放多少个线程;若设置为 5 个和 1 秒,表示持续负载结束之后每 1 秒钟释放 5 个线程

 

2. 线程组设置:

①线程数:设置线程数,可以在测试计划的用户自定义变量中设置变量

②ramp-up时间: 设置启动所有线程需要的时间

③循环次数:设置线程组中的每个线程循环次数

④永远:勾选此项表示线程组中的线程永久执行下去

⑤same user on each iteration:每次迭代使用相同的线程

⑥延迟创建线程直到需要:如果勾选了此选项,那么线程只会在合适的需要用到的时候创建

⑦调度器:线程调度器包含持续时间、启动延迟两个选项

⑧持续时间:设置线程组运行多长时间,单位是秒

⑨启动延迟:设置线程启动延时时间,单位是秒

 

3. 怎样分析查看性能问题

网络宽带问题、访问数被限制、内存不足、服务器性能不足、sql语句查询太慢、主键冲突、索引失效

4. 设置全局变量

①在一个请求响应中,通过JSON Extractor获取局部变量值,命名为token

②用后置处理器BeanShell PostProcessor设置全部变量

脚本输入:${__setProperty(tokenG,${token},true)},tokeG即为全部变量名

③使用全局变量,${__P(tokenG,)

5. While循环、if语句

(${__jexl3("${flag}"=="0",)})

6. JSR233后置处理程序

①下载插件jython-standalone-2.7.2放入lib目录下

②脚本例子:

import sys

import json

reload(sys)

sys.setdefaultencoding("utf8")#定义脚本编码格式

null=None

aaz217 ,aac001,aab001 = '',’’,’’

datas = vars.get("data")#获取参数值

Id_Card = vars.get("Id_Card")

for data in eval(datas):

if dict(data)["aac002"] == str(Id_Card):

aaz217 = data["aaz217"]

aab001 = data["aab001"]

aac001 = data["aac001"]

vars.put("aaz217",str(aaz217))#存储aaz217到变量aaz217

vars.put("aab001",str(aab001))

vars.put("aac001",str(aac001))

SampleResult.setResponseData("{}".format(aaz217))#设置响应信息

SampleResult.setResponseData("{}".format(aab001))

SampleResult.setResponseData("{}".format(aac001))

③调用第三方库

要注意的是,用C写的第三方库,jython是调用不了的。jython只支持python2,不支持python3.所以还要专门装一个用于压测的python2.7.如果要调用第三方库,在代码里添加搜索路径就行了。在代码最前面加上下面3句

import sys

sys.path.append('C:\Users\laiqu\AppData\Local\ProgrPython\Python27\Lib")

sys.path.append('C:\Users\laigu\AppData\Local\Progrms\Python\Python27\Lib\site-packages")

7. CSV数据文件设置

8. 调试取样器

显示存储变量的值

9. 同步定时器

当模拟用户组的数量全部运行完后才会进行接下来的请求,相当于设置集合点

 

10. 录制

①打开浏览器的计算机代理设置,找到手动代理,将代理IP设置为本机,端口为8888点击保存

②打开jmeter添加一个HTTP代理服务器。

Global Settings:全局设置

端口:设置JMeter代理服务器所要用的端口,不能被占用,否则JMeter无法使用。默认启用8888端口。可以在CMD中使用netstat -ano|findstr "8888"查看端口是否被占用。

HTTPS Domains:编写代理主机的域名或者主机IP地址,可以对指定地址进行请求录制。

test plan content:测试计划内容。

目标控制器:当进行录制时必须选择一个线程组将录制的接口信息保存到线程组下

Requests Filtering:请求过滤

包含模式:使用它可以过滤URL路径,只有取样器的完整URL匹配通过,该正则表达式才会被记录。

排除模式:使用它可以过滤URL,满足该条件的请求不会被录制。

.*\.(js|css|PNG|jpg|ico|png|gif).*

③所有准备都好了之后,点击启动开始录制

 

标签:知识点,测试,启动,性能,线程,设置,aaz217,Jmeter
From: https://www.cnblogs.com/1527275083gj/p/17405687.html

相关文章

  • E840-TTL(4G05-DGC)型号4G/LTE数传模块快速入门测试教程
    亿佰特LTE数传模块E840-TTL(4G05-DGC)快速入门测试教程E840-TTL(4G05-DGC)是亿佰特推出的4G/LTE数传模块产品,是为实现串口设备与网络服务器,通过网络相互传输数据而开发的产品,该4G/LTE数传模块产品软件功能完善,覆盖绝大多数常规应用场景,用户只需通过简单的设置,即可实现串口到网络......
  • SVD计算速度测试
    importtimeimporttensorflowastftf.compat.v1.disable_eager_execution()#%%平均2.7秒。发现conda创建tf1.15速度非常慢,应该环境配置有问题A=tf.linalg.svd(tf.random.normal([2000,2000]))withtf.compat.v1.Session()assess:sess.run(tf.compat.v1.glob......
  • 07-为什么要做接口自动化测试
    目前系统研发多为前后端分离,当后端接口研发完成后,可以不依赖前端界面通过接口测试提前发现问题并解决。同时由于软件迭代周期不断缩短,开发新功能后又担心影响原有功能,可以通过接口自动化进行原有功能快速回归测试,将更多精力专注于迭代功能测试,这样才能放心地发布产品。由此看来,接......
  • 硬件知识点
    个人自查使用,如有错漏,友善发言。多数摘自网络,文章太多,不在此枚举,感谢帮助。1、串口和并口(1)串口:串口是一个泛称,简单来说就是串行端口,什么是串行?与并行相对应,串行就是将一条数据线分时复用,在不同的时刻传递不同的数据,从而达到减少数据线的目的。UART、RS232、RS485都遵循类似的......
  • 传输文件测试一下群晖2.5G网卡性能表现如何,实操验证
    各位观众好,欢迎来到黑菌的博客网站,淘宝同名,欢迎咨询!1、A文件所在的机器是N5105的群晖上B机器也安装了群晖,接了一个2.5G的网卡2、使用同步软件CloudSync,传输远程文件夹ESXI中的文件到本地的FTP文件夹 3、效果看图偶有波动是文件有大小,不是一份文件基本上稳定在260上下......
  • 频谱仪设计基于FPGA的频谱仪设计,可以测试分析多种频率的频谱,分辨率100HZ,配套资料多达1
    频谱仪设计基于FPGA的频谱仪设计,可以测试分析多种频率的频谱,分辨率100HZ,配套资料多达100M,东西复杂ID:982500594354361311......
  • Python自动化测试篇:Selenium
    所谓自动糊测试就是用程序模拟用户在浏览器上的操作,可以通过程序实现在文本框中自动输入内容,点击按钮等操作。一:安装chromedriverhttps://chromedriver.storage.googleapis.com/index.html或者https://npm.taobao.org/mirrors/chromedriver/下载和自己的浏览器版本号一致的驱......
  • 4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)
    目录Hadoop系列文章目录一、pom.xml二、junit测试类三、操作类(帮助类)四、高可用环境的操作类本文编写了java对HDFS的常见操作,并且均测试通过。其功能包含构造conf、设置系统环境变量、创建目录、判断文件是否存在、获取文件/目录的大小等,具体见下图。本文分为四部分,即pom.xml、ju......
  • 浅谈接口测试及常用工具介绍
    前言目前软件测试行业做功能测试和接口测试的人相对比较多。API测试是一种作为集成测试的一部分、通过直接控制被测应用的接口(API)来确定是否在功能、可靠性、性能和安全方面达到预期的软件测试活动。由于API都没有GUI界面,API测试都是在通讯层进行的。现在API测试在自动化......
  • 【jmeter】测试报告性能指标分析
    1、聚合报告指标聚合报告列表项介绍1、Label:请求的名称,就是脚本中Sampler的名称。2、#Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10=100次。3、Average(平均值):默认情况下是单个Request的平均响应时间,当使用了TransactionCont......