【银行测试】银行系统项目-性能测试压测,场景设计分析...

news2025/3/13 0:35:43

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、性能测试的四个方面

完整的性能测试可以分为四个方面:

1)测试策略制定;
2)性能脚本编写;
3)被测系统监控
4)性能瓶颈调优。

2、测试需求分析

1)业务场景分析

测试银行核心系统时将柜员签到、签退、业务操作、批量等众多交易放在同一场景中执行,这样的场景在现实中是否存在?

测试POS、ATM等渠道时将查询、动账类交易各按50%的比例分配,这样的比例是否正确?

所有的性能测试都是以复现实际业务场景为目标。因此业务场景分析和选取务必严谨。业务场景应该从时间和空间两个角度考虑:

时间角度:

分别以一年、一月、一天的角度观察,被测系统是否存在业务高峰时段。各高峰时段的重点交易是什么,交易比例如何。

空间角度:

根据各分行业务特点不同,被测系统是否存在不同的高峰场景和交易,操作交易的柜员数量及一般操作时间是多少。

业务场景分析阶段应向业务、研发、运维等多部门了解被测系统需求,但就数据准确度而言,应多参考生产日志。

对升级改造类系统,场景分析的数据可从老系统的生产日志中获取;对新开发的系统,分析数据可从业务上有关联的其他系统中获取,同时参考业务部门意见。

典型业务场景可以不止一个,但一定要明确各场景中的交易和比例,不要模拟一个不存在的大混合!

2)负载目标计算

与项目管理中的SMART原则类似,业务场景需转换成可量化、可衡量、可实现的负载目标才能进行性能测试,而负载目标要根据不同场景分别计算。

根据上阶段收集到“原始”数据,本阶段可计算或指定出各种间接和直接的负载目标值,一般负载目标多从两种角度考虑:

前端角度:

在线用户数量:间接负载目标值,可理解为所有能操作被测交易的用户(柜员)数量。
平均操作时间(思考时间):间接负载目标值,与在线用户数量一同计算业务并发数量。
业务并发数量:典型场景中集中操作(不是绝对并发)交易的用户(柜员)数量。

后端角度:

每秒交易数量(TPS):根据日志计算出的被测系统应承受的每秒交易数量。
交易响应时间(TRT):与TPS对应,负载场景下交易应达到的响应时间。
吞度量(Throughout):LoadRunner中吞度量是以每秒收到的字节数计算,其实TPS也是吞吐量的一种,根据不同被测系统计算对应的吞吐量。

系统并发数量:区别于业务并发数量,系统并发数量更趋近于绝对并发。对长连接系统来说系统并发就等于允许的连接数,对短连接系统来说更多取决于架构。

被测系统CPU、Mem、Disk等指标值:多为指定值,如CPU利用率不高于80%等。

前端负载目标需要通过大量、广泛的业务和日志统计才能得出,如需记录下高峰时段操作交易的用户数量、估算用户状态比例、统计操作习惯等,由于考虑到人的因素,因此前端负载很难计算精确。

前端负载目标适合交易关联不大、操作用户分散、无具体业务量要求的系统,如内控管理、培训考核、网银主页等(以B/S架构为主)。

后端负载目标则比较容易计算,如当前某省对公汇兑类交易日均8万笔,则TPS=80000/(66060)=3.7笔/秒(对公按6小时计算);

核心系统联机交易平均响应时间在3秒以下等。后端负载目标适合交易关联度大、操作用户相对集中、有具体业务量要求的系统,以银行核心业务系统为主。

负责目标需要针对不同类型的被测系统计算合理的目标值,同时还需考虑2/8原则,未来业务量、用户量扩展等因素,这里不做赘述。

3、测试环境设计

1)硬件环境设计

大部分性能测试的硬件环境与生产相去甚远,受品牌、型号、部署方式(集群个数减少,软负载均衡代替硬负载均衡)等多种因素限制,无法直接将测试环境下的性能结果向生产环境做比例放大。

