性能测试实战 - 部署
1、什么时候做性能测试
①项目刚上线的时候:用户为0(避免用户量突然增加,系统承受不住)。
②发布活动的时候:节日商品秒杀,打折优惠,某时间段促销,大批量用户集中访问下单(平时没这么多用户)。
③版本迭代的时候:新功能产生(类似刚上线)。
④高负载的稳定性:推出免费课程,一天内就会持续增长,要看负载,一个视频网站最多容纳多少人(只进不出)。
2、如何模拟生产环境
①等比模拟硬件:生产环境是100台,那么测试就等比缩小为10台。
②同步软件版本位数:因为不同版本,会有细微差别(所有软件)。
③使用负载均衡模拟共享中心的应用:负载均衡主要做分发,分发机制类似共享中心。
④最大限度避免网络问题:将服务器置于同一机房,避免由于网络波动而出现的性能问题(忽略网络)。
注意:
做性能测试,不要直接去互联网测去,有网络,有时候就不知道问题是哪出的。
性能的测试环境,必须是自己搭建的,这样面对多个影响因素,才能做到心中有数。
3、性能测试的数据准备。
①数据的分类:性能测试与功能测试的数据库,要相互独立
基础数据:让表中数据达到一定数量级,目的是测出数据库索引是否需要优化,表空间、索引空间是否足够。
业务数据:被测系统能够按业务逻辑运行起来的数据,目的是测出SQL语句和程序代码是否需要优化 。
注意:
性能测试,一定是需要大数据量。
基础数据主要体现存储空间,业务数据主要是看操作速度 。
②数据的准备:
利用性能测试工具构建。
写循环代码SQL插入数据表。
从生产库中拷贝。
性能测试实战 - 实战应用
1、对系统性能瓶颈进行定位
需要掌握查看日志的方法,查询数据库连接数或进程数,查询web服务器连接数或请求数。
2、对系统参数进行调优
针对操作系统、数据库、中间件服务器等:是软件,就一定会有参数配置,这些配置,也是系统发生性能问题的重要原因。
3、发现算法的缺陷
主要从时间的维度,去定位算法缺陷(一般情况下开发自己就能定位到)。
4、验收测试
验收测试的时候,你报告里写的是最多多少人同时在线。
以报告的形式,把测试出来的性能指标,给到那些需要这些指标的人。(老板、开发、运维、客户)
5、容量规划
容量的规划,就是一种预估。根据业务场景去预估服务器压力等。
产品从各种维度考虑,都需要进行性能测试。
多数情况下,产品做出来之后,人们往往更关心的不是功能,而是它的性能。
比如,特斯拉电动车,续航是多少公里。某跑车,百公里提速是多少秒。同等级的轿车,都能开到140,以同样的速度和公里数,哪个更费油?哪个更稳定性?哪个操控性更好?这些都是性能领域。
产品谁都能做,但高性能的产品,才具备市场竞争力,所以要做性能测试,保证性能指标。
性能测试面试题 - 答案
面试题1:你们性能观察哪些指标,大概指标范围是怎么样的?
答:
对于指标这块,业务方面的指标主要有:并发数,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%,无丢包,无延迟,无阻塞
面试题2:什么是内存泄漏,什么是内存溢出?
答:
内存泄漏:
是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。
通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。
内存溢出:OOM
指程序申请内存时,没有足够的内存供申请者使用1M实际要占用2M内存,
就说分配的内存不够,导致内存溢出;
给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据;
长期出现内存泄漏,导致系统内存越用越少,最终导致内存不够用,导致系统崩溃,出现OOM;
面试题3:如果用户并发要慢慢加载,你怎么设置的?
答:
设置并发数的时候,我们会设置启动时间,比如说设置50个并发用户数就是50个线程组,启动时间会设置成10秒,让用户慢慢启动起来
1面试题4:并发用户数跟响应时间与吞吐的关系?
答:
并发用户数越多,响应时间越长;
并发用户数越多,吞吐量会一直,增加,增加到一个临界点(系统瓶颈后),不再增加,有少许的回落;
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只有不屈不挠的努力,才能开创辉煌的人生航程;只有坚定不移的奋斗,才能追逐理想的光芒。向前冲吧,勇往直前,你的努力终将点亮未来的星辰大海!
没有成功的捷径,只有坚持奋斗的道路。每一次努力都是一次积累,每一次汗水都是一种收获。相信自己的能力,追寻梦想的勇气将引领你走向辉煌的彼岸。加油!
只要坚持不懈,勇往直前,无论困难多大,都能够战胜一切,成就辉煌。相信自己的实力,追逐梦想,你将收获属于你自己的辉煌人生,永不言弃,奋斗不止!