多测师讲解性能测试_面试题_001高级讲师肖sir
什么叫做性能测试?
1、 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完
成特定的功能,所以一般来说性能测试介入的时机是在功能测试完成之
后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其
它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标
是否达到了要求,这就是性能测试。
2、指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系
统的各项性能指标进行测试
为什么要做性能测试?
1、评估系统的能力
2、验证系统的稳定性和可靠性
3、识别系统中的弱点
4、系统调优
? 针对上面这几种目的,针对不同的结果,给出不同的应对方案和措施,这才是性
能测试的最终目标
? a、测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的
能力,并帮助作出决策。
? b、受控的负荷可以被增加到一个极端的水平,并突破它,从而修复
体系的瓶颈或薄弱的地方。
? c、重复运行测试,验证调整系统的活动得到了预期的结果,从而改
进性能。
? d、检测软件中的问题:长时间的测试执行可导致程序发生由于内存
泄露引起的失败,揭示程序中的隐含的问题或冲突。
? e、在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠
性是否满足要求的唯一方法。
性能测试的流程有哪些?
需求的分析
性能场景的设计
性能计划的编写
脚本的开发
性能环境和数据的准备
性能的执行
性能结果分析
性能总结报告
性能测试的类型
1. 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为
基础参考
2. 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系
统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
3. 压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注
点在于系统在峰值负载或超出最大载荷情况下的处理能力。
4. 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以
此检测系统是否稳定。
5. 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是
否存在死锁或者其他性能问题
1、性能测试包含了那些测试
负载测试,强度测试,数据库容量测试,基准测试以及竞争测试
2、性能测试的步骤
1、需求分析、写测试计划、设计测试用例
2、测试设计和开发(测试脚本录制及调试,测试场景设计)
3、测试执行(大家测试环境、场景部署、场景执行、监视场景)
4、测试结果分析、性能问题定位、测试报告的评估
3、什么时候可以开始执行性能测试
功能通过后,一般需要进行性能测试的系统,都是用户量比较大,业务使用比较
频繁,比较重要的功能模块(被测系统的正常业务流程通过,即集成
测试通过后)
4、什么是集合点?设置集合点有什么意义?
在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一
任务,可以通过配置集合点来实现,多个用户同时进行某操作。
5、你如何识别系统瓶颈
从TPS指标分析(系统每秒处理可以处理事务数)当前随着用户数的增长
其系统每秒可处理的事务数是否也会增长
TPS每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以
request/second为单位
6、参数化的目的是?
减少脚本的大小,提供不同的值以提高执行脚本的能力,从而更加真实的
模拟生成环境的数据
7.如何发现数据库的相关问题?
通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响
应过长的问题发生。
通过实时监控工具(nmon等)监控分析:系统在运行过程中其CPU是否稳定运行或CPU
耗用是否过高;
在系统运行过程中其内存是否存在内存泄漏现象
8、如何确定系统最大负载?
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生
变化,当出现了性能拐点,
比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用
户数就是系统能承载的最大用户数
9、你们系统哪些地方(哪些功能)做了性能测试?
选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单
10、你们的并发用户数是怎么确定的?
1会先上线一段时间,根据收集到的用户访问数据进行预估
2根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等
11、你们性能测试在什么环境执行?
我们会搭建一套独立的性能测试环境进行测试
12、你们性能测试什么时间执行?
基准测试:功能测试之后,系统比较稳定的时候再做。
负载测试:夜深人静,系统没人用的时候
13、怎么分析性能测试结果?
首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率
,CPU等指标是否满足需求;
如果测试结果不可信,要分析异常的原因,修改后重新测试
14、think_time的作用是什么?
模拟真实生产用户操作,考察对服务器所造成的影响。
15、你们的性能测试需求哪里来?
1客户提供需求
2运维提供需求
3开发提供需求
16、有验证码的功能,怎么做性能测试?
1、将验证码暂时屏蔽,完成性能测试后,再恢复
2、使用万能的验证码
17、性能测试指标有哪些
响应时间
吞吐量
cpu
内存
io(I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分)
disk (磁盘的意思)
18、什么是负载测试?什么是性能测试?
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能
指标的情况下,
系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1
秒,
负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量
性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统
所能承受的最大负载压力
19.性能测试的类型:基准测试、负载测试、压力测试、稳定性测试、并发测试
20、常见的性能指标(重点)
(1)什么是吞吐量?
吞吐量,指的是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求
数/秒Or页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天Or页面访
问量/天来衡量。
(2)什么是吞吐率?
吞吐率通常指单位时间内从服务器返回的字节数,也可以单位时间内客户提交的
请求数。吞吐率是大型web系统衡量自身负载能力的一个重要指标,一般来说,吞
吐率越大,单位时间内处理的数据就越多,系统的负载能力也强。吞吐率与很多因
素有关,服务器的硬件配置,网络的宽带及拓扑结构,软件的技术架构。
(3)什么是事务?
定义一:某个用户操作步骤(功能)的集合。
定义二:性能测试中,事务是指从端到端,一个完整的操作过程,比如一次登录
、一次筛选条件查询,一次支付,一次发朋友圈;无论流程步骤是多是少,一定要
保证事务存在的意义性。
事务是脚本的一个特性,每个事务都包含开始事务和结束事务。事务用来衡量脚
本中一行代码或多行代码的执行所耗费的时间。
将开始事务放置在脚本中某行代码的前面,将结束事务放置在该行代码的后面,在
该脚本的虚拟用户运行时,这个事务将衡量该行代码的执行花费了多长时间。
(4)什么是响应时间?
对请求作出响应所需要的时间。
(5)什么是每秒点击事务数?
TPS表示服务器每秒处理的事务数,他是衡量系统处理能力的一个非常重要的指
标,在性能测试中,通过检测不同用户的TPS,可以估算出系统处理能力的拐点。
(6)什么是每秒点击次数?
每秒点击数是指每秒钟向web服务器提交的HTTP请求数,它是衡量服务器处理能
力的一个常用指标。需要注意的是,这里的相应时间并非鼠标的一次单击操作,因
为在一次单击操作中,客户端可能向服务器发出多个HTTP请求,切勿混淆。
(7)并发:
同一时间内向服务器发送同一请求
并发的3种情况:
? a、所有用户同一时间内做同一件事情或者同一个操作,这里同一个操作是指
同一个业务类型,如同时提交订单(流程性)
? b、所有用户同一时间内做同一件事情或者同一个操作,同时修改一个数据,
同时一个操作(一个流程中的具体环节)
? c、所有用户同一时间内对系统做不同的操作
所有用户包含如下:
a、注册用户:当前平台有多少人注册了
b、在线用户:当前平台有多少人在线
c、并发用户:测试过程中需要进行测试同一时刻操作的用户(测试数据)
(8)什么是断言/检查点?
响应会有2种情况:
第一:正确的响应
第二:错误的响应
jmeter中有个元器件叫做断言(Assertion),它的作用和loadrunner中的检查点
类似,用于检查测试中得到的响应数据等等是否符合预期结果,用以保证性能测试
中的数据交互与预期一致。
使用断言的目的:在request的返回层增加一层判断机制;因为request成功了,
并不代表结果一定正确;所谓的检查点,就是系统根据用户输入,按照业务要求的
逻辑处理后产生的数据,不同的业务场景、不同的结果会有不一样的要求;部分输
出是在客户的需求中明确要求展示;比如展示的字段可以直接观察到或者获取到,
部分输出是服务于系统维护人员、客服人员;当然还有部分输出也不包括不能输出
或者加密输出;比如客户的银行账号要求部分数字用*号来代替,客户的密码不能
在日志中输出等等;检查点的检查包括客户或者系统质量要求的必须输出的或者不
应该输出的两种情况。
(9)什么是参数化?
参数化是自动化测试脚本中的一种常用技巧。简单来说,参数化的一般用法就是
将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则;
这样脚本在运行时就可以根据需要选取不同参数值作为输入。
这种方式通常被称为数据驱动测试(Data Driven Test),参数的取值范围被称为
数据池(Data Pool)
21、性能调优
1、硬件上的调优
一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈
(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数
配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、
算法等)。
2、应用软件上的性能瓶颈
一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。
例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈
。
注意:JDBC连接池: 连接池的作用:连接池是将已经创建好的连接保存在池中
,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建
连接和销毁连接的过程。这样性能上得到了提高。
3、应用程序上的性能瓶颈
一般指的是开发人员新开发出来的应用程序。
例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程
不够),造成系统在大量用户方位时性能低下而造成的瓶颈。
4、操作系统上的性能瓶颈
一般指的是windows、UNIX、Linux等操作系统。
例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内
存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系
统上出现性能瓶颈。
5、网络设备上的性能瓶颈
一般指的是防火墙、动态负载均衡器、交换机等设备。
例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器
上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载
较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时
可以认为网络瓶颈。
22、Jmeter线程组中元器件的作用
1. 逻辑控制器:业务上有需要循环去处理一些数据。
2. 配置元器件:处理一些默认请求所需要携带的数据如http的头部信息和cookie
信息的处理。
3. 前置处理器:http请求之前需要完成的一些工作,如数据库测试中的连接数据
库的功能。
4. 后置处理器:关联需要用后置处理器,需要对响应数据做处理需要用到后置处
理器
5. 断言:对结果进行校验
6. 监听器:作用范围的每一个sample元件的信息并呈现。
7. CSV Data Set Config
8. 定时器:(重点)
loadrunner中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,
以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的。jmeter中使
用Synchronizing Timer实现Lr中集合点的功能,模拟多用户并发测试,即多个线
程在同一时刻并发请求。
1)添加同步定时器
线程组右击-> 定时器->Synchronizing Timer
2)参数设置
a. Number of Simulated Users to Group by: 此处填写并发数量
b. Timeout in milliseconds: 超时时间设置
Jmeter默认没有超时时间,如果没有设置,一旦没有达到集结数量的请求系统就
一直等待。计算超时时间方法参考(毫秒): 并发数量* 1000 / (线程数/在多少
时间启动这么多线程)
3)定时器的作用域
作用于该定时器之后的所有请求,也就是说定时器是在请求执行前起作用的并发
数和线程数一致时,并发启动时间,一定要大于线程组启动的时间,如果小于这个
时间,并发数量不准确(注意:线程组里的启动时间单位是秒,定时器里的等待时
间是毫秒,要注意单位换算,1秒=1000毫秒)
4)常用的性能指标插件
jp@gc - BytesThroughput Over Time:不同时间吞吐量展示(图表)聚合报告里
,Throughput是按请求个数来展示的,比如说1.9c,就是每s发送1.9个请求;而这
里的展示是按字节Bytes来展示的图表
jp@gc - Composite Graph:混合图表在它的Graphs里面可以设置多少个图表一
起展示,它可以同时展示多个图表
jp@gc - Hits perSecond:每秒点击量
jp@gc - PerfMonMetrics Collector:服务器性能监测控件,包括CPU,Memory
,Network,I/O等等
jp@gc - ReponseLatencies Over Time:记录客户端发送请求完成后,服务器端
返回请求之前这段时间
jp@gc - Reponse TimesDistribution: 显示测试的响应时间分布,X轴显示由
时间间隔分组的响应时间,Y轴包含每个区间的样本数
jp@gc - Transactionsper Second: 每秒事务数,服务器每秒处理的事务数
多测师讲解性能测试_面试题_001高级讲师肖sir的更多相关文章
- 多测师讲解接口测试 _面试题003_高级讲师肖sir
接口测试 一.你对HTTP有没有了解过?具体讲一下对http的了解.(答题思路: 定义.常见请求类型.状态码.请求头请求体.响应头和响应体.三次握手和四次挥手.)答:了解,我们做接口的时候基本上都是基 ...
- 多测师讲解html _图片标签003_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>段 ...
- 多测师讲解html _段落标签002_高级讲师肖sir
<html> <head> <meta charset="UTF-8"> <title>段落标签</title> < ...
- 多测师讲解接口测试 _理论基础知识001_高级讲师肖sir
前言: 我们今天进入接口测试的学习! 今天学习的内容是偏向理论 接口理论 了解接口测试(1) 一.什么是接口测试? 接口统称api,即程序与程序之间的对接.交接.交互.是测试系统组件间接口的一种测试. ...
- 多测师讲解html _无序列表006_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>无 ...
- 多测师讲解rf _基本使用002_高级讲师肖sir
在你安装好RF-ride之后,桌面就会生成一个RIDE图标.双击启动,界面如下:
- 多测师讲解html _表格标签007_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>表 ...
- 多测师讲解html _有序列表005_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>有 ...
- 多测师讲解html _链接标签004_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>链 ...
随机推荐
- 现象:当指定logback的FileNamePattern为日期2020-01-15后,如果有线程不断的往里写log,过了零点文件不会变成下一日2020-01-16,还是会在2020-01-15里继续写 结论:写log的线程不停,文件不会按日子更换。
logback版本:1.1.11 这个是我实验验证的,昨天我配置了一个logback,然后用两个线程不断往里写log,结果发现到了今天2020-01-16日,log文件还是昨天的logbackCfg. ...
- Ubuntu更换国内源--解决终端下载速度慢的问题
目前我已知的更改国内源的方法基本上就两种,第一种,把/etc/apt/sources.list文件里的源更换一下,改成阿里云或者其它源.第二种,更换在设置中software&updates(软 ...
- JZOJ1496 页
Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场精彩的天马队列变换表演.首先,战神安排n头高度不同 ...
- elasticsearch跨集群数据迁移
写这篇文章,主要是目前公司要把ES从2.4.1升级到最新版本7.8,不过现在是7.9了,官方的文档:https://www.elastic.co/guide/en/elasticsearch/refe ...
- spring5源码 -- IOC容器设计理念和核心注解的作用
一. spring源码整体脉络介绍及源码编译 二. Spring IOC的源码深入学习 2.1 ioc容器的加载过程(重要) 2.2 bean的生命周期源码深度剖析 2.3 循环依赖总结讲解 2.4 ...
- 万字详解TDengine 2.0整体架构设计思路
导读:涛思数据8月3日将TDengine 的集群功能开源,TDengine具有超强的性能和功能,为什么能做到?它到底有哪些技术创新?今将TDengine的整体设计文档分享出来. 1: 数据模型 物联 ...
- python:一切皆对象
学过java语言的童鞋都知道,java是一门面向对象语言,其基本思想就是一切皆对象.Python也是一样的,甚至Python将面向对象思想贯彻地更加彻底,因为在Python中,class本身是一个 ...
- QQDIV失效补救
{"styleId":22,"bgId":3807,"cardId":3807,"renderInfo":{" ...
- burp suite之spider(爬虫)
spider (蜘蛛,这里的意思指爬行) 像蜘蛛一样在网站上爬行出网站的个个目录信息,并发送至Target. 1.Control(控制) Spider is paused :停止蜘蛛爬行 Clear ...
- GitBook 3.2.3入门
简介 GitBook 是一个基于 Node.js 的命令行工具,可使用 GitHub / Git.Markdown.AsciiDoc来制作精美的电子书.GitBook 可以将文档作为静态网站或电子书( ...