性能测试面试问答题

news2024/12/27 11:53:24

1、性能测试怎么测试?

性能测试其实就是通过自动化工具模拟多种正常、峰值以及异常负载来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,二者可结合使用。

性能指标主要有平均响应时间、90%响应时间、吞吐量、吞吐率,每秒事务数,以及服务器的资源使用率(CPU 占比,mem 内存占比等)等。当并发用户数超过 300 时,为了让测试数据更准确,可以考虑分布式压测,通过 jmeter 客户端控制几台 jmeter 服务器进行测试。

性能测试要先调试好脚本,主要考虑对脚本的数据参数化和添加断言。因为有些接口需要对业务逻辑或参数格式进行校验,为了能让所有线程数跑起来,需要将数据参数化。

数据参数化有这几种做法:

1、可以将一些固定值改成随机函数;

2、利用 JDBC 从数据库读取数据并关联变量;

3、Excal 数据参数化,

4、动态关联参数化,断言是为了判断用例是否执行成功,并验证服务器的响应错误率。响应断言常用 json 断言,xml 断言用的最少,性能测试的目的是为了检验系统能否满足客户的性能需求,若性能需求无法满足时,则要考虑对系统进行性能调优,一般用排除法:

1、首先考虑网络方面问题:使用 ping 命令查看与目标服务器的连接是否正常、传输速度的快慢。通过提升服务器的带宽,看响应时间是否相应降低。

2、考虑数据库的问题,可以单独去压测数据库,查看数据库的最大连接数和 SQL 语句的执行时间,索引命中率和 sleep 等待时间等

3、考虑 Apache/Nginx 等中间件的问题,查看中间件设置的最大连接数是否合理,如果设置的连接数太小,会话数超过设定的最大连接数时会导致等待时间变长,出现响应超时情况

4、考虑服务器的硬件配置,如内存、CPU、磁盘读写速度等,可以用 top 命令来监控,也可以使用nmom 工具来监控,nmom 会把监控的数据形成表格形式,方便我们查看。

5、最后考虑开发代码写的好不好,处理时间长不长的问题。

举例:

在我之前的公司,我们主要是会考虑用户操作使用比较频繁的模块,比如借贷,充值,投资模块,我们一般会通过增加并发数来压测,观察 CPU、mem、磁盘读写、吞吐量和每秒事务数等性能指标,以前我老大要求我并发 100 个用户,我用 jmeter 把线程数设为 100,永久循环,持续时间半个小时,设置启动延退 55,在 Linux 启用 nmom 工具监控服务器。

当我运行脚本的时候我看聚合报告 90%的平均响应时间达到了 6s,吞吐量也比较小,用 top 命令监控资源发现 CPU 差不多到了 100%。于是我用 Navicat 工具通过 SQL 命令 show full processlist 取当前运行的 SQL 语句,发现有许多语句用的是左关联,在查看了这条 SQL 语句的执行计划发现没有用索引,再查看了索引的命中率,命中率倒是还行看了下 nmom 生成的报告,发现 CPU 一直是处于爆满状态,其中主要是 mysql 的占比很大,这个时候我基本上判断数据库的问题。

于是我就照着前面的步骤再次压测,同样还是用 nmom 工具去监控 CPU,mem 网络等状态,这次我是主要在 Navicat 上用命令去抓取 SQL 语句,还是一样有很多语句都是左关联,并发现很多空连接(sleep),我就用 show global variable like"wait_time"命令查看了设置的休眠时间(等待时间)发现时间很长 28800s,然后我就把这个休眠时间改成了 20s,因为 SQL 语句使用了很多左连接,我就用show variables like"tables_size"查看了临时表的空间大小、发现临时表只有 16m,我将空间改成了 1G再去压测了下,发现 CPU 只是降了 10%左右,nmom 报告上还是显示 mysql 占的 CPU 很大,然后运行的时候,用 top 命令监控,发现有的时候有很多 mysq 进程同时运行(因为没有设置连接池),我就用命令查看了下 mysql 的最大连接数,因为 SQL 语句的执行速度还是挺快的,所以就把 mysql 的连接数调小到 50,再去跑了一遍发现 CPU 降到了 40%左右,并且其他的性能指标也都还不错。最后把聚合报告的数据以及 nmom 的数据整理成性能报告给老大,其实做接口性能主要就是用排除法个一个去排除,发现性能问题就要先解决了性能问题再压测,不然其他的问题也有可能是这个性能问题导致的所以接口性能基本上就是观察,各个性能指标都在范围之内就差不多了。

