Jmeter性能测试

性能测试基础

简述实施软件性能测试的流程?

a.性能需求分析

挑选用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单
确定性能指标,比如:事务通过率为100%;90%的事务响应时间不超过5秒;并发用户为1000人时CPU和内存的使用率在70%以下

b.性能测试计划

确测试时间和测试环境和测试工具的选择
注明测试通过指标以及业务场景
准备性能测试数据

c.搭建性能测试环境

注意这里测试环境一定要和线上正式环境保持一致

d.通过性能测试用例,编写性能测试脚本,准备性能测试数据

性能测试脚本进行调优,设置检查点、参数化、关联、集合点、事务,调整思考时间

e.设计性能测试场景,监控服务器,运行测试场景

f.分析性能测试结果,判断性能瓶颈,反馈结果信息

g.回归性能测试

h.编写性能测试报告

简述基准测试、压力测试、负载测试、并发测试

a、基准测试
  基准最简单的理解就是有基础的标准,这样能通过对比发现系统的不同的与变化。一般情况下,基准测试有以下几种应用场景。

  1)可以在指定的标准下通过基准测试建立一个性能基准,这样以后当系统的环境、参数发送变化之后,在进行一次相同标准下的测试,即可看出变化对性能的影响。例如,数据库的基准性能测试。

  2)系统进行基准测试可以在较早的阶段发现性能问题。例如,如果对BestTest论坛进行10个用户并发测试时,系统出现了死机现象,那么就没比较进行后续测试。

  3)某系统从来没有进行过任何性能测试,需要对该系统做一次性能评估作为后续开发调优的参考。这是基准测试常见的一种场景,也是大部分没有做过性能测试的公司最需要的。

  基准测试不难理解,但实践起来常常被误解。以对某个系统的数据搜索进行性能基准测试用例,这个系统的数据量会随着时间的增长而增长,所以必须频繁地进但行基准测试,这样子才能准确地把握数据量的增长对系统性能的影响。但是进行的基础测试又恰恰是在应用程序级别的,并不能客观地反应全局的性能。所以,比较好的做法是每次只修改一个地方,这样就能准确地判断出那个地方会对性能产生影响。

b、并发测试
  并发测试是值通过模拟多个用户并发访问同一个应用、存储过程或数据记录及其他并发操作,测试是否存在死锁、数据错误等故障。为了避免数据库或者函数方法在并发下的错误,需要专门针对每个模块进行并发测试。

  并发数如何确定?

  并发数 = PV/PVTime 页面连接次数 HTTP响应时间 * 因数/Web服务器数量。

  其中,PVTime是PV的统计时间,换算成秒,一天是86400s。页面连接次数包括外部的JS、CSS、图片等,一般为10。HTTP响应时间一般为1s或更少。因数一般为5。

  假设,BestTest官网每天有6万PV,其余参数保持默认,那么推算出来的并发数大致为35

  注意**:PV(page view)即页面浏览量。一个用户有可能创造十几个甚至更多的PV。它是目前判断网站访问流量最常见的计算方式,也是反映一个网站受欢迎程度的重要指标。

3、负载测试
  负载测试是值在一定的软件、硬件及网络环境下,运行一种或多种业务,在不同虚拟用户数量的情况下,测试服务器的性能指标是否在用户的要求范围内,以此确定系统所能承受的最大用户数、最大有效用户数以及不同用户数下的系统响应时间及服务器的资源利用率。

  负载测试强调的是在一定的环境下系统能够达到的峰值指标,大多数的性能测试都是负载测试。例如:在各大网站上看到的各种显卡测试,都是通过运行3DMark或者某种游戏得到的最终数据,通过这个数据来说明显卡的峰值处理能力,这就是负载测试的一种。

4、压力测试
  压力测试是指在一定的软件、硬件及网络环境下,模拟大量的虚拟用户数向服务器产生负载,使服务器的资源处于极限状态下并长时间连续运行,以测试服务器在高负载情况下是否能够稳定工作。

  与负载测试获得峰值性能数据不同,压力测试强调在极端情况下系统的稳定性,这个时候出来能力已经不重要了。

性能测试中什么是思考时间,为什么要设置思考时间,jmeter如何设置?