因此硬件环境设计主要关注应用架构与生产环境一致(如应用、数据库服务器必须为集群方式),尽量减少性能测试中的硬件资源瓶颈(如数据库存储必须为SAN,发压与被测系统间网络带宽必须为1000M)。

2)软件环境设计

软件测试环境可从两个方面考虑:

基础配置:

确认操作系统、中间件、数据库和被测系统的版本与补丁与生产环境一致,但操作系统、中间件、数据库的内部参数应根据测试硬件环境做适当调整,可参考生产中的设置比例。

数据库分区、索引等必须与生产或预计投产时一致。

外联系统:

尽量减少外联系统,因为外联系统越多,测试链条越长,环境越难维护,问题越难定位。可适当在被测系统中做挡板程序,模拟与外联系统的应答,但必须保证被测系统中的逻辑分支没有被屏蔽。

3)铺底数据策略

性能铺底数据量的大小和分布情况会对测试结果产生极大影响,是场景设计阶段的重中之重!测试前对铺底数据的构造可从以下四个方面考虑:

表分区情况:

确认测试环境与生产环境(或预计投产后)的表分区和索引分区规划一致,结合表清理策略确认典型场景中各分区、各表中的数据存量大小和分布情况。

表清理策略:

确认生产环境(或预计投产后)的数据库表(尤其业务热表)清理和备份策略,与表分区情况配合,预铺数据并确保测试数据库表中数据存量与生产保持同一量级。

表维护策略:

确认当前生产数据库表(尤其热表)和索引统计值更新、rebuild和reorg等操作的频度,在数据预铺中适当更新统计值,切勿在测试环境中频繁执行统计值更新等操作,造成虚假的性能表现。

如下图,更新统计值后表和索引的相关信息会统计正确,性能将得到一定程度的提升。

合理的业务数据:

确认铺底数据中的柜员、行部、角色、权限、待处理任务等业务数据是否符合实际情况,切勿为图省事而创建超级行部、全能柜员和过量的待处理任务。

4、测试场景设计

1)发压数据策略

测试发压数据应在数据铺底时一同考虑,但发压数据需要和压力工具配合使用,可从以下四个方面考虑:

表分区情况:

确认发压数据覆盖各表分区,且在分区中也需尽量离散,不要集中操作(主要是查询)同一范围内的数据。

表维护策略:

通常生产环境中数据库表在日终结束后执行统计值更新,对应第二天营业时的数据状态,除柜员签到外,其余典型场景均发生在更靠后的营业时段。

因此不要在刚刚执行完统计值更新的环境中执行正式的性能测试,建议再执行一段时间的数据预铺,模拟行部营业一段时间后的业务,这时再执行正式的性能测试,并记录结果。

被测交易分支:

在能力允许的情况下应尽量多的阅读被测交易源码,或向开发人员了解程序逻辑和交易分支,确认发压数据可覆盖程序中所有重点路径。避免造成该复现的问题没有复现,该出现的瓶颈没有出现。

合理的业务数据:

与发压工具配合,确认在测试过程中没有同一柜员并发操作交易,没有超出合理范围的待处理任务,以日峰TPS为负载目标时不要同时执行疲劳测试,这样会导致交易量远远大于实际。

2)测试并发设计

并发设计与负载目标紧密关联,同样可分为前端、后端两种方式:

前端角度:

使用工具模拟的并发数量代表业务并发用户数量,一个并发进程或线程即模拟一个操作交易的柜员,脚本中设置thinktime模拟平均操作时间,维持典型场景中各交易的用户比例,并做等比例递增,关注此时被测系统的处理能力。

但需注意的是,受thinktime和响应时间等影响,业务并发数量≠系统并发数量,所以不能在结论中说“被测系统只能承受XX并发”。

