性能测试笔记

news2024/11/16 1:28:47

一、性能测试的概念

  1. 性能测试的概念

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

  1. 性能测试的目的

评估当前系统能力,出现性能bug后,优化性能:预测未来的性能需求是否满足
例如:验收第三方提供的软件
常见的性能需求(性能需求文档):
WEB首页打开速度在5s以下,web登录速度15s以下
邮箱服务支持50万个在线用户
计费话单成功率达到99.999%以上
在100个并发用户的高峰期,邮箱的基本功能,处理能力至少达到10TPS
系统能在高于实际系统运行压力1倍情况下,稳定运行12小时
这个系统能否支撑200万的vn(每天登录系统的人次) vn—Virtual user(虚拟用户)
寻找性能瓶颈,优化性能
评估软件是否能满足未来需求

  1. 什么是性能
  • 时间:系统处理用户请求响应时间
  • 资源:系统运行过程中,系统资源的消耗情况

二、性能测试的策略

  1. 基准测试
  • 狭义上:就是单用户测试(单用户循环多次得到的数据)
  • 广义上:建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试确定变化对性能的影响

(1)基准测试数据的用途

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

  1. 负载测试
  • 概念:通过逐步增加系统负载。确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能承受的最大负载量的测试
  • 作用:系统最大负载量达到用户要求时,系统才能上线使用
  1. 稳定性测试

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

  1. 压力测试

概念:在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力
测试场景:
极限负载情况下的破坏性压力测试
高负载下的长时间的稳定性压力测试

  1. 并发测试

概念:并发测试(绝对并发):是指在极端的时间内,发送大量请求,来验证服务器对并发的处理能力

三、性能测试的指标(标准)

  1. 为什么要学习性能测试指标

对性能测试结果进行量化衡量

  1. 什么是响应时间

指从客户端发送请求开始,到客户端接收到结果的总时间
包括:服务器处理时间+网络传输时间

  1. 什么是并发用户数

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

  1. 吞吐量(Throughput)

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

  • QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求数量-
  • TPS(Transactions Per Second)每秒事务数:即控制服务器每秒处理事务请求的数量
  • 事务:即业务,页面上的一次操作,可能对应一个请求/多个请求
  1. 点击数和错误率
  • 点击数:指客户端向服务端发送请求时,所有页面的页面资源元素(如:图片、链接、框架css、js等)的请求总数量
    注意:
    只有web项目才有此指标
    点击数是请求数,点击数不是页面上的一次点击

  • 错误率:指系统在负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%

      注意:
      大多系统都会要求错误率无限接近于0
      错误率是一个性能指标,不是功能上的随机bug
    

6.资源使用率

资源使用率:是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量*100%”形成资源利用率的数据
在这里插入图片描述

四、性能测试的流程

功能测试完成后bug修复好后-》性能测试

1.性能测试执行

建立测试环境-》编写测试脚本-》性能测试监控-》执行测试脚本
在这里插入图片描述

2.性能分析和调优

说明:性能测试分析人员经过对结果的分析后,如果不符合性能需求,则会提出性能bug,然后有开发人员进行后续的调优
在这里插入图片描述

五、Jmeter元件和组件的介绍

  1. Jmeter的安装和介绍

(1)Loadrunner和Jmeter对比
在这里插入图片描述

(2)Jmeter的bin目录介绍
在这里插入图片描述

(3)其他目录介绍
在这里插入图片描述

(4)目录总览
在这里插入图片描述

(5)永久修改语言配置
在这里插入图片描述

  1. 元件的基本介绍

(1)元件:多个类似功能组件的容器(类似于类)

  • 取样器——发送请求
  • 逻辑控制层——控制语句的执行顺序
  • 前置处理器——对请求参数进行预处理
  • 后置处理器——对响应结果进行提取
  • 断言——检查接口的返回结果是否与预期结果一致
  • 定时器——设置等待
  • 测试片段——封装一段代码,供其他脚本调用
  • 配置元件——测试数据的初始化配置
  • 监听器——查看Jmeter脚本的运行结果
    在这里插入图片描述

