【测试】性能测试

news2024/11/26 10:05:23

努力经营当下,直至未来明朗!

文章目录

  • 目标
  • 一、性能测试概述
  • 二、常见的性能测试指标
  • 三、性能测试的分类
  • 四、loadrunner工具介绍(LR)
    • 一)VUG:虚拟用户发生器
    • 二)Controller
    • 三)Analysis
  • 小结


目标

  1. 了解性能测试的常见性能指标,能够使用loadrunner进行简单的性能测试
    面试爱问:性能调优)

  2. 目标:
    ① 性能测试概述
    ② 常见的性能指标
    ③ 性能测试分类
    ④ Loadrunner工具的介绍


普通小孩也要热爱生活!

一、性能测试概述

性能测试的好坏最终都需要通过数据来展示,通过性能指标对应的数据来判定性能的好坏。


二、常见的性能测试指标

  1. 并发
    1)并不是只要发出请求,服务器就一定会造成压力。
    2)并发强调大量用户和同时性操作,该情况才会对服务器造成压力。

  2. 响应时间
    1)从用户视角来考虑,响应时间反映了完成某个操作所需要的时间,标准定义是:应用系统从发出请求开始,到客户端接收完所有的字节数据所消耗的时间
    2)所以,响应时间分为前端展示时间和系统响应时间两部分。
    ① 前端展示时间指的是客户端收到服务器返回的数据后渲染前端页面所耗费的时间。
    ② 系统的响应时间,分为web服务器、应用服务器、数据库服务器等各种服务器之间通信和处理请求的时间。
    3)所以严格的说,响应时间应该包含两层含义:用户主观感受时的时间定义,技术层面的标准定义。
    对于软件服务器端的性能测试肯定要采用标准定义;对于前端性能评估,则应该采用用户主观感受的时间定义。

  3. 事务
    1)事务是衡量系统处理能力的重要指标
    2)事务通过数越高,性能越好(这是相对的,因为不同的系统要求不同,有些事务比较复杂;如提交订单事务,需要新增订单数据、用户账户扣除金额、以及对商品的库存等进行修改)
    3)每秒事务通过数(Transaction Per Second,简称TPS)

  4. 点击率
    1)代表用户每秒向服务器提交的请求数,点击率越大,服务器的压力越大
    2)注意:不是鼠标的一次点击,一次点击可能有多个请求。

  5. 吞吐量
    1)单位时间内系统处理的请求数量,体现软件系统的性能承受能力
    2)吞吐量受服务器性能和网络性能的影响
    3)单位:bytes/s

  6. 资源利用率
    不同系统资源的使用情况。包含CPU,内存,硬盘,网络等。


三、性能测试的分类

性能测试的实施步骤其实都是一样的。

  1. 一般性能测试
    正常情况下和系统条件下是否满足性能指标。(类似于“安全性”)

  2. 负载测试
    验证系统在一定压力下延长系统的运行时间,直至系统出现“拐点”。(发压和server压力的关系)[类似于“最大承受能力”]

  3. 压力测试
    验证系统在已经处于极限负载或者某指标已经处于饱和状态下的性能表现(一定要把系统搞崩溃),从而了解系统的承受极限。

  4. 稳定性测试
    验证系统在连续运行的情况下,查看系统的各项性能指标(内存泄露)


四、loadrunner工具介绍(LR)

一)VUG:虚拟用户发生器

  1. 主要用来生成性能测试脚本(写脚本)

  2. 创建一个新的性能测试脚本
    打开软件 -》 File -》 New Script and Solution -》Single Protocol -》 因为是针对web系统检测,所以选择 Web -》 填写脚本名称以及路径
    0
    1

  3. 打开LR自带的web系统(后续使用其进行性能测试)
    ① 启动webTours服务:C:\Program Files (x86)\HP\LoadRunner\WebTours\StartServer.bat (双击打开并保持打开状态)
    ② 浏览器访问:http://127.0.0.1:1080/WebTours/
    ③查看WebTours系统的登录账号和密码:C:\Program Files (x86)\HP\LoadRunner\WebTours\cgi-bin\users,其提供的账号jojo,密码为bean
    (注意:密码是可以自己进行修改的,打开后修改首行的bean并保存就行,刷新后页面就可以使用新的密码进行登录了; 也可以多创建几个账户,直接cv,然后进行修改就行)
    2

  4. 编写性能测试脚本
    (在Action.c中进行web系统的性能测试)
    ① 注意:自动生成函数:View -》 Steps Toolbox -》 右边就会出现可选的函数
    3

