1.如何识别系统瓶颈?
从TPS指标分析,TPS即系统单位时间内处理事务的数量。当前随着用户数的增长期系统每秒可处理的事务数是否也会增长。
2.think_time的作用是什么?
A、降低当前运行时压力,环节对应用服务器所造成的压力;
B、模拟真实生产用户操作,考察对服务器所造成的影响。
3.性能测试开始的前提是什么?
被测系统的正常业务流程通过,即集成测试通过后。
4.进行参数化的目的是什么?
A、减少脚本的大小;
B、便于脚本的维护,从而更加真实的模拟生产环境的数据。
5.容量测试方法中为什么要以逐步递增的方式进行?
虚拟用户数随着负载时间的延长而增加,可以帮助确定系统响应时间减慢的准确时间以及准确的用户数。
6.假设在测试过程中某些事务的响应时间过长,但分析应用服务、数据库以及网络都属于正常现象,问题可能出现的原因有哪些?
A、LoadRunner客户机器是否已无法承载当前运行压力导致LoadRunner无法及时获取从服务端返回的信息;
B、Tink_time是否已忽略;
C、确定当前被测系统架构,是否为在每次测试过程中清楚缓存所导致。
7.如何发现应用服务器的相关问题?
A、通过某些事务的运行,判断是否在应用代码层未进行调优导致事务响应事件过长;
B、通过实时监控工具(nmon等)监控分析:
a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;
b、在系统运行过程中其内存是否存在内存泄漏现象;
c、打开相应日志、分析在运行过程中是否存在交易报错并获取错误原因查看是否由于代码原因导致交易错误发生。
8.如何发现数据库的相关问题?
A、通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响应过长的问题发生。
B、通过实时监控工具(nmon等)监控分析:
a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;
b、在系统运行过程中其内存是否存在内存泄漏现象;
9.性能测试监控工具nmon安装及使用方法?
nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其他一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。
nmon所记录的数据包含以下一些方面:
A、CPU占用率;
B、内存使用情况;
C、磁盘I/O速度、传输和读写比率;
D、文件系统的使用率;
E、网络I/O速度、传输和读写比率、操作统计率与传输包的大小;
F、消耗资源最多的进程;
G、计算机详细信息和资源;
H、页面空间和页面I/O速度;
I、用户自定义的磁盘组;
J、网络文件系统。
nmon的安装步骤如下:
A、用root用户登陆到系统中;
B、建目录:#mkdir /test;
C、把nmon用ftp上传到/test,或者通过其他介质拷贝到/test目录中;
D、执行授权命令:#chmod +x nmon
nmon数据采集过程:
为了实时监控系统在一段时间内的使用情况并将结果记录下来,可以通过如下命令实现:
#./ nmon -f -t -s 30 -c 180
备注:
-f参数:按标准格式输出文件:_YYYYMMDD_HHMM.nmon;
-t参数:输出中包括占用率较高的进程;
-s 30参数:每30秒进行一次数据采集;
-c 180参数:一共采集180次;
输入命令回车后,将自动在当前目录生成一个hostname_timeSeries.nmon文件,如果hostname为test1,生成的文件为:test1_090308_1313.nmon。
通过sort命令将nmon结果文件转换为CSV文件:
#sort -A test1_090308_1313.nmon>test1_090308_1313.csv
生成图形化结果:
通过nmon analyser.xls工具可以把监控的结果文件转换成excel文件,方便Fenix系统的各项资源占用情况:
A、打开nmon analyserxls工具;
B、调整excel宏安全性:工具-宏-安全性;
修改安全级别与可靠发行商:
(选择)安全级别:低;
(勾上)新人所有安装的加载项和模板;
(勾上)信任对于“Visual Basic项目”的访问;
C、修改完后,确定-关闭nmon analyser.xls,重新打开;
D、点击Analyse nmon data按钮,加载之前下载的test1_090308_1313.csv文件。
1、性能测试流程
重点:需求分析调研、预期指标设定、场景建模、环境数据准备、监控分析;
细节:如何分析性能需求?测试的目的、范围如何界定?预期指标怎么得到?需要哪些数据和手段来评估?压测环境配置模型如何抉择?测试数据如何准备?
2、网络协议
重点:HTTP、TCP、Dubbo及其他RPC框架接口;
细节:三次握手、http和https的区别、AES和RSA的区别、RPC框架的原理、常见的RPC框架;
3、系统架构
重点:微服务、分布式、SLB、ESB;
细节:docker&K8S&Prometheus、分布式的系统,测试时要注意哪些?负载均衡实现原理?涉及到ESB类型的系统,如何进行性能测试?
4、中间件
重点:MQ&kafka、Redis、Tomcat、JVM、链路监控工具(cat、pinpoint、skywalking);
细节:MQ和kafka各自的优点、如何测试MQ的性能、Tomcat参数配置&线程池、缓存穿透&缓存雪崩、Redis的缓存淘汰算法LRU&LRU、JVM堆的构成、OOM的原理&如何监控?
5、压测&监控工具
重点:jmeter、locust、PTS、nmon、zabbix
细节:jmeter参数化&事务控制&二次开发&分布式压测、对其他压测工具的了解及使用程度、nmon使用&二次开发、zabbix监控部署、对监控实时可视化的了解;
6、linux相关
重点:常见的监控分析命令、查看日志的几种方式、CPU的工作原理、shell脚本;
7、常见性能瓶颈分析
重点:TPS上不去、负载不均衡、高并发下大量请求报错、TPS波动大;
8、性能场景
重点:容量规划、性能基线、全链路压测;
PS:上面的问题会根据候选人具体的面试表现来针对性的提问,由浅到深,并不是全部都会问到。
三、如何成为一名合格的性能测试工程师?
1、快速学习,了解基础的理论,学习常见的压测监控分析工具;
2、在功能测试完成前提下,主动承担性能测试工作,大量实战;
3、寻找合适优秀的社区学习交流分享,思考沉淀;
面试题:
1、怎么做的性能测试?说一下性能测试过程
2、怎么设计场景的?
3、性能测试前期的分析和案例是怎么做的?
4、性能测试过程中是否要监控liux?怎么监控的?
5、你们公司的tps是多少?怎么分析tps?
6、一般模拟多少用户?
7、测试数据(搜索的)怎么构造的?---开发还是,自己灌入的?
8、yslow和dytrace的区别?dynatrys具体是怎么分析js的
9、怎么模拟10000个用户并发
10、什么时候用集合点?
11、写sql语句
表1学生表:姓名、性别、年龄、学号
表2成绩表:语文XX分,数学XX分,英语XX分,学号
请写sql语句输出姓名、年龄,总成绩前5名的学生信息
1、性能测试包含了哪些软件测试(至少举出3种)?
负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
压力测试(Stress Testing):强度测试也就是压力测试,压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
或者在下面选择几项:
并发测试 - 测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题
基准测试 - 比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
争用测试:- 核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。
性能配置 - 核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
负载测试- 核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。
强度测试- 核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。
容量测试- 核实测试用户同时使用软件程序的最大数量
2、请问什么是性能测试、负载测试、压力测试?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
负载测试、压力测试参考答案如上题。
3、在给定的测试环境下进行,考虑被测系统的业务压力量和典型场景?
负载测试
负载测试是用来测定系统饱和状态、确定阀值。其特点有:
1) 这种方法的目的是找到系统处理能力的极限;通过“检测、加压、阀值”手段找到如“响应时间不超过10秒”,“平均cpu利用率低于65%”等指标。
2) 这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景、另外HP Mercury LoadRuner在使用该方法进行“加压”的时候必须选择典型场景。
3) 这种性能测试方法一般用来了解系统的性能容量,或者是配合性能调优的时候来使用。特别是该的Weblogic 和库的性能调优。
4、什么时候可以开始执行性能测试?
在产品相对比较稳定,功能测试结束后。灵活性比较强。
5、简述性能测试的步骤。
熟悉应用
了解应用的架构、功能逻辑
测试需求
1、需要将开发给定的需求转为吞吐量和响应时间。
2、根据测试目的,细化需求
测试准备
测试准备包括测试客户端机器准备、测试数据准备、测试脚本准备。
测试执行
测试的执行中,需要监控测试客户端和服务器性能,监控服务器端应用情况:
客户端的系统资源(cpu、io、memory)情况
服务端的系统资源(cpu、io、memory)情况
服务器的jvm运行情况
服务端的应用情况,看是否有异常
响应时间、吞吐量等指标
系统资源监控,linux下可以采用的工具有:vmstat、top、meminfo等。
JVM的监控,可以用jprofiler工具,linux下面的jmap、jhat等。
响应时间、吞吐量等,由grinder提供。
上述这些信息,一般在测试结束后,均需要归档整理,已备后续详细分析
我们自己开发一套脚本,用于以固定的频率获取测试客户端和服务器的vmstat和top输出、grinder的log,并从中截取有用信息保存,用于事后分析。
每次测试运行完以后,肯定会增加很多数据,需要考虑本次执行对数据量的影响,如果数据量的变化对后续测试会有影响,则需要清理数据。
测试分析
6、你如何识别性能瓶颈?
RBI方法
重点测试“吞吐量”指标,因为RBI认定80%的系统性能瓶颈由吞吐量造成。RBI方法
按照网络、硬件、数据库、应用服务器、代码的顺序自上而下分析性能
工具:IBM、HP、OpenSource工具都支持。需使用分析模块、根据Weblogic、Oracle区别有专门的工具实现RBI。
7、性能测试时,是不是必须进行参数化?为什么要创建参数?LoadRunner中如何创建参数?
是。模拟用户真实的业务操作。
创建参数列表,用参数替换固定的文本。
8、你如何设计负载?标准是什么?
负载测试计划多少用户数量、使用什么类型的机器、以及在什么环境下进行。主要基于两个重要的文档,任务分布图和事务信息,任务分布图告诉我们在负载时间段内,某一个事务使用的用户数,高峰使用率及低峰使用率均来自该文档;事务信息告诉我们事务名及优先级,在设计场景时可以参考。
9、解释5个常用的性能指标的名称与具体含义。
响应时间、并发用户数,吞吐量,性能计数器,TPS,HPS
响应时间:指的是“系统响应时间”定义为应用系统从发出请求开始到客户端接收到响应所消耗的时间。把它作为用户视角的软件性能的主要体现。
最大并发用户数:有两种理解方式,一种是从业务的角度来模拟真实的用户访问,体现的是业务并发用户数,指在同一时间段内访问系统的用户数量。另一种是从服务器端承受的压力来考虑,这里的“并发用户数”指的是同时向服务器端发出请求的客户数,该概念一般结合并发测试(Concurrency Testing)使用,体现的是服务端承受的最大并发访问数。
吞吐量是指“单位时间内系统处理的客户请求的数量”,直接体现软件系统的性能承载能力。
性能计数器(Counter)是描述服务器或操作系统性能的一些数据指标。例如,对Windows 系统来说,使用内存数(Memory In Usage),进程时间(Total Process Time)等都是常见的计数器。
思考时间(Think Time),也被称为“休眠时间”,从业务的角度来说,这个时间指的是用户在进行操作时,每个请求之间的间隔时间。从自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间,体现在脚本中,具体而言,就是在操作之间放置一个Think 的函数,使得脚本在执行两个操作之间等待一段时间。
TPS:Transaction per second,每秒钟系统能够处理的交易或者事务的数量。它是衡量系统处理能力的重要指标。
点击率:HPS,每秒钟用户向WEB服务器提交的HTTP请求数。
10、描述不同的角色(用户、产品开发人员、系统管理员)各自关注的软件性能要点。
用户:重点关注打开速度及响应时间
开发:重点关注响应时间和数据库交互
管理员:重点关注用户感受到的软件性能;如何利用管理功能进行性能调优;如何利用其他软硬件手段进行性能调优
11、请分别针对性能测试、负载测试和压力测试试举一个简单的例子?
性能测试例子:公司开发了一个小型项目管理系统,上线前需要做负载、压力、大数据量、强度测试等。
负载测试:逐步加压,从而得到“响应时间不超过10秒”,“服务器平均CPU利用率低于85%”等指标阀值。
压力测试:逐步加压,从而使“响应时间超过10秒”,“服务器平均CPU利用率高于90%”等指标来确定系统能承受的最大负载量。
12、请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?
在查看需求文档,从中提取性能测试需求,与用户交流,了解实际使用情况。
结合业务信息设计操作场景总结出需测试的性能关键指标。
执行用例后根据提取关键性能指标来分析是否满足性能需求。