且业务并发数量与在线用户数量的换算不可能完全精确,所以也不能用类似10个业务并发即代表100个在线用户的粗略换算为结论。

后端角度:

使用工具模拟的并发数量不代表用户数量,也不完全等价于系统并发数量,它仅通过并发的形式对被测系统产生压力。

由于后端角度更关注TPS,因此并发递增时各交易之间的并发比例可能会变化,响应时间变慢的交易会增加更多并发以维持预期TPS。

后端角度重点关注并发增加时的TPS和响应时间变化趋势,确定被测系统的处理能力。

5、测试策略维护

测试策略应在测试执行前确定,执行过程中不做大的变更,但仍需根据测试结果不断反思和维护策略,确保性能测试能够真实复现生产场景。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不要被现实的限制所束缚,勇敢地冲破自我设限。相信自己的能力,敢于追求梦想,只有拼尽全力奋斗,才能创造属于自己的辉煌人生。

莫让失败打败你,每一次跌倒都是站起的力量。坚持努力,积极进取,相信自己的潜能,勇往直前,终将成就不凡的人生传奇。

勇敢追求自己的梦想,奋斗不息,没有什么能够阻止你前进的脚步。坚定信念,毫不气馁,只有拼尽全力,才能创造出辉煌的人生篇章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 使用定时任务

在Linux中,你可以使用cron(定时任务管理器)来设置和管理定时任务。以下是使用cron的基本步骤 编辑定时任务列表 打开终端,输入以下命令来编辑当前用户的定时任务列表 crontab -e如果是要编辑系统范围的定时任务,可以…

【Spring】Spring统一功能处理

Spring统一功能处理 拦截器拦截器什么是拦截器拦截器的基本使用定义拦截器注册配置拦截器 拦截器详解拦截器的拦截路径配置拦截器实现原理初始化处理请求 适配器模式 统一数据返回格式统一数据返回格式快速入门 统一异常处理 拦截器 场景: 我们要对一个网站实现强制登陆的功能…

基于Pytorch框架深度学的垃圾分类智能识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 垃圾分类智能识别系统是一种基于深度学习技术的智能系统,用于对垃圾进行分类和识别。它使用Pytorch框架…

安装python第三方库后,在pycharm中不能正常导入

python小白学习opencv,使用pip安装完opencv库后import cv2报错,按照如下设置解决: 需要正确设置python解释器路径

mybatis多表映射-对多关联

1、建库建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

halcon视觉缺陷检测常用的6种方法

一、缺陷检测综述 缺陷检测是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证。首先常见缺陷:凹凸、污点瑕疵、划痕、裂缝、探伤等。常用的手法有六大金刚(在halcon中的ocv和印刷检测是针对印刷行业的检测,有对应算子封装): 1.blob+特征 2.blob+差分+特征 3.光度…

重点车辆安全监测预警技术方案

目录 1.系统架构 2.详细设计 2.1驾驶员信息监控 2.1.1驾驶员基本信息管理 2.1.2人车匹配信息 2.1.3驾驶员在线状态管理 2.2车辆状态信息管理 2.2.1车辆信息管理 2.1.2车辆在路状态管理 2.3重点车辆安全监测预警系统云平台 2.3.1云平台需求分析 2.3.2 设计思想 2.4.…

【Spring教程24】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例代码示例

目录 1:创建Maven项目,并导入对应的jar包2:创建控制器类3:创建配置类4:创建Tomcat的Servlet容器配置类5:配置Tomcat环境6:启动运行项目7:浏览器访问8:知识点总结 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现&#xff0…

SSL 数字证书的一些细节

参考:TLS/SSL 协议详解(6) SSL 数字证书的一些细节1 证书验证 地址:https://wonderful.blog.csdn.net/article/details/77867063 参考:TLS/SSL协议详解 (7) SSL 数字证书的一些细节2 地址:https://wonderful.blog.csdn.net/articl…

