• 2023最新性能测试八股文【附答案】,软测人必备!


    1. 请描述什么是性能测试、什么是负载测试、什么是压力测试?
    【参考答案】
    性能测试:性能测试是和功能测试相对应的。根据用户场景进行的单个用户操作,是属于功能测试领域,主要是验证软件是否可以满足用户的功能需求。比如,单个用户使用系统,系统各项功能是否满足用户的需求。

    如果把这1个用户的操作放大,变为100个,1000个,10000个用户同时操作软件,验证软件系统是否满足用户的需求。那么这个就是软件性能测试。通常使用性能测试工具对软件开展并发的访问,同时监控系统各项指标,比如CPU、内存、网络、磁盘等关键部件的使用情况。目标是发现软件在大用户量的情况下,系统的工作情况。性能测试是负载测试、压力测试、并发测试的统称。

    负载测试:通过逐步加压的方式来确定系统的处理能力,确定系统能承受的各项阀值。

    压力测试:逐步增加负载,使系统某些资源达到饱、极限甚至失效的测试。目的是用来发现系统的软件业务处理能力、系统硬件的极限处理能力等。

    2. 公司中常用的性能测试工具有哪些,他们各自的特点是什么?
    【参考答案】
    公司中常用的工具有LoadRunner、Jmeter、Seagull等。其中LR是商用收费软件,费用比较高,很多小公司很难承受。LR功能强大,支持的协议广泛,拥有强大的录制功能。

    Jmeter是开源免费项目,互联网公司用的较多,支持二次开发。支持添加控件进行扩展,目前在企业中应用广泛。

    Seagull,在通讯领域中协议测试用的较多,是一款免费的工具,广泛用于Sip协议、Http协议、Diameter协议的系统的性能测试。

    3. 请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?
    【参考答案】
    从需求文档中提取性能测试需求,与用户交流,了解实际使用情况。

    结合业务信息设计操作场景总结出需测试的性能关键指标。执行用例后根据提取关键性能指标来分析是否满足性能需求。

    4. 请问你是在什么时候开始开展性能测试的?
    【参考答案】
    通常在产品相对比较稳定,主要功能开发完成,功能测试后期的时候,开展性能测试。

    5. 请问性能测试中碰到网页中有验证码的时候,如何编写性能测试脚本绕开验证码?
    【参考答案】
    常见的方法有两种:第一种是临时让开发人员去掉验证码。第二种是让开发人员在后台预设一个固定的验证码,性能脚本中每一次都使用这个固定的验证码。

    6. 性能测试中遇到哪些性能问题?
    响应时间过长;内存溢出;cpu利用率过高

    7. 概述一下性能测试流程?
    分析性能需求。挑选用户使用最频繁的场景来测试。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下

    制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具

    编写测试用例

    搭建测试环境,准备好测试数据

    编写性能测试脚本

    性能测试脚本调优(脚本增强)。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本

    设计测试场景,运行测试脚本,监控服务器

    分析测试结果,收集相关的日志提单给开发

    回归性能测试

    编写测试报告

    8. 如何确定系统最大负载?
    通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数

    9. 你们系统哪些地方(哪些功能)做了性能测试?
    选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单

    10. 你们的并发用户数是怎么确定的?
    1)会先上线一段时间,根据收集到的用户访问数据进行预估

    2)根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等

    11. 你们性能测试在什么环境执行?
    参考答案:我们会搭建一套独立的性能测试环境进行测试

    12. 你们性能测试什么时间执行?
    基准测试:功能测试之后,系统比较稳定的时候再做。

    负载测试:夜深人静,系统没人用的时候

    13. 如何判断系统的性能是变好了还是变坏了
    通过基准测试对比性能指标

    14. 你们的性能测试需求哪里来?
    1:客户提供需求

    2:运维提供需求(负责服务器的稳定性)

    3:开发提供需求

    15. 如何实现200用户的并发?
    在脚本对应的请求后添加集合点(绝对并发)

    相对并发:线程组设置200线程数

    16. 什么情况下要做关联,关联是怎么做的?
    当脚本的上下文有联系,就用关联。

    比如登录的token关联,增删改查主键id关联

    17. 有验证码的功能,怎么做性能测试?
    1、将验证码暂时屏蔽,完成性能测试后,再恢复

    2、使用万能的验证码

    18. 你们性能测试做的是前台还是后台?
    BS项目:测试的是后台服务器的性能和浏览器端性能;

    APP项目:手机端和服务器端的性能都做

    19. 性能测试指标有哪些
    响应时间、吞吐量、Cpu、内存、Io、disk

    20. 如何脚本增强?
    1、做参数化

    2、做关联

    3、添加事务

    4、添加断言

    5、添加集合点(jmeter的同步定时器)

    6、添加思考时间(jmeter的统一随机定时器和固定定时器)

    21. 该怎么去找这个最佳平衡点呢?
    1.尽可能多的做不同并发数下的压测,记录下响应时间(1s以内)和最大tps,当然,服务器端,各个服务器的资源利用率在可接受范围内(每个公司不一样,我们是90%以内);

    2.然后根据获取到的不同并发下的指标数据(并发数、tps、响应时间),画出上图,关注右侧的交点,即tps下降的地方和响应时间的交点,这个点的tps最大,如果响应时间在1s以内,此时并发数也是比较大的,这个点就可以认为是三个指标都不错的平衡点(当然,我这里把tps放在第一位优先考虑了,这个就看大家最在乎哪个指标了,排个优先级);如果响应时间大于1s,最佳平衡点就往左找,找到响应时间为1秒的点,此时对应的tps和并发值,就是最佳平衡点。总之,测试采样越多,获取的平衡点就越准确。

    另外,如果是用loadrunner作为并发工具,并发过程中是可以增加或者减少并发用户数的,就不用必须压完一次,再调整并发数继续压,但是,loadrunner并发过程中调整了并发数,还是要尽可能跑久一点,比如10-15min。

    篇幅限制,这里仅展示了部分问题和答案,需要完整版的可以点击下方卡片获取哦~ 

  • 相关阅读:
    【数据测试】之迁移(三)
    学习 Rust 的第十二天:如何使用向量
    MySQL8.0优化 - 锁 - 按加锁的方式划分:显示锁、隐式锁
    pythorch的numel()函数计算模型大小与现存占用
    leetcode算法每天一题010: 正则表达式,判断pattern和string是否匹配(动态规划)
    IP地址在各行业中的常见应用场景
    LabVIEW图形化的AI视觉开发平台(非NI Vision)VI简介
    jdk版本切换工具.bat
    【活动回顾】Rust:构建新时代基础设施的首选语言 @Qcon
    监控易一体化运维:打造机房环境监控的卓越典范
  • 原文地址:https://blog.csdn.net/qq_73332379/article/details/133882770