2、性能测试流程是怎么样的?

另外一种问法:简单介绍下你们公司的性能测试流程是怎么样的?

我们那个项目的性能做得不多,公司要求也不严格。

对于流程这块,首先就要对整个系统进行详细的分析,确定基本的测试范围,看下系统的哪些业务是需要做性能测试的,还有就是做那方面的性能测试,对于我们那个项目,当时就做了几个业务做了些简单的并发压测(稳定性)这块,像登录的,搜索查询,下单,还有就是购物车里面的几个接口都有做过,然后就是对各个业务场景进行详细的场景分析与设计,确定每个业务场景的并发数,是否需要设置集合点啊,压测时间是多长,还有各个业务场景的性能指标等等,场景设计这块基本上都是老大跟产品哪个一起弄的,我参与的不是太多。

上面把个场景设置好了之后,提交给我们,我们就是根据老大设置好的那些场景编写了基本的性能测试用例,其实做性能测试,我觉得前期最关键的还是业务场景一定要设计好,后期我们主要的任务就是准备各自任务需要用到的一些测试数据,搭建好测试环境,还有就是测试脚本设计与开发,执行,并生出测试报告,对于测试结果我们一般会简单的做个分析,如果没有什么问题,基本后期就写一个性能测试报告。流程大概就是这样的。

3、你们性能观察哪些指标,大概指标范围是怎么样的?

对于指标这块,业务方面的指标主要有:并发数,90%用户的平均响应时间
错误率,吞吐量/吞吐率这些,例外还需要关注服务器资源的使用情况,像:CPU 的使用率、内存的占有率,磁盘 IO,网络。

我们那个项目当时只针对,登录,搜索查询,下订单,购物车相关接口,支付等业务做了些简单的并发,压测这块,指标大概是这样的:

单基准业务并发测试登录,注册,查询 1s 以内,下订单,购物车相关接口,支付 2s 以内,混合业务性能:5s 以内
响应时间:登录,注册业务<2s 之内查询,下订单,购物车,支付业务<3s
充值,提现,查看充值日志,查看提现日志业务查询标的,<3s
投标,申请借款<5s
错误率:0
吞吐量/吞吐率:200 左右请求/sec
CPU:80%以内
内存:80%以内
I/O: %util<=80%,%nowait<=20%
%util: 磁盘一秒中有百分之多少的时间用于 I/O 操作,
% nowait:磁盘等待处理时间占比
带宽:<=系统带宽的 30%,无丢包,无延迟,无阻塞

4、这个测试的环境配置,如转速度?

租用的服务器,一台数据库服务器,一台后端服务器
8 核 16G 网络带宽 1000M,2.5GHZ 磁盘 15000pm 转数

5、性能测试计划有哪些内容?

主要是时间进度安排与工作安排,主要是环境,测试任务,测试需求,测试方法与策略,测试环境准备,测试通过的标准。

比如说原来我们一个项目性能测试时做了 5 天,那我们计划是,测试策略与用例编写一天,测试准备需要 1 天,测试执行 2 天,报告总结 1 天。

6、有没有写过性能测试报告,具体包括哪些内容?