Windows下nginx的启动,重启,关闭等功能bat脚本

echo off rem 提供Windows下nginx的启动,重启,关闭功能echo begincls ::ngxin 所在的盘符 set NGINX_PATHG:::nginx 所在目录 set NGINX_DIRG:\projects\nginx-1.24.0\ color 0a TITLE Nginx 管理程序增强版CLSecho. echo. ** Nginx 管理程序 *** echo.…

C语言动态内存经典笔试题分析

C语言动态内存经典笔试题分析 文章目录 C语言动态内存经典笔试题分析1. 题目一2. 题目二3. 题目三4. 题目四 1. 题目一 void GetMemory(char *p){p (char *)malloc(100);} void Test(void){char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str)…

lcx iptables rinetd 三个端口转发流量分析

lcx流量分析 环境搭建 本机 :192.168.0.52 win7 : 192.168.0.247 10.0.0.3 win10: 10.0.0.10 win7 Lcx.exe -listen 7777 4444win10 Lcx.exe -slave 10.0.0.3 7777 127.0.0.1 3389然后使用远程软件连接 连的是192.168.0.247的4444 端口 …

Mybatis与Spring结合深探——MapperFactoryBean的奥秘

文章目录 前言MapperFactoryBean的工作原理底层实现剖析MapperFactoryBean的checkDaoConfig()方法总结 MapperFactoryBean的getObject()方法 思考联想后续 系列相关相关文章究竟FactoryBean是什么?深入理解Spring的工厂神器超硬核解析Mybatis动态代理原理&#xff0…

idea 本身快捷键ctrl+d复制 无法像eclipse快捷键ctrl+alt+上下键,自动换行格式问题解决

问题 例如我使用ctrld 想复制如下内容 复制效果如下,没有自动换行,还需要自己在进行调整 解决 让如下快捷键第一个删除 修改成如下,将第二个添加ctrld 提示:对应想要修改的item,直接右键,remove是删…

【Kubernetes】持久化存储emptyDir/hostPath/nfs/PVC

k8s持久化存储 一、为什么做持久化存储?二、k8s持久化存储:emptyDir三、k8s持久化存储:hostPath四、k8s持久化存储:nfs4.1、搭建nfs服务4.2、挂载nfs共享目录 五、k8s持久化存储: PVC5.1、什么是PV5.2、什么是PVC5.3、…

[虚拟机]使用VM打开虚拟机电脑重启解决方案。

问题:打开虚拟机点击启动后,电脑会自动重启。(WINDOWS10 20版本) 解决步骤: 1、对Windows功能进行操作。 上图三个启用。 上图一个取消。 再次打开后,不报警,显示下图问题: 继续解…

VS Code使用教程

链接远程服务器 https://blog.csdn.net/zhaxun/article/details/120568402 免密登陆服务器 1生成客户机(个人PC)密令 ssh-keygen -t rsa生成的文件在主目录的.ssh文件当中。 查看密令并复制到linux系统当中 cat id_rsa.pub 2复制到服务器中 echo …

C++枚举类

枚举 C11有作用域枚举和无作用域枚举 无作用域枚举 特点 全局作用域:无作用域枚举的成员(枚举值)在包含它们的作用域内是直接可见的,不需要使用枚举类型名称作为前缀。 隐式类型转换:无作用域枚举的成员可以隐式地转换…

“新华三杯”第十届成都信息工程大学ACM程序设计竞赛(同步赛)L. 怎么走啊(最短路+二分 分段函数)

题目 登录—专业IT笔试面试备考平台_牛客网 思路来源 衡阳师范学院ac代码、pj学弟 题解 大致可以证明,在w从1e5减小到1的过程中, 之前某条反向边没有用到,现在需要用到反向边,也就是正向边用到的变少了 这样的变化有sqrt个&a…

【计算机网络基础1】网络层次划分和OSI七层网络模型

1、网络层次划分 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open Syste…