(2)组件:实现独立的某个功能(类似于方法)

  1. 元件的作用域

元件的作用域:是考测试计划的属性结构中元件的父子关系来确定的

提示:所有的组件都是以取样器为核心来运行的。组件添加的位置上不同,生效的取样器也不同

作用域的原则:

  • 取样器:核心,不和其他元件相互作用,没有作用域
  • 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
  • 其他元件:
    • 如果是某个取样器的子节点,则该元件只对其父节点起作用
    • 如果其父节点不是取样器,则其作用域是该元件父节点下的其它所有后代节点(包括子节点,子节点的子节点等)
  1. 元件的执行顺序

同一个作用域下不同类型元件:
配置元件–>前置处理程序–>定时器–>取样器–>后置处理程序–>断言–>监听器
同一个作用域下多个相同类型元件:
按照测试计划中从上到下的顺序依次执行

六、JMeter使用示例

  1. JMeter第一个案例

需求:使用JMeter访问百度首页接口,并查看请求和响应信息

步骤:

  1. 启动JMeter

  2. 在“测试计划”下添加“线程组”

  3. 在“线程组”下添加“HTTP请求”取样器

  4. 填写“HTTP请求”的相关请求数据

  5. 在“线程组”下添加“查看观察树”监听器

  6. 点击“启动”按钮运行,并查看结果

  7. 线程组

概念:控制JMeter用于执行测试的一组用户
线程组的分类:

  • Setup线程组:预测试操作,所有脚本之前执行
  • 普通线程组:执行测试用例,可以有1个或多个(并行/串行)
  • Teardown线程组:测试后操作,所有脚本之后执行
  1. 线程组参数
    在这里插入图片描述

  2. http请求参数
    在这里插入图片描述

(1)响应返回中文乱码解决方案
在这里插入图片描述

七、JMeter的参数化

  1. 什么是参数化测试?常用的参数化方法
    在这里插入图片描述

(1)用户定义变量的步骤
在这里插入图片描述

(2)用户参数的参数化的步骤
在这里插入图片描述

(3)csv参数文件设置
在这里插入图片描述

(4)函数参数化设置

函数助手对话框位置
在这里插入图片描述

生成函数
在这里插入图片描述

引用函数
在这里插入图片描述

参数化小结
在这里插入图片描述

(5)4种参数化的优缺点
在这里插入图片描述

  • 函数:
    • 作用:保证不用的用户及多次循环时,都可以取到不用的值,不需要提前设置
    • 局限性:输入数据有特定的业务要求时无法使用(如:登录时的用户名密码)

八、JMeter断言
在这里插入图片描述

  1. 响应断言

(1)参数配置详细介绍
在这里插入图片描述
在这里插入图片描述

(2)响应断言的操作步骤
在这里插入图片描述

  1. JSON断言

(1)json断言参数介绍
在这里插入图片描述

(2)json断言操作步骤
在这里插入图片描述

3.断言持续时间
在这里插入图片描述

4.3种断言的区别
在这里插入图片描述

九、JMeter关联
在这里插入图片描述

1.正则表达式
在这里插入图片描述

什么是正则表达式?

在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

常用元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

常用限定符

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
n重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

常用反义词

代码/语法说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

(1)案例
在这里插入图片描述

2.正则表达式提取器

(1)正则表达式参数介绍
在这里插入图片描述

案例
在这里插入图片描述

3.XPath提取器

(1)XPath参数介绍
在这里插入图片描述

(2)案例
在这里插入图片描述
在这里插入图片描述

4.JSON提取器

(1)JSON参数介绍
在这里插入图片描述

(2)案例
在这里插入图片描述
在这里插入图片描述

十、JMeter属性

  1. 设置函数和使用函数
    在这里插入图片描述