② 因为测试web系统,所以在右边直接搜索web(或url) -》 双击选择web_url -》 进行名称以及url的修改填写 (注意鼠标放在插入位置)
5

③ 在开发者工具(fn+f12)中查看请求的格式:NetWork,本web是使用form表单形式进行提交请求的
6

④ 在右边搜索submit -》 然后选择web_submit_form -》 注意填写名称general以及参数data
7

⑤检查当前脚本是否正确:点击运行
8
9(测试通过)

⑥ 查看终端提示信息
当双击某行的提示信息,对应的脚本就会闪烁一下

⑦ 以上只是最简单的性能测试脚本的写法,但是这种写法并不足以让我们进行性能测试数据的收集。此时就需要进行性能测试脚本的增强。

  1. 性能测试脚本的增强
    1)添加事务:
    lr_start_transaction 开启事务
    lr_end_transaction 结束事务
    (注意事务名称的一致性,以及事务必须有开启有结束)
    10
    11
    事务之间是可以嵌套的(注意匹配):
    12

2)集合点
假如后续我们创建10W个虚拟用户去执行编写好的性能测试脚本,不能保证所有的虚拟用户都同时去执行每一步,所以为了实现真正意义上的并发就需要让虚拟用户执行到集合点后进行短暂的集合,在满足条件后一起执行下一个步骤。

lr_rendezvous 集合点设置(若存在事务则在开启前面进行设置):需要在Controller中查看

13

3)检查点
在页面中查找某元素是否存在(如避免用户的越权行为
web_reg_find (注意:也是加在前面的,但是如果存在事务则可以是在开启事务之后
15
16
17
注意:检查点一般放在请求之前!

4)参数化
① 如:在users下先创建另外的用户:用户名xian,密码bean,这样就实现了多参数
18
② 然后需要对登录的用户进行参数化设置:选中已经存在的value值 -》 然后右键 -》 Replace… -》 create New … -》 修改参数名、参数类型以及默认值 -> 然后点击ok -》 选择No
19
20

③ 设置数据源:左侧Parameters双击 -》 browse打开进行参数的设置(如添加等) -》 保存后关闭该页面后重新打开Parameters才会显示 -》 or 直接Add Row / Delete Row / Edit Notepad…(一定要记得保存ctrl + s) -》 [可以添加多列,也可以选择执行的列] -》还可以选择列中的执行顺序
21

④ 发现只迭代了一次
22

⑤ 那么这么多的参数,如何让它执行多次使所有参数都执行呢 ?
左侧Runtime Settings 进行设置 -》 一定要进行ctrl+s保存
23

25 此时设置之后迭代了两次。

注:当迭代次数超过已有参数个数时,会进行循环调用(从头再开始)

5)脚本录制
(注:首先说明,并不是所有人都能够使用脚本录制的,一般来说只有安装了IE浏览器的才能够使用该功能。但是不能用也没关系,可以进行手动编写。)

使用录制脚本可以自动的生成性能测试脚本。

① 点击“录制脚本”按钮
26

② 证书安装选择“是”,操作/录制完成后选择“是”删除根证书
27
28

③ 介绍浮窗:
29

二)Controller

  1. 创建和设计测试场景,运行测试脚本,监控场景运行,收集测试过程的数据。

  2. 方法:① 直接点击桌面的controller图标
    or ② 在VUG中Tools =》 Create Controller Scenario
    30

  3. 界面部分简介
    31

1)Design
① 初始化
32

② 开始虚拟用户的运行
33

③虚拟用户运行时间
35

④结束虚拟用户(虚拟用户的退场)
36

⑤对应的图
37

2)Run
① 状态栏介绍
38

② 查看图表:View => Show / Hide… => View Graphs
39

为啥最后图表展示的事务会比自己写的事务增加呢?
在运行测试脚本的时候,每个文件就是一个事务(init、action、end文件都是事务)

④ 注意:如果发现图表在选择展示多个后只展示一个的话就需要进行界面的放大缩小一下(右上角的选项)

⑤如果想要查看在性能测试执行期间系统资源的消耗情况,那么就需要打开相关的系统设置,以此来允许LR获取对应的数据。
40

打开相关的系统设置步骤:任务管理器 -> 服务 -> RPcSs 右键开始、RemoteRegistry右键开始
41

然后在Controller中Run模块的System Resource Graph下选中Windows Resources -> 在下方空白处右键选择Add Measurements… -> 在Machines处add -> 在Resources处选择自己需要的资源,多余的可以delete -> 此时点击Windows Resources就会出现所选的资源
42

