性能测试的面试点

性能测试

性能测试考虑的是正常的使用场景

性能测试的定义

在一定的设备基础上,检验被测软件/应用做的怎么样(比如:能否承受多少的用户量/多用户发送请求处理时,响应时间是否正常等)

1. 性能测试在什么时候测?

功能测试之后,系统比较稳定的时候再做

2. 性能测试是测系统的所有模块/功能,还是部分?性能测试测哪些模块?项目的哪些功能做过性能测试?

用户使用频繁的功能模块来做性能测试,比如:登陆,打开系统首页,搜索,提交订单。

3. 性能指标:性能测试需求达到的标准–>哪里来?

  1. 实施人员从客户那边得到
  2. 产品经理的需求文档提及到
  3. 开发、测试、产品等讨论得出

4. 并发用户数:同一时间内操作某些事

相对并发:同一时间内操作不同的事情。例:多用户操作同一系统的不同功能,一个登陆,一个在浏览商品
绝对并发:同一时间内操作相同的事情。例:多个用户操作同一系统的同一功能

  • 绝对并发
    绝对并发

5. 性能指标有哪些?

  1. 事务成功率100%(出错率3%以下)
  2. 系统资源占用70%以下(CPU、内存、网络、IO(磁盘读写))
  3. 响应时间(RT)(3s以内)
  4. 并发用户数、吞吐量(TPS)
  • 吞吐量:单位时间内(单位:秒)处理的事务(请求)数
  • 响应时间(RT:Response Time):客户端发送请求到服务器响应回客户端的时间
  • 点击率(Hits):单位时间(s)内用户发送的请求数
  • 集合点==绝对并发数

    把先到达的虚拟用户拦截下(等待),在规定时间内等待后面的用户达到一定的用户数释放请求

  • 一个接口的响应时间多少?—> 100ms以内

6. 性能测试的描述

功能测试–软件是否实现,且准确适用
性能测试–被测软件/应用做的怎么样

7. 性能测试环境在哪?

外网–>租赁的服务器(阿里云、腾讯云、华为云)

8. 性能测试场景设计;

  1. 基准测试:验证功能测试在用户循环多次,执行过程中能否达到性能指标
  2. 负载测试:验证系统的最大并发用户数。
  3. 压力测试:验证系统超过最大并发用户数持续运行一段时间(5-15分钟)
  4. 疲劳测试:验证服务器长时间(一周)处于运行状态,各项指标是否正常
  • 工作基准测试过程中,要是性能指标不达标的情况下,后续的并发 将不用进行

9. 性能测试流程:(性能测试怎么做?压力测试怎么做)

首先了解客户的需求,和项目开会讨论确定性能测试需求(测试点,性能指标,测试时长),最终定版

  1. 熟悉性能测试需求,编写测试计划
  2. 搭建性能测试环境(jmeter,JDK)
  3. 准备测试数据(接口文档,性能测试的场景)
  4. 编写Jmeter性能测试脚本,并优化(参数化,断言,关联,集合点),使用插件监控服务器的cpu、内存、磁盘的io读写能力、TPS、响应时间、点击率等;
    监控工具的使用:
    ①将jmeterPlugins-Standdard.jar–>jmeter安装目录下的lib/ext下;重启jmeter选择对应的监控插件;
    ②在linux上安装ServerAgent代理工具,找到ServerAgent.sh文件,并赋予执行权限,再启动就可以了
  5. 设计性能测试场景(先基准测试,再负载测试)
  6. 搭建分布式压力测试环境:
    当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。要解决这个问题,可以使用分布式测试,使用多台机器运行所谓的Agent来分担JMeter自身的压力,并借此来获取更大的并发用户数;
  7. 分析性能测试结果,提交性能测试bug单,跟踪问题单直到问题被解决;
  8. 输出性能测试报告。