2.函数设置和使用步骤
在这里插入图片描述

  1. 案例

(1)添加线程组

(2)添加http请求-天气

(3)添加json提取器,获取数据
在这里插入图片描述

(4)添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性)

  • 工具函数助手对话框
    在这里插入图片描述

  • 保存JMeter属性:KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(pr…{city},)}
    在这里插入图片描述

(5)添加线程组

(6)添加http请求-百度

  • 读取JMeter属性-根据函数property
    在这里插入图片描述
    在这里插入图片描述

    (7)添加查看结果树
    测试计划选择为串行执行

  1. 关联和属性小结
    在这里插入图片描述

十一、JMeter录制脚本

十二、JMeter直连数据库

1.使用场景
在这里插入图片描述

2.操作步骤
在这里插入图片描述
在这里插入图片描述

3.案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十三、逻辑控制器
在这里插入图片描述

1.IF控制器

(1)参数介绍
在这里插入图片描述

(2)案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.循环控制器
在这里插入图片描述
在这里插入图片描述

(1)循环控制器和线程组循环次数的区别
在这里插入图片描述

3.ForEach控制器

(1)参数介绍
在这里插入图片描述

(2)案例
在这里插入图片描述

(3)案例2
在这里插入图片描述

4.同步控制器

(1)参数介绍
在这里插入图片描述

(2)案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.吞吐量定时器

(1)参数
在这里插入图片描述

6.固定定时器

(1)参数
在这里插入图片描述

(2)案例
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1067259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sketch for mac v98.3(ui设计矢量绘图)

Sketch是一款为用户提供设计和创建数字界面的矢量编辑工具。它主要用于UI/UX设计师、产品经理和开发人员,帮助他们快速设计和原型各种应用程序和网站。 Sketch具有简洁直观的界面,以及丰富的功能集,使得用户可以轻松地创建、编辑和共享精美的…

javaWeb网上购物系统的设计与实现

摘 要 随着计算机网络技术的飞速发展和人们生活节奏的不断加快,电子商务技术已经逐渐融入了人们的日常生活当中,网上商城作为电子商务最普遍的一种形式,已被大众逐渐接受。因此开发一个网上商城系统,适合当今形势,更加…

Unity中Shader的光照模型Lambert

文章目录 前言一、Lambert光照模型1、公式可以使用图形计算器来看出这个点积对于结果的影响 前言 Unity中Shader的光照模型Lambert 一、Lambert光照模型 1、公式 A:可以理解为环境光的颜色 K:反射系数 LC:主要的入射光的颜色 N:…

模拟滤波器的基础知识和设计

