文章目录

  • 1、性能测试基础
    • 1.1、性能测试的概念
      • 1.1.1、性能
      • 1.1.2、性能测试
      • 1.1.3、性能测试的目的
      • 1.1.4、功能测试与性能测试
    • 1.2、性能测试的策略
      • 1.2.1、基准测试
      • 1.2.2、负载测试
      • 1.2.3、稳定性测试
      • 1.2.4、压力测试
      • 1.2.5、并发测试
    • 1.3、性能测试的指标
      • 1.3.1、响应时间
      • 1.3.2、并发用户数
      • 1.3.3、吞吐量(Throughput)
      • 1.3.4、点击数
      • 1.3.5、错误率
      • 1.3.6、资源利用率
    • 1.4、性能测试的流程
      • 1.4.1、性能测试需求分析
      • 1.4.2、性能测试的计划与方案
      • 1.4.3、性能测试的用例
      • 1.4.4、性能测试的执行
      • 1.4.5、性能测试的分析与调优
      • 1.4.6、性能测试报告
  • 2、性能测试工具:Jmeter
    • 2.1、loadrunner 与 Jmeter
    • 2.2、Jmeter的基本使用
      • 2.2.1、Jmeter环境安装
      • 2.2.2、功能概要
        • Jmeter文件目录结构
        • Jmeter界面汉化
      • 2.2.3、元件及作用域
        • 基本元件
        • Jmeter元件的作用域和执行顺序
      • 2.2.4、Jmeter第一个案例脚本
    • 2.3、Jmeter三个重要组件
      • 2.3.1、线程组
        • 特点
        • 线程组的分类
        • 线程组的属性
      • 2.3.2、http请求
        • 作用
        • 位置
        • 参数
      • 2.3.3、查看结果树
    • 2.4、Jmeter参数化
      • 2.4.1、用户定义的变量
      • 2.4.2、用户参数
      • 2.4.3、CSV数据文件设置
      • 2.4.4、函数[ counter计数函数 ]
      • 2.4.5、总结
        • 参数化
        • 四种参数化
    • 2.5、Jmeter 断言
      • 2.5.1、响应断言
      • 2.5.2、JSON 断言
      • 2.5.3、断言持续时间
    • 2.6、Jmeter关联
      • 2.6.1、正则表达式提取器
        • 正则表达式
        • 正则表达式提取器
      • 2.6.2、XPath提取器
      • 2.6.3、JSON 提取器
    • 2.7、Jmeter属性
      • 2.7.1、_setProperty函数
      • 2.7.2、_property函数
    • 2.8、Jmeter脚本录制

1、性能测试基础

1.1、性能测试的概念

1.1.1、性能

就是指软件质量中的效率属性

效率属性:

  • 时间特性:系统处理用户请求的响应时间
  • 资源特性:系统运行过程中,系统资源的消耗情况。(资源包含:CPU、内存、磁盘等)

1.1.2、性能测试

使用自动化的工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程

1.1.3、性能测试的目的

  • 评估当前系统能力
  • 寻找性能瓶颈,优化性能
  • 评估软件是否满足未来的需要

1.1.4、功能测试与性能测试

  1. 不同

    功能测试:验证系统的功能需求规格。焦点:功能(正向、逆向)

    性能测试:验证系统的业务需求场景。焦点:时间、资源

  2. 关系

    一般项目里,先功能测试通过后,再进行性能测试

1.2、性能测试的策略

1.2.1、基准测试

  1. 概念

    狭义上讲:单用户测试。(单用户循环多次得到的数据)

    广义上讲:建立基准线,当系统的软硬件环境发生变化时之后再进行一次基准测试以确定变化对性能的影响

  2. 基准测试数据的用途

    • 基准测试不会单独存在
    • 为多用户并发测试和综合场景测试等提供参考数据
    • 为系统/环境配置、系统优化前后的性能提升/下降提供参考数据

1.2.2、负载测试

  1. 概念

    通过逐步增加系统负载,确定在满足系统性能指标(如响应时间等)情况下,找出系统所能承受的最大负载量的测试

  2. 作用

    系统最大负载量达到用户要求时,系统才能正式上线使用

1.2.3、稳定性测试

  1. 概念

    在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天~1周等),并最终保证服务器能满足线上业务需求

  2. 作用

    系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用

1.2.4、压力测试

  1. 概念

    在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力可恢复能力

  2. 测试场景

    • 极限负载下的破坏性压力测试
    • 高负载下的稳定性压力测试