⑥ 在Results下 选择Auto… 可以自动打开Analysis
Analysis:分析性能测试结果,生成性能测试报告
43

三)Analysis

分析性能测试结果,出测试报告和各种图表。
45

  1. 测试报告
    一般情况下,不太关注最大值和最小值,主要看平均值和标准偏差。标准偏差值越大,说明服务越不稳定。
    46

  2. 测试图表
    46

1)运行的虚拟用户图:根据显示的运行虚拟用户数量可以判断出在哪个时间段内给定服务器的负载。
2)点击率(每秒点击数):通过点击率也可以判断出某段时间内服务器的负载。
3)Throughput吞吐量:
吞吐量图形和点击率图形有点儿相似,但是吞吐量曲线稍微滞后一些,为啥呢?
因为吞吐量表示的是响应返回的资源数量,肯定是先有请求再有返回(先点击后吞吐)。

4)如果请求变多但是吞吐量没啥变化,可能的原因是啥?
① 服务器响应慢了,来不及响应
压力没有到服务器
③ 服务器设计一定的阈值,超过多少请求之后就不返回响应。(目的:保证服务器不宕机)

5)平均事务响应时间图:
虚拟用户在性能测试过程中,每秒在服务器上命中的次数,可以帮助根据命中次数评估虚拟用户生成的负载量

6)如果想要看自己添加/更多的图表:空白处右键 Add -> Add -> 选中 -> Open Graph
47

解释系统资源的相关名词:
48
① Processor Time:CPU使用时间,被消耗的处理器时间数量。
② Available MBytes:可用的物理内存,一般根据这个指标推算消耗的物理内存有多大。
已经消耗的物理内存:实际内存 - 可用的物理内存

7)(注:其实性能测试难就难在性能结果分析和调优)


小结

  1. 常见性能测试指标:并发、响应时间、事务、点击率、吞吐量、资源利用率
  2. 性能测试的分类:
    ① 一般性能测试(正常情况+系统条件)
    ② 负载测试(一定压力下延长系统的运行时间直至出现“拐点”)
    ③ 压力测试(系统处于极限负载or某指标处于饱和状态下的性能表现,了解系统承受极限)
    ④ 稳定性测试(连续运行下的各项性能指标)
  3. loadrunner使用进行性能测试:VUG、Controller、Analysis

yyy

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

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

相关文章

vector的使用及模拟实现

目录 一.vector的介绍及使用 1.vector的介绍 2.vector的使用 1.vector的定义 2.vector iterator的使用 3. vector 空间增长问题 4.vector 增删查改 3.vector 迭代器失效问题(重点) 1. 会引起其底层空间改变的操作 2.指定位置元素的删除操作--erase 3. Li…

python 从0到批量下载某站视频

简介:真实从0到1,童叟无欺~ 目标:用python批量下载某站搜索视频,以“CG 服装”为例 本章主要介绍如何用python把搜索到的视频直接下载到自己的本地文件夹中~ 介绍一下工作流1. 下载并安装python2. 测试pyt…

Ansible自动运维————实验

0、创建新的虚拟机,使用镜像RHEL8.5,要求/boot目录为512N,/home目录为1Gb,交换空间为2Gb,其他空间给)目录。1、将该主机作为 Ansible 控制节点,克隆该虚拟机,将克隆的虚拟机作为受控节点&#x…

Koa源码学习

前言 koa是一个非常流行的Node.js http框架。本文我们来学习下它的使用和相关源码 来自官网的介绍: Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。…

【数据分析】Excel必备函数汇总

文章目录求和单条件求和SUMIF多条件求和SUMIFS求平均AVERAGE单条件多条件查找纵向VLOOKUP函数eg1已知身份证查姓名eg2已知身份证查地区Find函数FindB函数SEARCH函数SEARCHBMATCH函数Subtotal函数最值小数点去小数点TRUNC四舍五入ROUND随机数求余奇偶统计条件多条件时间当前日期…

LearnOpenGL-光照-5.投光物

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject 文章目录投光物平行光点光源聚光不平滑的例子平滑例子投光物 前面几节使用的光照都来自于空间中的一个点 即…

IR 808 Alkyne,IR-808 alkyne,IR 808炔烃,近红外吲哚类花菁染料

【产品理化指标】:中文名:IR-808炔烃英文名:IR-808 alkyne,Alkyne 808-IR CAS号:N/AIR-808结构式:规格包装:10mg,25mg,50mg,接受各种复杂PEGS定制服务&#x…