信号处理工作中滤波器的应用是非常广泛的,可以分成模拟滤波器和数字滤波器两种,数字滤波器主要包括两种,IIR和FIR,这两种滤波器后面统一说,今天先来说一说模拟滤波器(主要是我先用Python实现了Matlab书里面…

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

阻塞、非阻塞、异步、同步

IO | bRPC 一般有三种操作IO的方式: blocking IO: 发起IO操作后阻塞当前线程直到IO结束,标准的同步IO,如默认行为的posix read和write。non-blocking IO: 发起IO操作后不阻塞,用户可阻塞等待多个IO操作同时结束。non-blocking也…

【Java 进阶篇】HTML列表标签详解与示例

HTML(Hypertext Markup Language)是网页开发中的标准标记语言,用于构建网页内容。在网页中,常常需要展示信息的列表,例如商品列表、文章目录、任务清单等。HTML提供了多种列表标签,用于创建不同类型的列表。…

Python3操作文件系列(二):文件数据读写|二进制数据读写

Python3操作文件系列(一):判断文件|目录是否存在三种方式 Python3操作文件系列(二):文件数据读写|二进制数据读写 Python3数据文件读取与写入 一: 文件数据|二进制数据读写 import os"""Python3的open(file,mode"文件的操作模式")利用该函数可以对…

TensorFlow入门(九、张量及操作函数介绍)

在TensorFlow程序中,所有的数据都由tensor数据结构来代表。即使在计算图中,操作间传递的数据也是Tensor tensor在TensorFlow中并不是直接采用数组的形式,它只是对TensorFlow中计算结果的引用。也就是说在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程 一个…

【轻松玩转MacOS】常用软件篇

引言 在本篇文章中,我将介绍如何安装和使用一些常用的软件,如Safari浏览器、邮件、日历、地图等。让我们一起来看看吧! 一、Safari浏览器 Safari是MacOS自带的浏览器,具有简洁、快速、安全的特点。 以下是一些Safari浏览器的使…

蛋仔派对如何获得蛋币,蛋仔派对怎么切换账号

在蛋仔派对游戏中,蛋币是一种虚拟货币,用以购买游戏道具或提升游戏体验。以下是五种可能的获得蛋币的方式: 关注【娱乐天梯】,获取内部福利号 1. 完成挑战和任务:玩家可以通过完成不同类型的任务和挑战来获取蛋币。任务…

根据前序与中序遍历结果构造二叉树

文章前言:如果不知道什么是前序与中序的小白同学,作者推荐:二叉树的初步认识_加瓦不加班的博客-CSDN博客 思路: 先通过前序遍历结果定位根节点 再结合中序遍历结果切分左右子树 public class E09Leetcode105 {//1. pre-order 前…

练[BJDCTF2020]The mystery of ip

[BJDCTF2020]The mystery of ip 文章目录 [BJDCTF2020]The mystery of ip掌握知识解题思路关键paylaodsmarty可利用paylaod 掌握知识 ​ ssti里的php语言smarty模板注入 解题思路 访问题目链接,发现导航条的flag和hint两个吸引人的题目,先查看flag发现…

方法内改变形参引用影响实参问题详解

方法内修改形参引用问题详解 一、问题描述二、解答三、结论 一、问题描述 方法内型参指向新建的对象是否会影响实参的引用呢? 我们看下面的例子 由图中我们可以看到,在main函数创建了一个新的ArrayList对象,并调用了print函数实现了对该对象…

Maven 下载安装配置

Maven 下载安装配置 下载 maven maven 官网:https://maven.apache.org/ maven 下载页面:https://maven.apache.org/download.cgi 安装 maven 将下载的apache-maven.zip文件解压到安装目录 将加压后的apache-maven目录改名为maven maven 配置环…

基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

JavaScript系列从入门到精通系列第十九篇:JavaScript中的this关键字

文章目录 前言 一:什么是this 二:this的灵活妙用 前言 function fun(a,b){console.log(a b); }fun(1,2); 我们通过形参的形式往参数中添加了参数。浏览器也会默默的给我们传递一个参数过去,这个参数被称为this。传递的节点就是在调用函…

1984-2020年世界各国和地区ICRG政治经济金融风险指标数据

1984-2020年世界各国和地区ICRG政治经济金融风险指标数据 1、时间:1984-2020年、 2、指标: 主要包括政治风险、经济风险、金融风险,以及各个分指标数据, 具体指标: id、Country、year、Bureaucracy Quality (L)、…

Goby 漏洞发布|深信服下一代防火墙 loadfile.php 文件读取漏洞

漏洞名称:深信服下一代防火墙 loadfile.php 文件读取漏洞 English Name: Sangfor Next Generation Firewall loadfile.php file reading vulnerability CVSS core:7.5 影响资产数:281045 漏洞描述: 深信服下一代防火墙是一款…

由于找不到msvcp120.dll 无法继续执行怎么解决(最新方法分享)

在使用电脑的过程中,我们可能会遇到一些问题,比如丢失 msvcp120.dll 文件。这种情况会导致电脑运行出现问题,甚至无法正常启动。本文将详细介绍 msvcp120.dll 文件丢失对电脑的影响以及 msvcp120.dll 丢失的原因,并提供四种解决方…