jmeter性能测试

一、性能测试问题导入

1.关注于哪些指标

  • 单位时间内的响应速度快不快(1个用户和多个用户)——打开速度快不快
  • 单位时间内能够处理的数量——能够同时让多少人访问(并发量)

2.怎么调优

性能评估汇报:某某app,在1000用户同时(**并发量**)进行以下操作(**性能场景**):
   1.登录
   2.查询
   3.评价

消息成功率:100%
平均响应时间为0.03s(**响应时间**)
CPU使用率:80%,内存使用率:90%,网络带宽:50M,磁盘空间:50%(**资源使用率**)

3.性能测试的关键点

  • 监控,分析,调优

二、测试对象

1.服务器的接口性能测试(80%):验证服务器是否满足需求

  • 模拟器-jemeter,模拟http协议,链接到后台服务器(web服务器+数据库服务器MySQL+Linux操作系统)

2.终端性能测试(web端渲染/APP启动速度——UI性能):受用户环境影响,如网络较好/较差

三、什么是性能测试

1.性能测试也是软件测试的一种,它的主要方向是测试系统在一定的负荷压力下,系统的响应时间,吞吐量(TPS),稳定性,系统的可扩展性等性能指标

  • 吞吐量(漏斗,倒东西可以很快流下来)

2.性能测试的基本目的

  • 验证是否达到用户的性能指标(逐步加压,1000人-》2000人,是否会有响应超时等错误)
  • 发现软件中存在的性能瓶颈并优化
  • 测试中得到的负荷和响应时间数据用于验证——评估系统的能力

四、性能测试重点:关键业务领域的性能

  • 测试是在时间、成本、质量之间权衡

五、性能测试一般流程

  • 评估-》加压-》bug,瓶颈-》分析,调优-》长时间跑(稳定性)

六、性能测试与项目

1.性能测试做的成功与否,与测试方法和测试自身所关联的项目背景都有关系(并不是所有的项目都需要性能测试)
2.学习性能:测试思维方法、分析方法

七、性能测试关键指标

+ 多:并发量
+ 快:延时,响应时间(用户感知的时间,是端到端的)
+ 好:稳定性(长时间运行)
+ 省:资源使用率

思考时间(think time):指用户进行操作时每个请求之间的时间间隔,`为了能更加真实的模拟用户的操作`

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

  • 对于一个web系统,普遍接受的响应时间标准为2/5/8秒

2.并发用户数

  • 平均并发用户数的计算模型:C=nL/T(常用计算模型-可供参考)

    • C-是平均的并发用户数
    • n-是平均每天访问用户数
    • L-是一天内用户从登录到退出的平均时间
    • T-是考察时间长度(一天内多长时间有用户使用系统)
  • 估算并发用户数量公式:使用系统用户数量*(5%~20%)

3.吞吐量:指单位时间内系统处理用户的请求数

  • TPS(吞吐率):每秒事务数
  • 若用户数增加到某个值后,用户数增加,吞吐量不变,一般原因是由于网络堵塞,需要增大带宽

八、jmeter基础简介

1.jmeter性能测试工具简介

  • 多线程框架——支持多并发操作
  • 用户对服务器模拟负载(一台机器若负载太大,可做分布式性能测试)
  • 支持web、数据库、FIP服务器系统的性能测试
  • 开源(源码公开)、纯JAVA,可二次定制化开发

2.jmeter运行环境搭建
1) 下载安装JDK(若jmeter版本为5.11,JDK版本需安装大于1.8的)

2)设置环境变量(Java环境是OK的)

3)启动方式

  • GUI(界面化):windows(jmeter.bat启动)或Mac(jmeter.sh启动)系统
  • 非GUI(非界面化,命令行):Linux系统
在jmeter安装路径的bin文件夹下创建终端命令窗口,输入sh jmeter命令打开GUI界面

4)属性配置:更改jmeter.properties文件

  • language=zh_ch(37行)将应用程序设置为中文简体

3.jmeter基本操作

  • 独立运行每个线程组(勾选,线程组有前后逻辑关系;不勾选,线程组同步进行)
  • 调度器(设置执行一段时间)(循环次数勾选永远)
  • 黄色/红色的三角标志,操作日志

九、jmeter主要元件

1.配置元件

  • http请求默认值:所有线程组的请求都会使用这个默认值
    • 性能工具:多进程(roadrunner),多线程(jmeter),线程数就代表用户数
  • http消息头管理器:添加授权头的值
  • http cookie管理器:添加后会自动管理cookie,即上个接口响应返回的cookie值可用于下个接口的请求中
  • http cache管理器:缓存,静态资源不是从服务器获取而是从静态中取的
  • 提取返回请求返回结果中的值赋予某个变量用于下一个接口,使用$.token——关联接口

2.监听器元件

  • 察看结果树

    • 分析查看具体某一个请求的详情(请求头、请求体、响应头、响应体)
    • 在做性能测试场景的时候分析错误请求的原因——勾选仅错误日志按钮,在高并发状态下只显示错误日志
  • 聚合报告

    • 汇总统计:请求数、响应时间(平均的,90%,95%)等,单位是ms
    • 错误率——越低越好
    • 吞吐量——越高越好
    • 发送/接收——带宽
  • 用表格查看结果

  • 图形结果

3.其他常用元件

  • 前置处理器:请求发出去之前执行的控制器(元件),比如加密 md5
  • 后置处理器:请求发出去之后执行的控制器(元件),比如提取数据——关联接口
  • 定时器
    • 思考时间-固定定时器
    • 同步定时器-集合点(例如九点开始预售)
    • 随机定时器
    • 吞吐量定时器
  • 断言(作用域,对某个请求做断言,把断言放在请求下)

2.常用端口号

  • 80端口:HTTP协议的默认端口
  • 8080:tomcat默认端口号
  • 8888:重定向端口
  • 443端口:HTTPS协议的默认端口

3.python常用的库:request,pandas
4.jmeter高级应用(分布式、jenkins等)/监控平台/性能瓶颈分析

十、性能测试过程

1.什么是jmeter脚本

  • 用户操作被测软件系统某些场景的动作流程
  • 性能测试:重要场景从1到N
    • 功能测试:1个用户
    • 性能测试:N个用户

2.快速开发漂亮的脚本

  • 准确——最基本要求,脚本可以正常运行
  • 快速——借助技术手动快速高效完成脚本开发
  • 漂亮——脚本逻辑、维护性高

3.开发脚本方案(任何脚本开始之前都要先建一个线程组)

  • jmeter自带代理录制脚本:配置jmeter和浏览器代理服务器,点击启动,粗略录制请求过程(不常用)
  • 文档+抓包——导出脚本(抓包后导出会话export sessions->all sessions,jmx文件)拖拽到jmeter

4.先使用一个线程组,即一个用户,使用查看结果数看是否能正确返回,再考虑并发

5.jmeter参数化(将脚本中的某些输入使用参数来代替,运行时指定参数的取值范围和规则)流程

  • 找出需要做参数化的数据
  • 准备提供给参数化需要的数据源
  • 把脚本里的变量-》常量

6.jmeter参数化方式

  • CSV文件-需要配置的元件
    • 使用场景:账号,密码
  • 函数式
    • 随机数
    • time
    • counter计数器
  • 变量
  • 编程式
posted @ 2020-09-01 17:02  向前一步~  阅读(2645)  评论(0编辑  收藏  举报