Jmeter面试题_软件测试的面试题及答案

Jmeter面试题_软件测试的面试题及答案Jmter性能测试面试题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、性能测试的流程是什么?

    需求调研-环境搭建-脚本编写-准备数据-执行测试-回归调优-测试报告   

2、什么是关联?在什么情况下需要做关联?

    关联是将服务器返回的数据通过一定的规则过滤出来,将其保存成参数,以供后续代码中使用
    当服务器返回的数据是动态变化的,且后续脚本中需要使用这个变化的数据时,才需要做关联   

3、Jmeter中怎么写Java脚本,简要说下步骤

    a)通过eclipse等工具手动编写一个Java类,实现JavaSamplerClient接口
    b)将要写的代码放到JavaSamplerClient接口对应的实现方法中,如果需要暴露出参数,将参数添加到getDefaultParameters方法中
    c)脚本调试通过后,将写好的脚本达成runnable jar,将jar包和依赖的lib文件夹放到Jmeter的lib/ext下,重启Jmeter
    d)在Jmeter中添加JavaSampler,选择jar包中的测试类

4、一般在什么情况下会在Jmeter中使用BeanShell

    a)被测接口调用前需要对参数做一些逻辑处理,可以使用BeanShell前置处理器
    b)需要对接口的返回值做一些逻辑判断,可以使用BeanShell断言

5、怎么根据线下环境评估线上环境的性能

    a)首先线下必须要有专门的性能测试环境
    b)线下环境单台机器配置和线上不能相差很大,可以通过单台的机器性能推算出多台机器性能(需考虑一定的性能损耗)
    c)如果线下机器配置很差,只能测试出程序有无性能问题,这样线下测试出来的数据对线上没有太大参考意义
    d)如果想获取比较准确的线上性能情况,建议最好做线上的性能测试

6、对于Linux系统,主要的监控指标有哪些?他们的各自阈值是多少?

	cpu使用率:<80%
 	load值:<cpu的核数
	系统内存:使用率<80%
	磁盘IO:<100%-90%
	网络IO:<带宽上限

7、线程都有几种状态?哪些状态需要关注?

    线程状态:runnable、waitting、timed-waitting、blocked、terminated
    最影响性能的是blocked状态(阻塞,锁)的线程,timed-waitting(限时等待)

8、Jvm中持久代(方法区)中主要存放什么数据?老年代主要存放什么数据?

    持久代中主要存放静态数据、常量、类的基本信息等
    老年代中主要存放对象的实例和数组等

9、应用服务器cpu高和数据库服务器cpu高的分析思路是什么?

    应用服务器的cpu高,先要看tps和响应时间,如果tps比较高,我们认为是正常的cpu消耗;如果tps比较低,那么往往某些代码过于消耗cpu,可以考虑使用jprofiler分析下
    数据库服务器cpu高,往往是因为sql语句执行效率比较低,可以通过对数据库慢查询是监控,结合执行计划进行分析,是否是相关表没有索引或索引未生效

10、出现内存泄露的根本原因是什么?你是怎么定位内存泄露原因的?

    内存泄露的根本原因是Jvm中老年代中存在着大量存活的对象,这些对象不能被GC回收掉,从而占满了整个老年代,造成Jvm一直处于FGC的状态,程序没有响应,服务器报OOM错误
    内存泄露主要通过分析老年代中占用空间最大的类都有哪些,然后去代码中找对应的类的创建。通常可以使用jdk提供的jvisualvm和jmap进行堆内存的分析

11、tps压不上去,可能有哪些方面的原因?

    a)压力机本身性能瓶颈
    b)网络IO瓶颈
    c)中间件(tomcat/nginx/mysql)连接数限制
    b)Java线程的阻塞、等待
    e)本系统资源的瓶颈(cpu、内存、磁盘、网络等)
    f)其他外部系统响应时间过长,造成本系统的time-wait

12、性能场景怎么设计?一般都有哪些性能场景?

    一般基本的场景包括:基准测试、单交易测试、混合测试、稳定性测试
    其他场景的可选场景:高可用性测试、异常测试等,以及其他的结合各自项目业务的场景

13、测试数据怎么构造?你一般都是采用哪些方法来造数据?

    a)调用业务接口构造数据
    b)直接写jdbc代码造数据
    c)存储过程造数据

14、常见的性能指标有哪些?分别是什么含义?

    tps:每秒事务量,代表了系统的处理能力,tps越高,性能越好
    响应时间:从发出请求到接受到系统响应数据所花费的时间,响应时间越短,性能越好
    吞吐量:网络上行和下行流量的总和,吞吐量是网络瓶颈定位的重要指标
    错误率:在压测过程中系统出现错误的比例

15、什么是集合点,什么场景下需要用集合点

    集合点是测试脚本中的一个标记,当每个虚拟用户执行到标记处时,会停留在标记处等待其他的虚拟用户,当达到预期设置的并发数时,标记处的所有用户同时启动执行后续的请求
    集合点会产生瞬间高并发,但是也会降低平均压力。所以在压测过程中,如果有要求瞬间高并发的业务,就需要使用集合点,比如抢购,秒杀之类的业务。
    没有类似业务则不需要加集合点

16、性能测试过程中,怎么判断网络瓶颈?

    一般性能测试都是在局域网内进行,在压测过程中,可以监控到服务器上网卡的流量,判断此流量是否已经达到局域网内网络设备的上限,比如路由器、交换机、网卡等
    在这些设备中,一般是服务器网卡网络吞吐量最低。服务器的网卡大多是千兆网卡,换算成MB=1000/8=125MB

