软件测试培训之性能测试的一些常见问题解答

网友投稿 790 2022-11-07

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

软件测试培训之性能测试的一些常见问题解答

性能测试

答:

1、性能的需求分析

2、分析哪些场景需要做性能

3、搭建性能测试环境准备

4、性能脚本的开发

5、脚本的强化(优化)——脚本的断言、参数化,并发,捕获性能结果

6、性能的结果分析——要么是成功 要么是性能瓶颈问题(不讲性能BUG)

7、性能调优 (最难的部分)

8、总结报告

二、你们公司做性能是什么时候开始做的?

答:确定好一般性能是针对什么场景做的 ,一般核心场景、重要的模块功能测试通过之后,用户量访问量比较多的功能模块出来之后,我们就可以考虑他的性能测试。

什么时候开始做接口测试?

答:开发写好了接口,并提供了接口文档给到我们了,且我们的前端页面没有完成

三、性能测试分哪些类型?

负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。

压力测试(Stress Testing):强度测试也就是压力测试,压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。

容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等

并发测试、稳定性测试、可靠性测试等

四、常见的性能指标

1、资源指标

内存,CPU,I/O读写、带宽

2、系统指标

(聚合报告上的内容)

并发用户时间、响应时间 (最大和最小) 吞吐量 TPS(没秒处理的事务数)

五、做性能的一些场景

1、门户首页访问

2、门户网站登录

3、门户个人中心

六、你们公司性能是怎么做的?(结合一个具体场景讲一下如何做的性能)

答:我们公司用的jmeter做的性能。我跟你具体讲一下我们性能具体是怎么做的,

我们当时对并发门户首页访问的测试,来测试服务器的压力测试,稳定性测试。

当时并发的次数是4000个。

我会在jmeter里面准备好脚本,并且对脚本进行一定的优化,比如参数化,添加断言、并发,通过查看结果树、聚合报告来监控结果。

准备好了后就执行性能测试,同时监控结果,然后根据监控结果,如果结果达标,此次性能测试结束,如果性能结果不达标,找出性能瓶颈问题,给出调优的一些建议。

七、性能调优

(捕获TPC结果,在监听器里面添加)jp@gc - Transactions per Second: 每秒事务数,服务器每秒处理的事务数,

★★★★★问题一:压力测试中TPS一直上不去

分析思路:

1、网络带宽

在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。

2、连接池

可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。(关于连接池的具体内容,可参考之前的博客:性能测试:连接池和线程)

3、数据库配置

高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,就会导致数据库事务处理过慢,影响到TPS。

6、硬件资源

包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)。

7、业务逻辑

业务解耦度较低,较为复杂,整个事务处理线被拉长导致的问题。

问题二、容量(压力)测试过程中cpu过高----这个要考虑压了多少用户

结果:cpu却到了80%多,指标是不能超过60%。

解决思路:如果是cpu过高,先把消耗cpu最多的进程找出来(top命令),再找到该线程下消耗cpu过高的是哪几个线程,再把该线程处理掉

问题三、内存溢出(堆溢出、栈溢出、持久代溢出)

解决思路:1、调整堆内存参数,一般是增加堆内存

2、减少批处理数据量

问题四、线程死锁:容量(压力)测试压测一段时间后,报连接超时

解决思路:

1、造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,数据库连接池不够,连接数占满等都会造成连接不上而报超时 错误

2、找到死锁的线程,分析对应的代码

问题五、数据库死锁

解决思路:

1、造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。

2、(重点)数据库日志中搜索block,能搜到block的话就是存在数据库死锁,找到日志,查看对应的sql,优化造成死锁的sql。

问题六、数据库连接池不释放

上一次是通过日志分析或者查看代码,数据库连接部分是不是有创建连接但是没有关闭连接的情况。基本就是这种情况导致的,修改代码即可。

遵循二五八原则,一般一个请求在2秒内完成,3、4秒也行,超过5秒就提交上去,性能测试不通过。

出错率:控制在0.几% 百分之几

500个并发的数据情况……

jmeter常用组件简要介绍:

jp@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表)

聚合报告里,Throughput是按请求个数来展示的,比如说1.9sc,就是每s发送1.9个请求;而这里的展示是按字节Bytes来展示的图表

jp@gc - Composite Graph: 混合图表

在它的Graphs里面可以设置多少个图表一起展示,它可以同时展示多个图表

jp@gc - PerfMon Metrics Collector:服务器性能监测控件,包括CPU,Memory,Network,I/O等等

jp@gc - Reponse Latencies Over Time:记录客户端发送请求完成后,服务器端返回请求之前这段时间

jp@gc - Reponse Times Distribution: 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数

jp@gc - Transactions per Second: 每秒事务数,服务器每秒处理的事务数

上一篇:Oracle7.3.4数据库已经启动
下一篇:如何在云端打造高效的企业移动化平台
相关文章

 发表评论

暂时没有评论,来抢沙发吧~