首页 > 其他分享 >性能测试学习笔记(四)

性能测试学习笔记(四)

时间:2023-10-06 14:33:35浏览次数:32  
标签:场景 性能 业务 笔记 响应 TPS 测试 参数 数据

一、关联和断言

满足如下条件的数据都是需要关联的:1. 数据是由服务器端生成的;2. 数据在每一次请求时都是动态变化的;3. 数据在后续的请求中需要再发送出去。

JMeter中常用于数据关联的组件:1、JSON提取器(提取JSON格式的响应数据) 2、Xpath提取器(提取HTML格式的响应数据) 3、正则表达式提取器(提取任意格式的响应数据) 4、跨线程组关联使用JMeter属性(__setProperty函数保存成JMeter属性,__property函数读取JMeter属性,函数执行需求使用BeanShell取样器)

断言就是判断服务端的返回是不是正确的。JMeter中常用断言的组件:1、响应断言(对任意格式的响应数据进行断言) 2、JSON断言(对JSON格式的响应数据进行断言) 3、持续时间断言(对响应时间进行断言) 【JMeter在请求的返回层面有个自动判断机制,通过响应状态码】

二、参数化

1、参数化数据应该用多少数据量?

参数化数据要用到多少取决于场景,例如有时候做脚本时考虑的是,有多少线程(Thread)就配置多少用户,让每个线程在同一个用户上循环执行。这样的用户参数化配置,只能满足一些比较特定的场景。比如说,用户在早上登录系统之后,一直在系统中带着登录session做业务操作,并且不会退出,只有在下班时才退出系统。但在有些场景中,这是完全错误的配置方式。比如说电商系统,用同一个用户账号不停循环购买商品,就是不符合真实场景的。

2、参数化数据从哪里来?

  • 用户输入的数据在后台数据库中已存在,这类数据必须查询数据库之后再参数化到工具中
    • 存在后台数据库中
    • 需要用户主动输入
    • 用户输入的数据会和后台数据库中的数据做比对
  • 用户输入的数据在后台数据库中不存在。在业务流中,这些数据会 Insert 或 Update 到数据库中,这类数据必须通过压力工具做参数化,同时也必须满足业务规则
    • 数据库中原本不存在这些数据
    • 在脚本执行成功后会将这些数据 insert 或 update 到数据库中
    • 每个用户输入的数据可能相同,也可能不同,这取决于业务特点

3、参数多与少的选择对系统压力有什么影响?

如果测试的系统使用了不同的缓存系统,在参数化时要考虑缓存系统的容量,如果参数取得过多,对系统的压力就会大;参数取得过少,不符合真实场景中的数据量,则无法测试出系统真实的压力。

4、参数化数据在数据库中的直方图是否均衡?

对于参数化数据来说,如果数据取自于数据库,通常要检查一下数据库中的数据直方图。 对于直接从生产上拿的数据来说,数据的分布更为精准。但是对于一些在测试环境中造的数据,则一定要在造数据之后,检查下数据分布是否与生产一致。

5、JMeter参数化实现方式

  • 定义变量(基础)
    • 用户自定义变量(全局参数)
    • 用户参数(针对每个用户取不同的值,但是不能针对同一个用户的不同循环取不同的值)
  • 文件定义的方式(测试数据都是固定的情况)
    • CSV数据文件(针对每个用户的每次循环取不同的值)
  • 数据库的方式(灵活)
  • 函数的方式(灵活)
    • counter函数

三、场景设计

在这个场景设计中,首先,要列出自己要测试的业务比例、业务目标 TPS 和响应时间指标。

 

在做项目的时候,经常会这样制定一个统一的响应时间指标,这样做也不是完全因为懒,更多的是根本不知道如何定每个业务的时间。但我们性能测试人员要知道,这显然是不对的,因为业务不同,响应时间指标也应该不同,合理的做法是给出每个业务的响应时间指标。

1、基准性能场景

首先,我们要知道,每个业务在系统中的最大容量是多少。分别对单业务进行测试,统计出最大TPS与最大TPS时对应的响应时间。

2、容量性能场景

根据业务比例的不同,设计不同的线程进行测试。重点是:1.场景不断 2.控制比例

可以从上面的数据中看到,业务目标 TPS 已经达到,响应时间也没有超过指标, 如果业务要扩展的话,有两个业务将会先受到影响,那就是业务 4 和业务 5,因为它们的测试 TPS 和最大 TPS 最为接近。这是在我们推算业务扩展之后,再做架构分析时要重点考虑的内容。如果是在实际的项目中,这里会标记一个业务扩展风险。

3、稳定性性能场景