17、服务器的cpu使用率和load是什么关系?

    通常情况下,cpu使用率和load值是正比关系,即cpu使用率越高,load值越高。但是在一些特殊情况下,也会出现cpu使用率不高,但是load值较高的情况
    比如某系统只能使用CPU中的单核运行,它可以占用单核cpu100%,但从整体cpu使用率来看,只是使用了一小部分。而随着并发的增大,单核CPU的任务队列会越来
    越长,造成了load值较高

18、性能测试脚本中为什么要做参数化?

    参数化把测试脚本中的请求数据动态化,避免使用单一固定参数进行压测。这也是为了更加真实的模拟用户的请求

19、Linux系统中的buffer和cache都起到什么作用。内存占用有大量的buffer和cache是异常情况吗?

    buffer和cache都是Linux中的缓存机制,cache里一般会缓存一些文件的内容,buffer会缓存一些需要写入磁盘的数据。
    Linux会利用空闲的内存做一些缓存,加快文件的访问速度。如果系统可用内存不足时,Linux会释放掉buffer和cache所占用的内存。
    所以内存占用中有大量的buffer和cache也是正常现象

20、性能脚本中的乱码问题怎么解决?

    1、如果在脚本中不使用或不判断乱码部分的数据,那可用忽略此问题,因为乱码并不影响性能
    2、如果需要使用乱码数据,可以通过压测工具提供的一些方法进行编码转换(如LR的lr_convert_encoding_string函数,Jmeter修改配置文件等方式)

21、在性能测试工具中,使用线程和进程压测有什么区别,Loadrunner和Jmeter分别使用什么进行发压?

    Loadrunner同时支持进程和线程发压。当选择进程时,每个虚拟用户单独启动一个进程,当选择线程时,每50个线程启动一个进程
    Jmeter只支持线程发压
    进程和线程的主要区别为,进程之间是独享内存的,线程之间是共享内存的。使用进程压测占用的资源会大一些。在高并发下,会减少压测工具自身的异常情况    

22、性能测试脚本中,定义事务的原则是什么?

    在测试脚本中,事务定义的业务流程越短越好。同时脚本中不要写过多复杂的逻辑,对于一个复杂的场景,可以考虑把脚本拆解成多个简单的脚本

23,产品就只给一个需求,需求调研的内容都不知道,也没人告诉你,怎么开展性能测试?

   a> 没有任何途径进行需求调研的情况下,可以跳过需求调研,直接开始压测。
   b> 压测完成后,可以把本次压测数据开会讨论,共同决定是否满足性能需求;
   c> 或者根据行业内的通用指标规范,比如高频接口响应时间<100ms,低频<200ms的标准来判断

24,怎么进行性能场景设计?

    通用类场景:
    a> 单接口测试场景
    b> 混合接口测试场景
    c> 高可用性场景(集群情况下)
    d> 网络异常场景(如有必要)
    e> 稳定性场景
    f> 其他业务相关场景

25,给你一种xx协议的系统,怎么测试

    a> 先了解协议的格式,数据交互
    b> 查找压测工具是否支持本协议
    c> 如果不支持,通过自己写代码的方式发送协议包进行测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187523.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月19日 上午11:46
下一篇 2026年4月19日 上午11:52


相关推荐

  • ISP基本框架及算法介绍

    ISP基本框架及算法介绍ISP基本框架及算法介绍ISP(ImageSignalProcessor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量。它可以分为独立与集成两种形式。ISP的Firmw…

    2022年5月29日
    73
  • 豆包、文心一言、DeepSeek各自有什么优点?

    豆包、文心一言、DeepSeek各自有什么优点?

    2026年3月12日
    1
  • ubuntu安装qq

    安装的版本是国际版1.安装依赖库sudoapt-getinstalllibgtk2.0-0:i386sudoapt-getinstalllib32ncurses52.下载下载链接:http://pan.baidu.com/s/1jIwKdXshttp://linux.linuxidc.com/3.解压并安装wineqqintl定位到该路径,然后再输入sudodpkg-iwi

    2022年4月6日
    55
  • linux卸载宝塔面板_如何卸载宝塔面板

    linux卸载宝塔面板_如何卸载宝塔面板宝塔的安装与卸载安装Centos安装脚本yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.shUbuntu/Deepin安装脚本wget-Oinstall.shhttp://download.bt.c…

    2022年8月30日
    5
  • java必背代码_20个常用java代码段

    java必背代码_20个常用java代码段下面是 20 个非常有用的 Java 程序片段 希望能对你有用 1 字符串有整型的相互转换 Stringa String valueOf 2 integertonum Integer parseInt a numericstrin 向文件末尾添加内容 BufferedWrit null try o

    2026年3月18日
    2
  • linux中的 slab/slob/slub

    linux中的 slab/slob/slub很久很久以 bai 前 一个叫做 MarkHemment 的哥儿们 du 写了 Slab 在接下来的一些年里 zhi 其他人对 Slab 进行了完善 dao 一年半以前 SLOB 问世了 SLOB 的目标是针对嵌入式系统的 主要是适用于那些内存非常有限的系统 比如 32MB 以下的内存 它不太注重 largesmp 系统 虽然最近在这方面有一些小的改进 几个月之前 SLUB 闪亮登场 它基本上属于对 Slab 的重设计 redesign 但是代码更少 并且能更好的适应 largeNUMA 系统 SLUB 被很认为是 Slab 和 Slob 的取代者 大

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号