性能测试基础知识总结

1.概念

性能测试、负载测试、压力测试?
1)性能测试:是广义上的概念。
通过工具,获得系统在不同工况(状态)下的性能指标值----需要不断尝试
如:你跑100米多长时间?
注意:不同测试阶段,关注点不同:
1)产品刚出来,初次做时—不断尝试和验证;2)项目包更新了之后,再次验证性能之后,观察性能指标是优化了还是变差了呢?
工具有哪些?Jmeter、loadrunner等
2)负载测试:属于性能测试前期阶段做的事情。
通过逐步加压,观察服务器的运行情况----不断尝试的过程
如:看你有几斤几两?就在天平两边加砝码,观察多重?一点点加砝码,这个过程就是负载测试。
比如从10-20-30-…-100,这样一步一步测试,才知道它的性能指标为100(并发用户数)左右的拐点,之前的这个过程叫做负载测试。
3)压力测试:
在一定的负载压力下,持续运行一个比较长时间,查看系统稳定性
如:最近工作压力好大?—是在你加了很长时间的班,工作强度很大,你才会说你压力很大。如果不加班,很清闲,你不会说你压力很大。
比如先拿10-20的并发用户数,让它持续运行一段时间,服务器没有多少的压力,但是这个时候,如果内存释放不合理的情况下,也会暴露些问题。内存泄露等问题。
注意:先用低的,再用高的。—这是做性能测试的工作经验,也就是说如果系统在并发用户数相对较低时(10-20个时),就已经暴露出来了一些问题,那就没有必要去测高量的值。
·比较长的时间是多长?----24小时的倍数。1天为单位的,持续运行。
·有一些是:波段性的压力测试,即一会儿高一会儿低。
4)强度测试:企业里做的比较少的
在系统资源特别低的情况下,系统运行情况,目的是找到哪里最先失效
如:水桶短板
好处:服务里面最短的短板找出来,把短板补足,就会提升整体性能,属于性能测试调优的过程。
5)容量测试:----当你真正去做性能测试的时候才需要考虑的
在一定的资源下,不同数据量级时,系统某些性能指标值的值
比如:生产数据库的量级是千万级,在百万级、十万级,在不同的数据量级,性能指标时不一样,只有数据库和生产数据一样的量级的时候,性能指标值才能做参考。

系统用户数、在线用户数、并发用户数、线程数?
1)系统用户数
狭义:系统的注册用户数量
广义:历史以来所有的访问过的系统的用户数

2)在线用户数
狭义:当前登录的用户
广义:当前正在访问系统的用户—有登录/没有登录的游客等

3)并发用户数 —可以是相同的请求(同一接口,登录),也可以是不同的请求(不同的,比如登录、充值等等)
同一时间点,执行相同请求的用户数

4)线程数(Virutal User)
性能测试工具用于模拟用户的虚拟用户数量
线程数:用于模拟用户数的虚拟用户数量。
模拟1000人同时发起“登录”请求,模拟并发用户数。比如Jmeter里的线程数

2.常用的指标

·TPS、QPS?----服务器的衡量指标
1)TPS(Transactions Per Second)服务器每秒通过事务数量
事务:指一个客户机向服务器发送请求然后服务器做出反应的过程
每秒完成从发送请求到收到响应请求,数量的合计,就是TPS的值
一个TPS里面会包含多个QPS

2)QPS(Queries Per Second)每秒查询率或请求率----这是企业里用的名词
每秒向服务器发起查询请求的数量
比如,仅有一个登录接口,但是可能需要查询的内容很多,查询用户是否注册,是否在不同的终端登录,是否和数据库信息一致等等。一个事务也会有多个接口。

3)差异
一个Transactions可能有多个Queries,如访问网络。

吞吐量、吞吐率?—网络的衡量指标
1)吞吐量 事务/s
单位时间内系统处理的用户请求的数量
如:港口的吞吐量,我们常说的是1年港口装卸作业的总量
2)吞吐率 Kb/s
单位时间内通过的数据的平均速率
90% 95% —一般不会是100%
3)差异
并行的吞吐量的单位时间的平均值