1.2.5、并发测试

  1. 概念(绝对并发)

    极短时间内,发送多个请求,来验证服务器对并发的处理能力

  2. 应用场景:抢红包、秒杀、抢购等

1.3、性能测试的指标

为什么学习性能测试指标:对性能测试结果进行量化衡量

1.3.1、响应时间

从客户端发起请求开始到客户端接收到结果的总时间

包括:服务器处理时间 + 网络传输时间

1.3.2、并发用户数

某一时刻同时向服务器发送请求的用户数

1.3.3、吞吐量(Throughput)

  1. 概念

    单位时间内处理客户端请求数量。直接体现软件系统的性能承载能力

  2. 单位

    • 业务角度:访问人数/天,业务数/天
    • 网络角度:b/s
    • 技术指标:每秒查询数(QTS)、每秒事务数(TPS)
  3. QTS与TPS的关系

    事务即业务,一个事务可以对应一个请求或者多个请求

    一个事务对应一个请求时:QTS = TPS

    一个事务对应 n 个请求时:QTS = n * TPS

1.3.4、点击数

所有页面元素(图片、链接、框架等)的请求总数量

注意:点击数是请求数,不是页面上的一次点击

1.3.5、错误率

系统在负载情况下,失败业务的概率

注意:

  • 错误率是性能指标,是高负载下失败业务的概率
  • 随机bug是功能bug,先解决随机bug才能进行性能测试

1.3.6、资源利用率

  1. 概念

    系统各种资源的使用情况

  2. 常见的资源指标

    • CPU使用率:不高于75%~85%
    • 内存使用率:不高于80%
    • 磁盘IO(速率):不高于90%
    • 网络(速率):不高于80%

1.4、性能测试的流程

1.4.1、性能测试需求分析

1.4.2、性能测试的计划与方案

  1. 测什么

    • 项目背景
    • 测试目的
    • 测试范围
  2. 谁来测
    • 进度与分工
    • 交付清单
  3. 怎么测
    • 测试策略

1.4.3、性能测试的用例

1.4.4、性能测试的执行

1.4.5、性能测试的分析与调优

说明:性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。

1.4.6、性能测试报告

  • 测试工作的经过回顾
  • 缺陷分析与调优
  • 风险评估
  • 性能测试结果
  • 测试工作总结与改进

2、性能测试工具:Jmeter

2.1、loadrunner 与 Jmeter

相同点:

  • 都能模拟大量用户
  • 都支持多协议
  • 都有监控与分析报表功能

不同点:

2.2、Jmeter的基本使用

2.2.1、Jmeter环境安装

  1. 安装JDK:下载JDK – 安装JDK – 配置环境变量 – 验证

  2. 安装Jmeter:下载Jmeter – 安装Jmeter – 配置环境变量 – 启动验证

    注意点:

    • 下载JDK时,注意电脑操作系统是32位/64位
    • 下载Jmeter时,注意与本机安装的JDK版本匹配
    • 安装Jmeter时,安装路径中不能有中文/空格

2.2.2、功能概要

Jmeter文件目录结构

Jmeter界面汉化

2.2.3、元件及作用域

基本元件

Jmeter元件的作用域和执行顺序

  1. 作用域的原则

    • 取样器:核心,没有作用域

    • 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用

    • 其他元件:

      • 如果是某个取样器的子节点,则该元件只对其父节点起作用

      • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

  2. 元件执行顺序:

    在同一个作用域(目录/级别/缩进)的不同元件的执行顺序:配置元件 - 前置处理程序 - 定时器 - 取样器 - 后置处理程序 - 断言 - 监听器
    在同一个作用域(目录/级别/缩进)的相同元件的执行顺序:从上到下的顺序依次执行

  3. 案例:执行顺序

    定时器1 - 请求1 - 定时器1 - 定时器2 - 请求2 - 定时器1 - 定时器3 - 请求3

2.2.4、Jmeter第一个案例脚本

需求:访问百度首页,并查看请求与响应信息

步骤:

  1. 启动JMeter
  2. 测试计划 下添加 线程组
  3. 线程组 下添加 HTTP请求 取样器
  4. 填写 HTTP请求 的相关请求数据
  5. 线程组 下添加 察看结果树 监听器
  6. 点击 启动 按钮运行,井查看结果

2.3、Jmeter三个重要组件

2.3.1、线程组

特点

控制Jmeter用于执行测试的一组用户