Git的下载、安装、配置、使用、卸载

前言 我是跟着狂神老师学的。该博客仅用于笔记所用。 下面是老师的B站和笔记 B站:https://www.bilibili.com/video/BV1FE411P7B3?p1&vd_source9266cf72b1f398b63abe0aefe358d7d6 笔记:https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ 一、准备工…

【18】组合逻辑 - VL18 实现3-8译码器①

VL18 实现3-8译码器① 1 题目 【这题我的思路非常绝境】奈斯 !! 看真值表的思路:Yi所在列【0仅一个其余全1】,故【以0为对象求解】 观察发现:E3 E2_n E1_n = 100 时 是 译码的使能信号 ; 并且E3 E2_n E1_n为其他值时,都不使能译码 然后就很简单,没有仿真就成功了 2 代…

Linux:文件流指针 与 文件描述符

目录一、文件描述符二、文件流指针三、缓冲区之前讲解过了IO库函数和IO接口,库函数是对系统调用接口的封装,也就是说实际上在库函数内部是通过调用系统调用接口来完成最终功能的。 库函数通过文件流指针操作文件,系统调用接口通过文件描述符操…

在一个web应用中应该如何完成资源的跳转

在一个web应用中通过两种方式,可以完成资源的跳转: 第一种方式:请求转发 第二种方式:重定向 转发和重定向的区别: 代码上的区别: 请求转发 // 获取请求转发器对象 RequestDispatcher dispatcher request.…

3-1 SpringCloud快速开发入门: Ribbon 是什么

接上一章节Eureka 服务注册中心自我保护机制,这里讲讲Ribbon 是什么 Ribbon 是什么 通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行,负载均和分为硬件负载均衡和软件负载均衡: **硬件负载均衡:**比如 F5、深信…

C# 实现 key-value 结构自定义缓存 CustomCache

功能需求 使用 C# 编写一个 key-value 结构进程内缓存,实现数据的缓存操作,此处所用到的知识点如下: 线程安全的字典 ConcurrentDictionary;设计模式之单例模式(Singleton);缓存数据【主动 &a…

3.10多线程

一.常见锁策略1.悲观锁 vs乐观锁体现在处理锁冲突的态度①悲观锁:预期锁冲突的概率高所以做的工作更多,付出的成本更多,更低效②乐观锁:预期锁冲突的概率低所以做的工作少,付出的成本更低,更搞笑2.读写锁 vs 普通的互斥锁①普通的互斥锁,只有两个操作 加锁和解锁只有两个线程针…

HT32合泰单片机开发环境搭建和配置教程

HT32合泰(Holtek)单片机开发环境搭建安装教程 前言 最近在准备合泰杯的比赛,在看合泰官方的PPT和数据手册学习,顺便做个合泰单片机的开发环境搭建教程。 合泰杯比赛发放的开发板是ESK32-30501,用的单片机是HT32F52352。 合泰杯官网地址&a…

【C++】vector的使用及其模拟实现

这里写目录标题一、vector的介绍及使用1. vector的介绍2. 构造函数3. 遍历方式4. 容量操作及空间增长问题5. 增删查改6. vector二维数组二、vector的模拟实现1. 构造函数2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效问题5. 浅拷…

Java中的 this 和 super

1 this 关键字 1.1 this 访问本类属性 this 代表对当前对象的一个引用 所谓当前对象,指的是调用当前类中方法或属性的那个对象this只能在方法内部使用,表示对“调用方法的那个对象”的引用this.属性名,表示本对象自己的属性 当对象的属性和…

IntelliJ IDEA 编码设置

1.场景 适用于配置idea文件编码 2.配置 对已经存在的项目设置文件编码 可以设置全局的编码 以及 项目的编码 一般没啥特殊要求 都建议设置为 UTF-8 以及 配置项目的目录的单独编码 也建议UTF-8 idea可以单独设置properties的编码 也建议改为 UTF-8,其中有一个重点…

HCIP --- GRE和MGRE

VPN----虚拟私有网络:依靠ISP或者其他网络管理机构在公有网络基础上构建的专用的安全数据通信网络,只不过该网络是逻辑上的而非物理的。 虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立的属于自己的私有网络…

[论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

引言 我们知道Transformer很好用,但它设定的最长长度是512。像一篇文章超过512个token是很容易的,那么我们在处理这种长文本的情况下也想利用Transformer的强大表达能力需要怎么做呢? 本文就带来一种处理长文本的Transformer变种——Transf…