性能测试报告,需要每次 Jmeter 压测完成的 html 报告的数据跟 nmon 工具监控的数据,整理出一份性能测试报告,性能测试报告,主要包含:

1,测试资源(环境,测试数据,表里面需要多少数据,测试工具)

2,测试设计(测试业务,测试类型,测试时间,并发用户数)

3,测试分析(每一个场景都需要分析)

4,测试结论(能不能上线,不上线的原因)

5,优化和建议

6,测试通过的标准,平均响应时间<5s,资源利用率<75%,事务失败率<5%

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

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

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

相关文章

基于SpringBoot的私房菜定制上门服务系统的设计与实现pf

TOC springboot512基于SpringBoot的私房菜定制上门服务系统的设计与实现pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域…

图书项目要点

一、搭建项目 使用tarojs/cli进行搭建 taro init [项目名] 二、具体页面 页面声明&#xff1a; 在【app.config.ts】中对主页面进行声明&#xff1a;组件页面可以不用声明 pages: ["pages/index/index",pages/user/index,pages/book/index,], tabbar制作&…

Linux系统编程(14)UDP全双工通信和TCP半双工通信

一、UDP全双工通信 UDP通信基础&#xff1a; recvfrom函数 recvfrom 是一个用于接收数据的函数&#xff0c;&#xff0c;但 recvfrom 不仅接收数据&#xff0c;还可以获取发送数据的地址信息。 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sock…

【vue3|第25期】Vue3中的useRoute:轻松访问路由信息

日期&#xff1a;2024年8月21日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不…

撰写文献综述策略

撰写文献综述 文献综述在形式上与任何其他类型的学术文本没有任何不同&#xff0c;因为它也具有基本部分。每个部分中包含的内容取决于您撰写文献综述的目的&#xff1a; 简介 此部分应明确定义评论的目的和重点。论文&#xff1a;如果您将评论作为毕业论文或学位论文的一部分…

文件IO函数练习

作业&#xff1a;使用write和read完成文件的拷贝。 代码 #include <myhead.h>int main(int argc, const char *argv[]) {int fd open("./1.txt",O_RDONLY);//已只读打开被拷贝文件if(-1 fd){perror("open");return -1;}int fd1 open("./2.…

Python使用QtSide6(PyQt)编写界面

1、安装QtSide6 开始菜单cmd 创建虚拟环境 python -m venv env2 进入虚拟环境 call env2/scripts/activate 安装Pyside6 pip install Pyside6 2、设计Qt界面 打开designer.exe&#xff0c;设计界面 点击菜单【窗体】【View Python Code...】&#xff0c;点击【全部复制】…

论文阅读:MonoScene: Monocular 3D Semantic Scene Completion

论文阅读&#xff1a;MonoScene: Monocular 3D Semantic Scene Completion Abstract MonoScene提出了一个3D语义场景完成&#xff08;SSC&#xff09;框架&#xff0c;其中场景的密集几何形状和语义是从单个单目 RGB 图像中推断出来的。与SC文献不同&#xff0c;我们依靠2.5或…

回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出

回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出 文章目录 前言回归预测|基于北方苍鹰优化NGO-Transformer-GRU组合模型的数据预测Matlab程序多特征输入单输出 一、NGO-Transformer-GRU模型NGO-Transformer-GRU组合模型的数据预测1…

Linux之数字证书

新书速览|Ubuntu Linux运维从零开始学_ubuntu linux运维从零开始学 pdf 下载-CSDN博客 《Ubuntu Linux运维从零开始学&#xff08;Linux技术丛书&#xff09;》(肖志健)【摘要 书评 试读】- 京东图书 (jd.com) 随着网络环境的恶化&#xff0c;人们已经逐渐抛弃网络上面的明文…

嵌入式day32

recvfrom 参数&#xff1a; sockfd //socket的fd buf //保存数据的一块空间的地址 len //这块空间的大小 flags //0 默认的接收方式 --- 阻塞方式 src_addr //用来保存发送方的地址信息 addrlen //表示发送方实际的地址信息大小 返回值&#xff1a; 成功 返回接收到的字…