线程组的分类

  • Setup线程组:预测试操作,所有脚本之前执行
  • 普通线程组:执行测试用例,可以有1个或者多个(并行/串行)
  • Teardown线程组:测试后操作,所有脚本之后执行

线程组的属性

  1. 参数介绍

  1. 案例分析:
    使用1个线程组,添加HTTP请求(百度)

    • 配置线程数为2,循环次数为3时,运行观察结果
    • 配置线程数为3,循环次数为2时,运行观察结果,对比不同

    分析:

    • 线程数代表虚拟用户数,用户数越多,负载越大
    • 循环次数代表运行时间,次数越多,运行时间越长

2.3.2、http请求

作用

向服务器发送http及https请求

位置

选中线程组—>右键—>添加—>取样器—>HTTP请求

参数

2.3.3、查看结果树

2.4、Jmeter参数化

定义:使用不同的测试数据,调用相同的测试方法进行测试

本质:实现测试数据与测试方法的分离。

实现方式:
1. 用户定义的变量: 全局变量
2. 用户参数 :为每个用户分配不同的参数值
3. CSV数据文件设置: 文件方式参数化
4. 函数: 随机数据
5. 数据库

2.4.1、用户定义的变量

配置元件——>用户定义的变量

用户定义的变量是全局变量

定义变量格式:变量名:变量值

引用变量格式:${变量名}

2.4.2、用户参数

前置处理器——>用户参数

针对同一组参数,当不同的用户访问时,可以获取到不同的值

2.4.3、CSV数据文件设置

配置元件——>CSV数据文件设置

当不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值

2.4.4、函数[ counter计数函数 ]

2.4.5、总结

参数化

把测试数据组织起来,用不同的测试数据调用相同的测试方法

四种参数化

  1. 用户定义的变量

    作用:定义全局变量

    局限性:每次取值(无论是否相同的用户)都是固定值

  2. 用户参数

    作用:保证不同的用户针对同一组参数,可以取到不同的值

    局限性:同一个用户在多次循环时,取到相同的值

  3. CSV数据文件设置

    作用:保证不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值

    局限性:需要手动进行测试数据的设置

  4. 函数

    作用:保证不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值,不需要提前设置

    局限性:输入数据有特定的业务要求时无法使用

2.5、Jmeter 断言

断言:让程序自动判断实际结果与预期结果是否一致

提示:

  • Jmeter在请求的返回层面有个自动判断机制(响应状态码)
  • 请求成功,不代表结果正确

Jmeter中常用的断言:

  • 响应断言
  • JSON断言
  • 持续时间断言(Duration Assertion)

2.5.1、响应断言

任意http请求的响应结果,都可以使用响应断言

http请求——>(右键添加)断言——>响应断言

2.5.2、JSON 断言

对http请求的响应结果为JSON格式时,可以使用

http请求——>(右键添加)断言——>JSON断言

2.5.3、断言持续时间

测试http请求的响应时间是否满足要求时使用

http请求——>(右键添加)断言——>断言持续时间

2.6、Jmeter关联

关联:当请求之间有依赖,比如一个请求的入参时另一个请求返回的数据,这时需要用到关联处理

Jmeter中常用的关联方法:

  1. 正则表达式提取器
  2. XPath提取器
  3. JSON提取器

2.6.1、正则表达式提取器

正则表达式

就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容

  • 通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可

  • 每一组数据都可以有一个或者多个值

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
.   :是通配符,可以代表任意字符(除换行回车)
*   :代表前面的字符出现0次或者多次
.*  :找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?   : 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界
公式格式:左边界(.*?)右边界
<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>(.*?)</title>

正则表达式提取器

任意格式响应数据,都可以使用正则表达式提取器进行提取

http请求——>(右键添加)后置处理器——>正则表达式提取器

2.6.2、XPath提取器

针对HTML格式的响应数据时可以使用

http请求——>(右键添加)后置处理器——>XPath提取器

案例:
//a[@id='kw']: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)
//a : 找出所有的a标签

2.6.3、JSON 提取器

针对JSON格式的响应数据时,使用JSON提取器

http请求——>(右键添加)后置处理器——>JSON 提取器

2.7、Jmeter属性

需要实现跨线程组的数据传递时,可以使用Jmeter属性

2.7.1、_setProperty函数

将值保存成Jmeter属性,需要通过 Beanshell 取样器执行

2.7.2、_property函数

在其他线程组使用property函数读取属性

2.8、Jmeter脚本录制

