【测试】性能测试

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


目标

  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

猜你喜欢

转载自blog.csdn.net/weixin_54150521/article/details/129449233