pv uv iv?
—通常是运维用到的做多一些,我们可以基于这些去换算成性能测试的一些指标值。
1)pv:page view页面访问量—F5一直刷新,访问量+1
2)uv:Unique Visitor 独立访客
3)iv:独立ip访客
uv和iv的区分

·响应时间= t1+ t2 +t3 = t
·发起 到 服务器 网络传输 t1
·服务器处理 响应时间 t2—(响应时间:数据库响应时间和应用响应时间等)
·服务器 返回 发起方 网络 t3
注意:这里的响应时间和用户体验的时间的区别。
用户体验的时间,通常是多个接口的加载,网络传输(会有延迟等),以及页面渲染的时间。
通常做性能测试的响应时间是接口响应时间,是没有页面渲染的时间的。

性能测试的前提条件:独立服务器,网络直连
注意:性能测试需要用有线网络来做,无线网络会导致数据不稳定,会导致数据做不了性能分析。做有线网络的直接连接,不使用代理连接等。就是要避免网络的不稳定造成数据的不稳定情况。----工作经验
一般地,会设定一个具体响应时间,参照响应时间最高不能超过多少的值为宜。结合企业实际的情况,各有不同的指标。

200*90% 180s/180
200s/200

·性能测试工具—Ir、Jmeter、Python

3.与功能测试的区别

与功能测试的区别,功能测试需要去查找bug,性能测试不需要。
性能测试在测试方式、方法等方面,与功能测试不同,关注的指标等不同。

4.你是如何开展项目的性能测试的?

第一步:测试准备
前期要了解项目需求,熟悉这个业务,然后呢要确定咱们的这个性能的指标,
指标要非常清晰的确定下来,不然后边没办法做,接下来我们还得去准备我们的测试方案,测试用例,
然后要预估好这个工作量,这些都是为后期做准备的
第二步,环境搭建: 搭建测试环境,性能测试是需要独立的测试环境的,独立的搭建应用环境,数据库环境,还有网络
另外还有一个就是性能的监控环境,
第三步:脚本开发: 开始写脚本要根据我们的不同的一个协议来选择不同的这个工具,写好脚本,要进行调试,调试通过之后,
把脚本转化成性能的脚本。
第四部:测试执行, 根据前期写好的测试用例来设计不同的性能场景来运行,需要使用性能的监控来运行过程中监控数据,
有了这些数据我们才能做后面的性能分析
第五步:性能分析,分析硬件,分析应用,然后反复的调优,反复的定位最终发现的问题能调优的自己调优不能调优的,提交缺陷, 提交测试报告

5.你对性能测试的理解?

性能测试包括四个重要组成部分
1.用工具去做性能测试
2,性能场景的设计
3.性能的监控
4.性能的分析与调优
性能的分析与调优他包括软件的分析与调优和硬件的分析与调优,
灵活去讲一些硬件和软件的底层的原理

6.用jmeter怎么实现5000并发用户,进行性能测试?

我们在做性能测试的时候,我们这个jmeter这个并发用户数达到一定数量的时候呢,就要采用不同的这种方式
虽然jmeter理论上他可以无限制我们的并发用户数,但是因为我们的个人的电脑的配置的原因导致了我们的
线程数不可能无限的大,一般情况下呢我们在1000左右1000以内我们的电脑基本上是没有问题但是呢,超过
一千的并发用户数时,我们的电脑就虚拟不出这么多的并发用户数所以呢要,分布式的方式来实现

7.性能测试中常用的监控命令

1.top命令实时查看cpu进程等相关性能数据
2.free命令,可以实时的监控操作系统的内存情况swap 还有 buffer cache等等
3.iosat命令 可以实时的监控到磁盘的一些性能数据,比如磁盘的读写,以及繁忙度的数据
4.sar命令他可以实时的监控网卡流量的信息,包括接收的字节数,发送的字节数等

8.你对性能测试、负载测试、压力测试的区别理解?