什么是思考时间?
思考时间(Think Time)也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。对于交互系统来说,用户不可能持续不断地发出请求,一般情况下,用户在向服务端发送一个请求后,会等待一段时间再发送下一个请求。性能测试过程中,为了模拟这个过程而引入思考时间的概念。在测试脚本中,思考时间为脚本中两条请求语句之间的间隔时间。当前对于不同的性能测试工具提供了不同的函数来实现思考时间。
jmeter定时器详解(常见的两种)
1、固定定时器Constant Timer
需要让每个线程在请求之前按相同的指定时间停顿,就可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间
2、统一随机定时器Uniform Random Timer
该计时器将每个线程请求暂停一个随机的时间量,每个时间间隔的发生概率相同。总的延时等于随机延时 + 偏移延时值。
Random Delay Maximum(in milliseconds):随机延迟最大值(以毫秒为单位)
Constant Delay Offset(in milliseconds):恒定延迟偏移量(以毫秒为单位)

什么是参数化?为什么要进行参数化。Jmeter如何实现

什么是参数化?
业务中脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。
参数的不同方式
jmeter中参数化方式很多,以下讲解两种常见的参数化方式
方式一:接着在之前创建的脚本的基础上,右键点击 配置元件---->CSV Date Set Config 推荐使用
方式二:使用函数助手进行参数化

什么是关联,为什么要做关联?

什么是Jmeter关联,为什么需要关联?
由于性能测试是基于接口的,HTTP协议是无状态的,为了解决这个问题就有session和token的方式,在一般登录后服务器生成之后,后续请求就需要携带session或者token的值,而我们这里所说的关联其实就是使用获取到服务器响应中的session或者token为后续请求添加的过程,但是在有时候有的系统中还存在一些动态的值也是需要关联的,例如时间戳、一些特殊的验证字段等
那么Jmeter如何实现关联呢?常见的session和token
在jmeter中使用 后置处理器--->正则表达式提取器 实现关联的
需要在当前事物控制器,添加HTTP cookie管理器

什么是集合点。集合点的原理是什么?jmeter如何设置集合点

为什需要集合点,集合点有什么作用?
虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发的操作,我们可以在需要压力的地方设置集合点。以登录功能为例,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后一起访问,这样对服务器的冲击力更大,例如:可以在秒杀、抢购等高并发场景使用
jmeter集合点设置
步骤一:接着在之前创建的脚本的基础上,右键点击 HTTP请求---->定时器---->Synchronizing Timer
步骤二: 设置集合点

Number of Simulated Users to Group by(虚拟用户组的数量): 每次释放的线程数量(例如:可以设置有50个需要用户一起开始登陆)。如果设置为0,等同于线程组中设置的线程数量。
Timeout in milliseconds(超时时间,以毫秒为单位): 如果设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。如果大于0,那么超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达  到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程

Jmeter如何启动非图形化界面执行脚本生成测试报告?启动非图形化界面运行这样做有什么意义?

命令行界面直接运行脚本生成
可以通过如下命令,一次性完成测试执行和生成HTML可视化报告的操作,进入jmeter的bin目录下,输入如下命令:

复制代码
D:\tools\apache-jmeter-5.3\bin\jmeter.bat -n -t E:\性能测试脚本\蜗牛Boss.jmx -e -o D:\re -l login.log

-n:以非GUI形式运行Jmeter
-t:source.jmx 脚本路径
-l:记录样本到文本,可以看成日志,文件名为.log即可
-e:在脚本运行结束后生成html报告
-o:用于存放html报告的目录

因为jmeter本身是采用java开发的,比较消耗系统性能,如果采用图形化界面进行测试场景的执行,会操作系统产生的压力值偏小

常见的性能测试指标有哪些?

1、平均响应时间:响应时间越短越好
2、吞吐量:吞吐量反映的就是业务的处理能力,越大越好

a.HPS:每秒钟点击数(可以直观的理解为每秒钟可以发出多个HTTP请求),单位次/秒 ,
b.TPS:每次中能够完成业务交易的次数,单位是笔/每秒
c.QPS:每秒钟能够处理查询的次数,单位是次/秒

3、资源利用率

CPU:不能超过75%
内存:内存中swap交换区间的使用完成意味着,物理内存耗尽,一般要避免这种情况,物理内存使用不要超过80%
磁盘:磁盘繁忙率要低于70%。
网络:带宽使用率不能超过70%。

写出几种监控Linux服务器的方式

1.jmeter serveragen监控服务器
2.Linux中top命令监控
3.监控工具 spolight

你可能感兴趣的:(服务器负载均衡)