软件测试面试题
面试题汇总 | 计算机网络知识与数据库(附答案)
精选接口测试面试题(建议收藏)

10道web selenium自动化常见问题解答!
干货 | web安全测试的关注点有哪些?

MySQL数据库常见面试题总结,建议收藏!
(附答案)
面试锦囊 | Python编程题汇总(附答案)
APP测试——经典面试题分享
8.性能测试
1. 请问负载和压力测试的区别
▷负载测试:
用来测定系统饱和状态、确定阀值。目的是找到系统处理能力的极限;通过检测、加压的手段找出系统的指标,如“响应时间不超过5秒”,“平均CPU利用率低于65%”等。
▷压力测试:
稳定性的压力测试,通过长时间的运行,可以考察系统的各项指标是否在规定的范围内,比如:有无内存泄漏、有无功能性故障等;破坏性的压力测试,通过持续加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来,比如:系统性能降低。2. 描述一下性能测试流程?
1. 分析性能需求,确定性能指标
2. 制定性能测试计划,明确测试时间
3. 搭建性能测试环境,准备好测试数据
4. 编写性能测试脚本及脚步增强
5. 设计测试场景,执行脚本,监控服务器
6. 分析测试结果,收集相关的日志提单给开发
7. 回归测试及性能调优
8. 编写测试报告
3. 没有明确性能指标如何开展性能测试
1. 先构造测试数据进行压测,不断加压测到峰值,输出本次测试的结果;
2. 就本次压测数据开会讨论,分析是否满足性能需求或根据行业内指标规范进行判断
4. 怎么设计性能场景?
▷基准测试场景:模拟少量的虚拟用户对一个或多个业务某项性能指标进行定量和可对比的测试。将测试结果作为基准数据,在系统调优或者评测的过程中,通过运行相同的业务场景比较测试结果。
▷单接口测试:通过模拟虚拟用户,通过不断增加模拟用户数持续运行测试,获取事务响应时间,tps,报错率监测测试系统的各服务器资源使用情况。每一个虚拟用户级别会对应tps,直到找到tps的拐点,说到拐点可能大家能够想到像山峰一样的高斯曲线,但其实这是一个极其理想的情况,大部分情况下是增涨到一定的阈值就不再增加。
▷混合接口场景:将多个接口按照实际比例进行性能测试,这个比例就是综合场景的关键了,综合场景执行除了要观察总的tps,还有一个非常关键的因素就是接口之间的调用比例,比例不能偏离。(需要结合实际业务)
▷稳定性测试:通过给系统加载一定压力的情况下,运行较长一段时间,验证系统是否稳定。(比如:运行48小时)
▷高可用测试:有两台数据库服务,其中一台宕机了,能不能及时切换到另外一台上,且切换的时延是多少,处理能力能不能达到预期标准。
5. 你一般都是采用哪些方法来造数据?
1. 手动填充数据
2. 直接调用业务接口构造数据
2. 指定csv文件供Jmeter读取
6. 常见的性能指标有哪些?
最大并发用户数,HPS(点击率)、事务响应时间、每秒点击量、吞吐量(TPS)、CPU 使用率、物理内存使用、网络流量使用等。
响应时间:接口从请求到响应、返回的时间。
并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。
内存占用:也就是内存消耗。
吞吐量(TPS):并发用户数事务数/响应时间。
错误率:在压测过程中系统出现错误的比例;错误率=失败的事务数/事务总数。
资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。
7. 什么时候可以开始执行性能测试?
在产品相对比较稳定,功能测试结束后。
8. 用过哪些性能测试工具?
jmeter、loadrunner、locust
9. 如何进行测试脚本增强?
1. 数据参数化
2. 数据关联(如:登录获取token)
3. 添加事务
4. 添加断言
5. 添加集合点(jmeter的同步定时器,适用瞬间高并发的业务)
6. 添加思考时间(jmeter的统一随机定时器和固定定时器)
10. jmeter做性能是如何实现参数化的?
1.CSV Data Set Config/CSV数据文件设置
2.函数助手
3.用户参数
4.用户自定义变量
11. 性能测试脚本为什么要进行参数化?
把请求数据动态化,可以避免使用单一固定参数进行压测。这也是为了更加真实的模拟用户请求。
12. tps压不上去,可能有哪些原因?
1.压力机本身性能瓶颈
2.网络IO瓶颈
3.中间件(tomcat/nginx/mysql)连接数限制
4.Java线程的阻塞、等待
5.本系统资源的瓶颈(cpu、内存、磁盘、网络等)
6.其他外部系统响应时间过长,造成本系统的time-wait
13. 怎么根据测试环境评估线上环境的性能?
1. 首先需要搭建一套专门的性能测试环境
2. 测试环境单台机器配置和线上不能相差太多,可以通过单台的机器性能推算出多台机器性能(需考虑一定的性能损耗)
3. 如果测试环境机器配置较差,这样测试出来的数据对线上没有太大参考价值
4. 如果要获取较为精准的线上性能情况,可以再做一次线上的性能测试
14. Linux系统的监控指标和阈值是什么?
cpu使用率:<80%
系统内存:使用率<80%
磁盘IO:<100%-90%
网络IO:<带宽上限
15. 怎么分析性能结果?
首先查看事物通过率(错误率),然后分析其他性能指标;如:响应时间,吞吐量,CPU等是否满足需求。
如果测试结果不可信,要分析异常的原因,修改后重新测试;在确定性能测试结果可信后,发现问题,按下面的思路来定位问题:
▷响应时间不达标:
分析思路:查看事务所消耗的时间主要在网络传输还是服务器;
➣如果是网络,结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,
存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;不存在瓶颈,那么可能是网络不稳定导致。➣如果主要时间是消耗在服务器上,就要分别查看web服务器和数据库服务器的CPU,内存的使用率是否过高;
过高的CPU,内存必定会造成响应时间过长,如果是web服务器的问题,就把web服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。▷服务器CPU指标异常
分析思路:查看web服务器对应的用户操作日志,进行分析定位
▷数据库CPU指标异常
分析思路:查看数据库服务器对应的日志,进行分析定位
▷内存泄漏
分析思路:查看内存的heap数据,分析是哪个对象消耗内存最多
▷程序在单用户场景下运行成功,多用户运行则失败,提示连不上服务器
分析思路:程序可能是单线程处理机制
16. 如何识别系统瓶颈?
从TPS指标分析,TPS即系统单位时间内处理事务的数量。观察当前随着用户数的增长期系统每秒可处理的事务数是否也会增长。