性能测试有广义性能测试和狭义性能测试,那只要与性能相关的测试其实都属于广义性能测试现在说的负载测试,压力测试等等都属于广义的性能测试
而狭义的性能测试是要通过工具来找出或者验证我们的性能指标的一种测试,而这个负载测试呢,其实是在我们性能测试的前期阶段还完全不知道我们这个
服务器的这个并发用户数等等这些指标的时候,我们通过逐步的来增加并发用户数的这种方式,来找出我们服务器的最大并发用户数的一个区间,这样一种
做法叫做负载测试,而我们的压力测试呢其实是在我们性能测试后期阶段发现我们的服务器有这种不稳定性因素的时候,这个时候要开展压力测试了,压力测试一般
我们会选择一定数量的并发用户数,然后呢持续比较长的时间进行性能测试,他呢是来看我们的服务器是不是稳定的,然后呢这个时间一般会是几个小时甚至是几天的时间

9.性能测试环境是在什么环境中进行的?

一般都会使用window作为发起方或者是说你的mac电脑作为发起方,被测服务器一般都是linux操作系统,因为我们现在的企业大部分项目都是部署在linux的服务器里面的
进行测试的时候,写脚本的这个阶段,我们会把我们写脚本的这个环境地址,对接到我们的功能测试的这个环境上,但是写完脚本调试好通过之后,我们又会把这个地址切换到我们性能测试专用的测试独立环境上面来,而性能人员要搭建独立的性能测试环境,这个环境会依据我们的生产的硬件配置以及生产的规模来进行搭建,以及监控性能测试中的性能
数据。

10.微服务中网关的作用?

1.统一了入口,把内部和外部环境隔离,报障后台服务的安全性
2.鉴权校验,识别每个请求的 权限,拒绝不符合要求的请求
3.动态路由,动态的将请求 路由 到不同的后端集群中。
4.降低耦合度,减少客户端与服务的 耦合 ,服务可以独立发展。通过网关层来做映射

11. 进程和线程有什么区别?

进程是程序的一次运行活动也是操作系统在分配和调度资源的一个独立单位,线程呢是进程的一个实体,一个进程至少有一个线程,进程和线程是一对多的关系,那进程和线程的主要区别在于进程是有独立的地址空间,而线程是没有的,同一个进程下的线程是共享进程的地址空间的,所以切换线程比切换进程的开销低效率高
进程和线程有什么区别?
进程是程序的一次运行活动也是操作系统在分配和调度资源的一个独立单位,线程呢是进程的一个实体,一个进程至少有一个线程,进程和线程是一对多的关系,那进程和线程的主要区别在于进程是有独立的地址空间,而线程是没有的,同一个进程下的线程是共享进程的地址空间的,所以切换线程比切换进程的开销低效率高

12. Socket和websocket有什么区别?

简单的来说socket负责组装底层的一些数据,实现接口,而websocket是一个非常典型的全双工通讯协议

13. 怎么判断tomcat端口被占用?

  1. netstat -apn | grep 8080 查看一下占用8080的端口是哪一个进程,
    2.用ps -ef | grep pid 看一下占用这个端口的进程是不是tomcat以外的某一个进程,如果这个端口确实是被tomcat以外的程序用了,并且这个程序没有用途的话,可以用kill -9 pid杀掉进程,如果此进程有用,我们可以通过修改tomcat端口号

14. 如何用jmeter找出某个接口的最大并发用户数?

通常会去设置一个阶梯线程场景,然后呢通过逐步的增加并发用户数的这种方式来找出来,这个运行过程中呢,我们回去监控这个运行的结果通过这个结果的一个分析判断出是否出现了我们的这个拐点区间,然后呢在使用找到的这个拐点区间,再用同样的一个方法来缩小我们这个递增的一个步长,从而可以找到我们的这个最大并发用户数。

15.Linux服务器性能分析,你都会用那些工具或命令?

临时: 使用top命令,可以看cpu,进程,内存等使用情况,通过看到的数据再配合vmstat,netstat,mpstat,iostat等,这些监控命令,最后再用sar命令进行进一步的分析与定位
长期:搭建监控平台比如grafana+promethus,可以通过web管理界面里面查看多种监控的一个数据,界面数据可以帮助我们进行性能分析

你可能感兴趣的:(性能测试,软件测试面试,软件测试,性能测试)