10. 性能分布式环境如何搭建

  1. 首先控制机和压力机的Jmeter,JDK版本要一致
  2. 主控制电脑(控制机)跟代理机(压力机)在同一个局域网(192.168.1.XXX)
  3. 如果电脑上安装了虚拟机,则主控制机跟代理机要禁用虚拟IP(虚拟网络)
  4. 主控制机Jmeter的bin目录下的jmeter.properties,修改里面的remote_host=本机IP,代理机IP,保存
  5. 启动主控制机的Jmeter的bin目录下的jmeter_server.bat(远程服务)
  6. 代理机的Jmeter的bin目录下的jmeter.properties,修改里面的remote_host=本机IP,保存
  7. 启动代理机的Jmeter的bin目录下的jmeter_server.bat(远程服务)
  8. jmeter脚本文件和数据结果放在同一个路径(控制机和代理机都要有)
  9. 重启主控制机的Jmeter,打开控制机的jmeter,运行-远程全部启动
    p.s. 如果分压机启动jmeter-server.bat文件,提示:找不到系统文件,就需要修改分压机目录下的文件jmeter.properties文件,添加server.rmi.ssl.disable=true
    (控制机运行代理机时,产生的压力服务器都是同一个服务器)

11. 怎样分析性能测试结果?

思路:

  1. 查看聚合报告和服务器的资源使用图,检查响应时间、事务成功率、CPU;
  2. 内存和IO使用率是否达到要求,如果出错率达到了总请求数的3%;
  3. 检查是什么原因导致的,修改好后,重新测试;
  4. 如果出现了性能瓶颈,比如响应时间,或者CPU使用率不达标;
  5. 从服务器上导出日志,分析是哪个地方导致响应时间过长,
  6. 如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,
  7. 修复好了就进行回归测试。

12. 性能测试脚本的错误率不高于总体的3%

错误率高于3%的原因:

  1. 性能测试脚本场景设计有问题(缺失思考时间,断言有问题,绝对并发过大)
  2. 并发用户数量过大
  3. 服务器未启动或者网络不通畅
  • 思考时间:模拟用户在操作过程中的停顿(思考)时间

13. Jmeter如何让事务中多个请求依次发送?

勾选Generate选项,把事务控制器的所有请求当作是一个业务流程

14. 接口、性能测试中遇到有验证码的请求怎么处理?

  1. 通过验证码接口获取验证码关联下一个接口
  2. 让开发屏蔽验证码(测试环境),生产环境时恢复验证
  3. 让开发提供一个万能验证码

15. 性能测试环境在哪?

外网–>阿里云、华为云、腾讯云等

16. 并发用户数怎么计算?怎么得到的?

  1. 实施人员(项目经理)从客户那边得到
  2. 取在线用户或注册用户数的10%
  3. 通过公式计算得到:C=NL/T
    N表示平均系统每天的用户访问数,L表示平均每个用户使用时长,T表示用户正常使用的时长

17. TPS上升不了的原因是?

  1. 并发用户数太大了
  2. 响应时间(网络+服务器处理)过长

18. 性能测试遇到的问题

  1. 响应时间不达标
  2. CPU使用率不达标
  3. 程序在单用户场景下运行成功,多用户运行则失败,提示连不上服务器。
    原因:程序没有做多线程处理。
  4. 程序实现的功能是:随机给用户分配不同的任务–>单用户运行时,能成功分配;多用户并发申请任务时,所有用户得到的任务都是一样的。
    原因:程序存在线程同步的问题。
  5. 系统并发200个用户,服务器返回 http status-code = 500
    原因:数据库连接没有来得及关闭,就有用户访问上来了,导致数据库崩溃 。这个是数据库的链接这块开发没有处理好

19. 如何分析性能测试瓶颈?(性能测试遇到的问题?)

性能测试的瓶颈

20. 项目的最佳的并发用户数是多少?

例:做2000个并发用户的时候,查询功能的响应时间超过了性能指标2秒多,原因是几个表的索引建的不合理导致的,重新建索引后,问题就解决了。我们当时做到2000并发用户后,就没在再继续增加用户量了

