Jmeter性能测试面试题个人见解

一、请说明你用Jmeter做性能测试的整体过程

不管用什么工具做性能测试,流程都 是一样的,仅是编写脚本的工具不同

主要分为五个阶段

1、性能需求调研

进行需求调研与分析,输出性能测试需求表和性能测试计划。需求的来源分为几种:

1)产品经理或客户方直接提出,类似单位时间内的访问量达到多少、业务响应时间不超过多少、业务成功率不低于多少、硬件资源消耗应该在一个合理的范围内等,性能指标,给出如下的性能要求:

2)根据用户操作行为大数据来分析

  • 用户用户频繁使用,且存在大量用户频繁使用的业务流程;比如说一个电影管理平台,排片、售票,卖品出入库、销售等业务的使用就很频繁。

  • 交易占比高,日常占比在80%以上甚至更高的业务流程;比如说一个物流系统,则收货发货的业务流程就是占比最高的。

  • 特殊交易日或峰值交易占比80%以上甚至更高的业务流程;例如购物网站平时的负载集中在晚上,但是双11,618等特殊日子,访问量和交易量会有集中爆发期。

  • 性能较差且做过调整的业务流程;比如说如果一个批量下单的模块,曾经因为性能问题调整过多次的,那它仍然可能会继续出问题。

  • 一些特定的业务场景;比如说报表导出数据量很大,又很频繁操作的功能。

3)参考其他同行类似项目的数据。

2、性能测试准备

1)制定测试方案、编写性能测试用例。

2)使用Jmeter编写性能压测的脚本,先从单接口场景调试好脚本,然后设计对应的性能测试场景,先写在性能测试方案里。

3)准备性能测试数据,比如说如果要测试10万个用户登录的场景,则需要事先准备10个有效的用户信息,可以通过跑注册脚本、直接上生产库上获取等方式,准备好CSV或txt等格式的数据。

3、用例执行

参照性能测试方案和性能测试用例里的场景设计,执行测试用例,记录性能测试结果,做好性能测试的监控,对测试结果进行分析,输出性能测试的执行日志。

4、编写测试报告

编写性能测试报告,包含测试背景、目标、方法、压测指标本次测试结口、场景用例、测试结果,出现的缺陷和问题,结果分析和性能测试的结论,输出性能测试分析报告。例如下图是一个影票销售系统的卖品业务的性能测试结果,需要包含各个性能指标和最终结论。

大型项目的性能测试往往是由多个项目组协同测试,各自报告所负责业务的测试结果,可以在线上共同协作文档上同时提交自己的测试报告。

5、测试总结

对本次压测过程进行总结和复盘。比如说压测过程中是否遇到什么阻碍,如何解决的,测试服务器与生产服务器是否有差异,测试结果的参考实用性如何,是否还有什么风险,对以后的性能测试是否还有建议等。

二、做性能测试时如何减少JMeter的资源需求

做性能测试,使用的工具本身也会消耗一定的系统资源,为了尽量减少对测试结果的影响,在用Jmeter做性能测试时,需要做一些措施

1、使用非GUI模式进行测试,例如jmeter -n -t test.jmx -l test.jtl

2、使用尽可能少的监听器,最好不要在负载测试期间使用“查看结果树”或“在表中查看结果”监听器(调试脚本的时候用,调试完停用,如果压测过程中出错,可以重新打开查看结果树,但是勾选“仅错误日志”)

3、测试计划的“函数测试模式”不要勾选上,它是“只有当你需要记录每个请求从服务器取得的数据文件时才需要选择函数测试模式”,如果勾选了就会占用很多资源。

4、只做必要的断言,做接口自动化时会各个用例都写上断言,但是性能测试最好只在很有必要的地方做断言。

三、请你随意讲几个Jmeter聚合报告里的参数分别代表什么?

Jmeter脚本添加聚合报告监听器,执行性能测试后生成聚合报告,主要生成“响应时间”、“吞吐量”、“错误率”、“带宽”等数据,这些也正是代表所测试服务器性能的数据。

A、基本信息

1、Label:请求的名称,就是脚本中Sampler的名称。

  2、#Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次。

B、响应时间

执行一个操作所需要的时间,包括从发出请求开始到最后收到响应所需要的时间。响应时间的计算要考虑到用户的数目,用户数目越多,响应时间必须越快。

  3、Average(平均值):默认情况下是单个Request的平均响应时间,当使用了Transaction Controller(事务控制器) 时,也可以用Transaction的时间,来显示平均响应时间 ,单位是毫秒。

  4、Median(中位数):50%用户的响应时间小于该值。

  5、90% Line(90% 百分位):90%用户的响应时间小于该值。

  6、95% Line(95% 百分位):95%用户的响应时间小于该值。

  7、99% Line(99% 百分位):99%用户的响应时间小于该值。

  8、Min(最小值):最小的响应时间。

  9、Maximum(最大值):最大的响应时间。

以上值都可作参考,实际工作中最关注的是90%的值,比如说如果这个值是100,即是90%的用户响应时间都小于100ms。这个值越小表示接口响应越快,性能越好。

C、吞吐量

  10、Throughput(吞吐量):默认情况下表示每秒完成的请求数(Request per Second)。

TPS这个值越大,说明服务器的处理能力越强

D、错误率

  11、Error%(异常%):错误率=错误请求的数量/请求的总数。

测试结果异常指标,,错误率越低越好,为0表示没有异常请求。对于一般业务来说错误率要在万分之一以下(按实际需求为准)

 E、带宽

从服务 器端接收返回数据所占用网络带宽,值越小,占用带宽越小,性能越好,如果该值非常大,就要考虑优化。

12、Received KB/sec (接收数据):每秒从服务器端接收到的数据量。

13、Sent KB/sec(发送):每秒发送到服务器端的数据量。

 四、你们公司做性能测试时是用单机压测还是分布式压测?可以说说它们的区别吗?

以前项目小的时候我用过普通模式,即单机压测的方式进行测试,后面测试大型项目的时候基本都是使用分布式模式进行压测。

1、区别

普通(单机)压测:采用单台机器对目标服务器产生的压力,因为受限于CPU、内存、网络、IO等因素的影响,通常只能模拟几十到几百用户的并发访问。不符合大型项目的实际情况

分布式压测是利用多台机器同时向目标服务器产生压力,可以模拟几万到上亿级别用户的并发访问。

2、Jmeter分布式压测原理

总控机器的节点master(运行JMeterGUI的系统),其他产生压力的机器(多台)叫slave(运行Jmeter-sever系统),master会把压测脚本发送到 slave上面 执行的时候,slave上只需要把jmeter-server打开就可以了,不用启动jmeter 。结束后,server会把压测数据回传给master,然后master汇总输出报告

注意:

1)master和各个slave机器必须使用同一局域网,尽可能减少网络带宽的影响。

2)使用非GUI模式,避免不必要的cpu、内存损耗。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值