7.5 Jmeter性能测试

1.Jmeter

1.1 定义

 是一款java开源工具,用于性能负载测试

 旨在分析和衡量Web应用程序和各种服务的性能和附在功能行为

1.2 工作原理

 像一群将请求发送到目标服务器的用户一样,收集来自目标服务器的响应及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能

功能测试->成功、失败

1.3 性能测试指标

1.响应时间:2s(正常)/5s(能接收)/8s(最大极限等待时间)

2.并发用户数

3.吞吐量

4,.系统性能计数器

5.思考时间

总结:多快好省

 多:对打的用户访问量(并发量)

 快:响应时间快

 好:持久运行(稳定性)

 省:系统性能要省(资源使用率)

1.3.1 响应时间

响应时间:对请求作出响应所需要的时间,使用户感知软件性能的主要指标

响应时间包括:

 用户客户端响应时间

 请求/响应数据网络传输时间

 应用服务器处理时间

 数据库系统处理时间

1.3.2 并发用户数

系统用户数:软件系统注册是用户总数。系统环境->初始化环境

如:有一千万用户,从数据库中dump出来,用数据库脚本来模拟数据–>这就是初始化环境

在线用户数:某段时间内访问的用户数,这些用户只是在线,但不一定同时做某件事情。与内存有关

并发用户数:同一个事件同时向软件系统提交请求的用户数。场景不一定是同一个

如:秒杀

并发:用于从业务角度模拟真实用户访问,同时访问

并发数:同时访问系统的用户数

1.3.3 吞吐量

性能测试:指单位时间内系统处理用户的请求数

从业务角度看:吞吐量可以用:请求数/秒,人数/天 或 处理业务数/小时 等单位来衡量

从网络角度看:吞吐量可以用字节/s来衡量

对于交互式应用来说:吞吐量指标反映的是服务器承受的压力,能够说明系统的附在能力

TPS:每秒事务数–>吞吐率

1.3.4 性能计数器

 描述服务器或操作系统性能的一些数据指标,内存、CPU磁盘等资源使用率–>使用资源监控

1.3.5 思考时间

消息和消息之间发送的间隔时间

从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔

在做性能测试时,为模拟这样的时间间隔,引入了思考时间这个概念,更加真实的模拟用户的操作

2.Jmeter脚本开发

2.1 什么是JMeter脚本

用户操作,被测试软件系统,某场景的动作流程
7.5 Jmeter性能测试_第1张图片

2.1.1 怎么快速开发漂亮的脚本?

 准确:最基本要求,脚本能正常运行

 快速:借助技术手动快四高效完成脚本开发(系统的监控,调优)

性能测试从场景提取:

 漂亮:脚本逻辑、维护性高

2.1.2 脚本开发方案

方案一:“代理” JMeter代理

7.5 Jmeter性能测试_第2张图片

方案二:“badboy”录制(基本不用)

badboy测试工具通过协议包进行数据狡猾

响应速度非常快

方案三:Fiddler

 通过浏览器访问测试网站,同时Fiddler抓包工具,获取抓包数据,手动JMeter开发校本
7.5 Jmeter性能测试_第3张图片
汇总:

 通过Fiddler改写HTTP代理,让数据从它那通过,来监控且截取到数据

 在打开Fiddler的一瞬间,就已经设置好浏览器的代理

 当关闭时,又把代理还原,一般无需手动设置

3.性能测试的步骤

3.1 性能测试准备

  • 1)需求分析
  • 2)明确性能测试目标(指标值)
  • 3)了解软件功能指定测试计划
  • 4)编写测试用例
  • 5)执行测试用例并得到测试报告

3.2 搭建性能测试环境

  • 1)工具选型与准备
  • 2)被测系统环境搭建(服务器,服务版本更新,数据库数据准备)
  • 3)网络配置

3.3 性能脚本开发

  • 1)选取协议
  • 2)制作脚本
  • 3)调试脚本
  • 4)验证脚本

3.4 性能测试脚本执行

3.5 结果分析与调优

  • 1)分析依据:结合图表
  • 2)分析思路:服务器硬件瓶颈->网络瓶颈->服务器瓶颈(参数配置、数据库、web服务器)->应用瓶颈(sql语句,数据库设计,业务逻辑,算法)
  • 3)调优
  • 4)修改脚本或场景

注:性能测试的必要条件:性能测试服务器的配置尽可能要和生产服务器配置相近

3.6 测试报告与结果追踪

4.JMeter主要元件使用

4.1 配置元件

  • 1)HTTP请求默认值->切换环境时可以用
  • 2)HTTP消息头管理器
  • 3)HTTP Cookies管理器
  • 4)HTTP Cache管理器->用的不多

HTTP请求默认值:

 该组件可以为http请求设置默认的值

 创建一个测试计划有很多个请求,且都是发送到相同的server,只需添加一个Http request

4.2 监听器元件

4.2.1 察看结果树

1)分析查看具体某一个请求的详情

 包含请求头、请求体响应头、响应体

2)做性能场景的时候

 分析错误的原因

4.2.2 聚合报告

1)汇总统计

 请求数、响应时间(平均的90%90%90%min max)单位 ms

 错误率–越低越好

 吞吐量–越高越好

 发送/接受

4.2.3 表格查看结果

4.2.4 图形结果->发很多请求会有图形结果

如果给定一个请求,如果请求结果出错,我们查看出错原因->查看结果树(常用)

程序进行半小时,想要看性能场景最终的汇总,概要->聚合报告(常用)

请求什么时候发送的,如何规划请求发送->表格查看结果

整体曲线效果->图形结果

4.3其他常用元件

4.3.1 前置处理器

以请求作为分界线,请求发出去之前执行的控制器(元件)

 加密操作

4.3.2 后置处理器

请求发出去后执行的控制器(元件)

 如:提取数据 JSON 正则表达式等

4.3.3 定时器

思考时间–固定定时器 请求和请求发送的间隔时间

同步定时器–集合点 如:秒杀

随机定时器

吞吐量定时器–分流的效果

4.3.4 断言

5.JMeter参数化技术实战

5.1 什么时候需要参数化技术

场景一:登陆操作:单点 A用户在当前PC登陆成功,继续在另一台PC登陆账号,那么前一个账号就会被顶掉->outline 掉线

5.2 参数化技术是什么

 参数化时自动化测试脚本的一种常用技巧

 参数化的一般用法就是将脚本中的某些输入使用参数来替代,在脚本运行时指定参数的取值范围和规则

参数化流程:

  • 1)找出需要做参数化的数据
  • 2)准备提供给参数化需要的数据源
  • 3)关联对应的数据,把脚本例的常量–>变量(使用前面的数据源)

6.JMeter实现参数化

实现参数化的方式:

 大前提:脚本调试通

6.1 CSV–需要配置的元件

使用场景:登录操作:账号、密码

 参数化流程:找出需要做参数化的数据源->账号密码

 准备提供给参数化需要的数据源->一对有效账号密码存放在文件.txt中

 把脚本中的常量改为变量

6.2 JMeter参数化流程

7.5 Jmeter性能测试_第4张图片

6.3 JMeter参数化方式

7.5 Jmeter性能测试_第5张图片

你可能感兴趣的:(软件测试,自动化测试,jmeter,服务器,java)