21. 如何实现200用户的并发?

在请求的前面添加集合点,设置并发用户数为200

22. 如何确定系统能够承载的最大用户数?

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

23. 吞吐量和并发用户数的关系是怎样的?

一个项目的吞吐量是有个极限的,就像一条马路,假设最多能同时通行5辆车,那么这条马路的最大吞吐量就是5辆车;当并发用户数没达到吞吐量的极限时,随着并发用户数增加,吞吐量就是增加;达到吞吐量的极限后,吞吐量会保持平稳

24. 如何监控服务器资源

首先在Jmeter安装资源监控插件,比如:服务器资源的监控插件(CPU/内存/IO等)、事务通过率的监控插件、点击率、响应时间的监控插件等。然后在Linux服务器上安装ServerAgent代理工具,对工具进行解压、赋权,最后开启代理服务,运行Jmeter脚本,就可以通过Jmeter插件监控到服务器的资源了

25. 如何判断系统的性能是变好了还是变坏了

做回归测试时,看系统的TPS是不是增加了。

26. 估算TPS

  • QPS(TPS)= 并发数(事务数)/平均响应时间

  • 在性能测试中通常使用二八原则来量化业务需求。

    • 二八原则:指80%的业务量在20%的时间里完成。
      业务量一般要取系统业务高峰的值,才能代表系统的实际处理能力。

      例:系统在10点的访问高峰PV约5208,那么这个时段的TPS=5208/3600≈1.45吗?

      答案是否定的,因为在一小时内的吞吐量未必是平均的。

      如果采集到的业务量数据能够细分到每分钟,TPS就越准确。如果不能,可以按照二八原则。即80%的业务在20%的时间内完成,TPS=(520880%)/(360020%)≈5.8。

27. Jmeter如何防止内存溢出(OOM:out of memory)

  1. Jmeter安装目录下的bin目录下找到jmeter.bat,右键–>编辑
  2. 搜索 set HEAP,把内存设置大点(Xms最小,Max最大)

28. 性能测试脚本上午运行没问题,下午运行时报错且脚本没有修改过以及开发没有改动过代码,请问如何排除?

解决:

  1. 检查网络是否通畅
  2. 检查服务器是否启动
  3. 检查服务器CPU、内存等是否过高
  4. 项目版本是否被调包了
  5. 测试环境地址是否正确

29. jmeter分压无法返回响应数据

启用jmeter.properties文件的mode_Standard

30. Jmeter运行方式

有界面运行jmeter–>GUI(可视化界面)模式

  1. jmeter分压的执行时通过命令行(cmd窗口)去执行的
    ①先通过远程访问到192.168.1.193服务器上–连接成功
    ②调用DOS窗口(cmd命令窗口),在后台程序运行jmeter -n -t xxx.jmx -R 192.168.1.193… (线程数是通过xxx.jmx脚本来决定)
    ③运行完成后,把结果通过网络返回给控制机
  2. jmeter是在Windows有没在linux运行过?–CLI模式(命令)
    jmeter -n -t xxx.jmx -l 日志文件
    jmeter -n -t jmx文件 -l [结果文件.jtl ] -R 127.0.0.1,192.168.1.192 -e -o [输出文件夹路径]
    -l 结果文件.jtl------可不填(产生结果直接在控制台输出)
    -R 远程ip地址-----可不填(不需要用到分压时)
    -e -o 输出文件夹路径—输出HTML报告(文件夹目录一定要为空)-----可不填(不生成HTML报告)

31. 性能测试做的是前台还是后台?

  • BS的项目:主要做的是后台服务器的性能,浏览器端不做性能测试;
  • APP的项目:手机端和服务器端的性能
    手机端:用monkey来做;
    服务器端:用Jmeter来做的

为什么用linux:

  1. 提取日志,定位问题
  2. 独立搭建测试环境
  3. 性能测试监控系统资源
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值