小米、友邦带领恒指大反攻!

港股三大指数反弹止步2连跌&#xff0c;恒生科技指数一度冲高至2%&#xff0c;恒指收涨1.44%。盘面上&#xff0c;大型科技股多数表现活跃&#xff0c;业绩超预期&#xff0c;小米大涨超8%表现尤其抢眼&#xff0c;京东涨约4%&#xff0c;百度涨1.71%&#xff0c;网易涨2.14%&a…

linux内核编译及驱动程序的添加

内核编译:Makefile 条件编译 先拷贝一个默认的配置到.config (官方所有的默认配置文件在arch/arm/configs下) 我使用的是内核源码顶层目录下的config_mini2440_td35 在Kconfig中定义menuconfig中的可配置选项 make menuconfig //可视化配置菜单 --内核活地图 .config #…

生产者消息可靠性

若支付服务和mq之前网络链接失败/mq挂掉/交易服务挂掉,都有可以让支付订单无法更新,所以导致发送者不可靠,mq本身不可靠,消费者不可靠,消息延迟,针对以下问题 生产者可靠性 支付服务和mq之间有可能连不上,连不上怎么办,可以增加失败重连 配置文件中配置-重连 测试结果…

《黑神话·悟空》主创冯骥:我真的不适合做生物

出品| 木青生信大模型 作者| 穆易青、kimi 头图| 大地老周 引言 《黑神话:悟空》自8月20日全球上线以来,以其震撼的视觉效果和深刻的游戏体验,迅速成为现象级作品。这款游戏不仅创下了450万份的单日销量纪录,更在Steam等平台上取得了前所未有的成功。作为一名热爱游戏的…

SDXS:知识蒸馏在高效图像生成中的应用

人工智能咨询培训老师叶梓 转载标明出处 扩散模型虽然在图像生成方面表现出色&#xff0c;但其迭代采样过程导致在低功耗设备上部署面临挑战&#xff0c;同时在云端高性能GPU平台上的能耗也不容忽视。为了解决这一问题&#xff0c;小米公司的Yuda Song、Zehao Sun、Xuanwu Yin…

财务报表解读指南:关键指标与分析方法详解

一、概述 财务报表中包含了丰富的信息&#xff0c;但如果在分析时缺乏明确的思路或忽略重点&#xff0c;很容易被复杂的数据搞得无所适从。本文将介绍财务报表中的关键指标&#xff0c;包括资产负债率的分析、净资产收益率的解读&#xff0c;以及销售复合增长率的计算&#xf…

如何生成随机数(通过rand函数,srand函数,time函数深入讲解)

目录 1. 随机数的生成 2. srand函数 3. time函数 4. 设置随机数的范围 1. 随机数的生成 既然是猜数字游戏&#xff0c;那么最终的数字答案肯定是重要的&#xff0c;我们要如何实现这个随机数的生成呢&#xff1f; 在这个功能上&#xff0c;C语言提供了一个函数叫rand&…

智算中心算力池化技术深度分析报告

智算中心算力池化技术深度分析 智能算力&#xff0c;人工智能基石&#xff0c;助力构建多要素融合信息基础设施。作为数字经济高质量发展核心引擎&#xff0c;智能算力基础设施建设正迎来高潮。 智算中心&#xff0c;作为集约化算力基础设施&#xff0c;以智能算力为核心&…

特征工程练手(四):特征选择

本文为和鲸python 特征工程入门与实践闯关训练营资料整理而来&#xff0c;加入了自己的理解&#xff08;by GPT4o&#xff09; 原活动链接 原作者&#xff1a;云中君&#xff0c;大厂后端研发工程师 目录 0、关卡总结1、前言2、基础知识讲解2.1get_best_model_and_accuracy2…