【性能、Jmeter】性能测试知识以及jmeter工具的基本使用方法相关推荐

  1. 【jmeter性能测试】基于jmeter的并发登录性能测试实战并生成测试报告

    大家好,我是好学的小师弟,今天来和大家分享下关于jmeter的登录并发测试工作流程. [jmeter_链接]本文用到的jmeter接口/性能测试常用元件介绍 前提工作: 1.在数据库中创建好本次并发登 ...

  2. 性能测试 软件 jmeter,快速学习Jmeter性能测试工具

    导读 本场chat将从零基础开始学习JMeter工具,文章主要包括JMeter基础知识.JMeter最简开发流程.运行与监听.JMeter元件库.脚本开发等方面讲解JMeter性能测试工具.将有部分实 ...

  3. Jmeter性能测试-安装和配置、分布式压测配置及服务器性能监控

    Jmeter性能测试 (一)工具版本 (二)安装和配置 安装jdk 在D盘下新建JAVA文件夹,找到jdk文件,双击运行.点击下一步,出现如下图一内容,这里是设置安装路径,可以默认,用户可自行选择,这 ...

  4. Jmeter性能测试 入门

    Jmeter性能测试 入门 原文:Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jme ...

  5. 全国大学生软件测试大赛Web应用测试(六)Jmeter性能测试具体流程

    全国大学生软件测试大赛Web应用测试(六)Jmeter性能测试具体流程 Jmeter性能测试环境配置. Jmeter性能测试得分技巧 1.登录慕测官网 2.点击练习.搜索关键词"Web应用测 ...

  6. 性能测试 性能测试实战(八)Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

    文章目录 一.前言 二.Jmeter分布式性能测试平台 介绍 1.Jmter分布式性能测试平台 简介 2.Jmeter分布式性能测试平台 优秀案例1 3.Jmeter分布式性能测试平台 优秀案例2 4 ...

  7. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  8. JMeter性能测试工具简介

    JMeter性能测试工具简介 本文简单介绍了什么是性能测试,以及如何通过Jmeter工具开展性能测试. Jmeter里面的常用元素包含线程组,取样器,监听器,配置元素和一些其他元素 Jmeter原理 ...

  9. 性能测试怎么监控服务器,性能测试篇 :Jmeter监控服务器性能

    转载:http://www.cnblogs.com/chengtch/p/6079262.html jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,不过需要安装一些插件 ...

最新文章

  1. 关于AD编程的一些资料
  2. ecshop去掉“云服务中心”或者是“模板堂知识库”
  3. 面试必备:LinkedHashMap源码解析(JDK8)
  4. NYOJ 597 完数?
  5. import gevent
  6. leetcode 617. 合并二叉树(Merge Two Binary Trees)
  7. 【读书笔记】--SQL基础概念复习
  8. 数据库 蚂蚁_蚂蚁金服自研数据库OceanBase性能超过甲骨文引热议
  9. [附源码]java毕业设计卡通动漫商城系统
  10. Win10系统遇到驱动需要数字签名无法安装问题的解决方法(手机通过数据线无法链接电脑)
  11. java 拦截器 排除_java – 如何将拦截器添加到除一个或两个以外的所有API请求?...
  12. Ubuntu18.04安装sagemath(命令行安装,超方便)
  13. Matlab中set函数的使用
  14. 5089. 安排会议日程
  15. SQL Server 下取中位数(中位值)的方法
  16. windows2000光盘完全解读
  17. EasyNVR无插件直播流媒体服务器云端集中管控的EasyNVS云管理平台安装使用文档
  18. 周四直播 | 微软亚洲研究院副院长刘铁岩:机器学习技术前沿与未来展望
  19. 2019西湖论剑·网络安全大会开幕 安全赋能数字新时代...
  20. 转载:全局拉普拉斯平滑之(1)Strucutre extraction from texture via relative total variation及稀疏矩阵求解...

热门文章

  1. java过滤器filter过滤某个包_Java过滤器Filter使用详解
  2. WINDOWS下读取EXT2/3磁盘分区工具:ext2fsd
  3. Android自动接听和挂断电话实现原理
  4. php pdo中bindParam() 和 bindValue()方法的区别
  5. Ubuntu学习笔记:VMware 导入虚拟机 .ova 文件
  6. 有点无聊,来用Python制作代码雨
  7. 链脉刘松华:如何用智能名片打造粉丝经济
  8. 使用 Prometheus 进行应用监控
  9. nodejs模块化设计知识点总结
  10. ACW各种dp模板题 day29