在资料中看到,稳定性测试应该用最大TPS的 80% 来跑。这似乎又是一个由28原则导致的惯性思维,在具体的项目实施过程中,完全没有必要遵守这些看似有道理,实则对具体项目没什么用的原则。系统用最大 TPS 能跑下来,业务一直很正常,稳定性目标能达到,为什么不能用最大 TPS 来跑呢?至于用多大的 TPS 来运行,又有什么关系?只要系统在正常处理,资源没有出现问题,也没有报错,那这个场景就是有效的,目标也是能达到的。

4、异常性能场景

异常性能场景的目标是为了判断所要执行的操作对系统产生的影响,如果 TPS 不稳定,怎么能看出来异常点?当然是稳定无抖动的 TPS 是最容易做出异常动作产生的影响。

三、监控设计

监控是性能分析承上启下的关键点。监控设计应考虑如下几点:1、分析系统的架构。在知道架构中使用的组件之后,再针对每个组件进行监控。2、要有层次,要有步骤。应该是先全局,后定向定量分析 3、通过分析全局、定向、分层的监控数据做分析,再根据分析的结果决定下一步要收集 什么信息,然后找到完整的证据链。

通过全局监控项逐步学习了解定向监控项。

 

 

标签:场景,性能,业务,笔记,响应,TPS,测试,参数,数据
From: https://www.cnblogs.com/wsmbszyn/p/17744557.html

相关文章

  • 自动化测试工具列表
    1、LambdaTest(收费,免费试用100分钟)https://www.lambdatest.com/selenium-automation?utm_source=STH&utm_medium=Listing&utm_campaign=Automation-tools&utm_term=2、......
  • 读书笔记(20231006)
    80%的时间,投入到你最感兴趣的事情当中,20%的时间探索人生边界。身份标签、能力标签、市场标签三个维度出发,带大家重新梳理自己的定位,让大家的标签自带“吸金力”。学习了之后,一定要有输出。这个“输出”可以是写一篇完整的学习笔记,分享给别人听,也可以是,把课上的方法用起来......
  • 【python自动化】七月PytestAutoApi开源框架学习笔记(二)
    执行流程注:请先阅读作者的README.md文档https://gitee.com/yu_xiao_qi/pytest-auto-api2/blob/master/README.md本节内容目录如下:文章目录执行流程目录结构参数配置入口文件-run.pypytest.initest_case初始化数据缓存解析yaml测试数据测试用例执行conftest.py用例demo分析加载yaml......
  • 【AI测试】python文字图像识别tesseract
    [AI测试]python文字图像识别tesseractgithub官网:https://github.com/tesseract-ocr/tesseractpython版本:https://github.com/madmaze/pytesseractOCR,即OpticalCharacterRecognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们......
  • 【AI测试】已落地-python文字图像识别PaddleOCR
    python文字图像识别PaddleOCRPaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。国产之光,百度开源的paddleocr开源地址:https://github.com/PaddlePaddle/PaddleOCR官方电子书:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7......
  • 数据库备份和Shell基础测试及AWK(运维)
    第一题:简述一下如何用mysql命令进行备份和恢复,请以test库为例,创建一个备份,并再用此备份恢复备份备份步骤:备份test库:使用mysqldump命令备份test库,并将备份写入一个.sql文件中。命令示例:mysqldump-u用户名-p密码test>backup.sql恢复的步骤:恢复备份:使用mysql命令将备份文件中的......
  • stepci 开源api 自动测试框架
    stepci是基于nodejs开发的,开源api自动测试框架包含的特性语言无关 可以基于yaml,json,js定义支持多种框架 rest,graphl,grpc,trpc,soap自托管 可以集成到ci/cd中,同时可以自己部署与行可集成 可以很好的与其他工具集成说明stepci目前也支持负载测试(预览状态),同时还支持f......
  • 密码协议学习笔记(8.1):秘密分享
    秘密分享的背景与概念:密钥丢失是一件很麻烦的事情,例如,保存私钥的硬盘被不小心格式化,或者持有密钥的管理员被车创了,会导致重要文件不能打开等严重后果.避免此类后果的方式之一是创建多个密钥备份,但备份越多意味着密钥泄露的风险越大.另一个思路是秘密分享,其思想是将秘密分......
  • CS231N Assignment1 softmax 笔记
    -为Softmax分类器实现完全矢量化的损失函数-实现解析梯度完全矢量化的表达式使用数值梯度检查实现结果使用验证集调整学习率和正则化强度使用SGD优化损失函数可视化最终学习的权重softmax.ipynb库、绘图设置和数据的导入和SVM一样Traindatashape:(49000,3073)Tra......
  • Learning Hard C# 学习笔记: 8.C#中的特性 - 委托
    前几章,讲的都是面向对象语言共同的内容,本章开始是C#的独有特性-委托.委托是C#最重要的特性之一,C#后面的所有特性基本都是建立在委托的基础上的.8.1C#委托是什么例如,法庭上律师为当事人辩护,他真正执行的是当事人的陈词,律师就相当于一个委托对象,而当事人则委托律......