软件测试——性能测试

性能测试的概念

什么是性能测试

性能:指时间(系统处理用户请求的响应时间)和资源(系统运行过程中,系统资源的消耗情况)
性能测试:使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程。

性能测试的目的

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

性能测试的时机

通常在功能测试通过之后进行

性能测试的策略

基准测试
通常为单用户测试。一般不会单独存在,它的目的是建立一条基准线
常见的使用场景有:
1.为多用户并发测试等综合场景提供参考依据
2.先进行一次基准测试,当系统软硬件环境发生变化后再进行一次,以确定变化对性能的影响

负载测试
在满足客户要求的性能指标下,逐步增加系统负载,找到系统能够承受的最大负载的测试

稳定性测试
将系统在客户要求的负载下运行足够长的时间(时长通常由用户规定),观察其稳定性的测试

压力测试
在高负载下测试系统,看其在这种状态下是否存在隐患,是否有良好的容错力和恢复力

性能测试的指标

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

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

吞吐量
指的是单位时间内处理的客户端请求数量。从技术指标上,可以用每秒事务数(TPS)和每秒查询数(QPS)来衡量。
TPS:服务器每秒处理的事务请求的数量
QPS:服务器每秒处理的指定请求的数量

点击数
所有的页面元素发起的请求总量

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

资源利用率
资源的使用量 / 总的资源可用量 * 100%
没有特殊要求的情况下,通常要求:
CPU使用率不高于85%
内存使用率不高于80%
磁盘速率不高于90%
网络速率不高于80%

性能测试的工具

在这里插入图片描述

Jmeter

Jmeter最基础的案例

在这里插入图片描述

线程(用户)-线程组

在这里插入图片描述

配置元件-HTTP信息头管理器

在这里插入图片描述

取样器-HTTP请求

在这里插入图片描述

监听器-查看结果树

在这里插入图片描述

监听器-聚合报告

在这里插入图片描述

Jmeter参数化

参数化的本质是使用不同的测试数据测试相同的功能,目的是将测试数据与测试方法分开。

用户定义的变量(常用)

使用场景:

可理解为需要定义全局变量的时候

使用步骤:

1.右键:添加-配置元件-用户定义变量
2.在下图红框中维护变量 在这里插入图片描述
3.在需要用到变量的地方引用变量:${变量名称}

用户参数

使用场景:

不同的用户使用不同的测试数据

使用步骤:

1.右键:添加-前置处理器-用户参数
2.在下图红框中维护变量 (注意有几个线程就要维护几个用户)
在这里插入图片描述
3.在需要用到变量的地方引用变量:${变量名称}

CSV数据文件设置(常用)

使用场景:

不同的用户,或者同一个用户的多次循环,使用不同的测试数据。需要提前准备数据。

使用步骤:

1.准备csv数据文件(注意保存时的编码格式为utf-8、后缀为.csv)
在这里插入图片描述
2.右键:添加-配置元件-csv数据文件设置
3.在下图红框中添加csv文件
在这里插入图片描述
4.在需要用到变量的地方引用变量:${变量名称}

函数

使用场景:

不同的用户,或者同一个用户的多次循环,使用不同的测试数据。不需要提前准备数据。

使用步骤:

在这里插入图片描述
常用的几个函数:
random:在给定的最小值和最大值之间生成一个随机数
counter:生成一个递增的计数器值
time:生成一个当前时间的时间戳或格式化日期时间字符串。如果不提供格式,则默认生成时间戳。

Jmeter断言

断言的目的是让程序自动判断预期结果和实际结果是否一致。

添加方式:右键:添加-断言

常用的三种断言:
响应断言 在这里插入图片描述
JSON断言 在这里插入图片描述
持续时间断言
在这里插入图片描述

Jmeter关联

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

关联处理一般需要用到后置处理器,常用的为:正则表达式提取器XPath提取器JSON提取器

提取到的内容都通过**${引用名称}**来使用

正则表达式提取器(常用)
使用场景:可以针对任意格式的响应数据进行提取
在这里插入图片描述
XPath提取器
使用场景:可以针对HTML格式的响应数据进行提取
在这里插入图片描述
XPath教程见:https://www.w3school.com.cn/xpath/xpath_syntax.asp
JSON提取器
使用场景:可以针对JSON格式的响应数据进行提取
在这里插入图片描述
JSONPath教程见:(非官方,挂了就关键字搜索其他的)https://blog.csdn.net/zhouruifu2015/article/details/130056895
https://blog.csdn.net/fanfangyu/article/details/133988514
查看JSONPath提取值的网站:https://jsonpath.com/

Jmeter属性

上节提取到的内容是保存为变量的,局部生效,无法跨线程组使用。如果想要实现跨线程组使用就需要定义为属性。

步骤:

(线程组1)
1.添加合适的提取器,提取想要的内容。
在这里插入图片描述
2.将提取的内容定义为属性。需要用到setProperty函数BeanShell后置处理程序
在这里插入图片描述
在这里插入图片描述
(线程组2)
3. 使用属性。需要用到Property函数
在这里插入图片描述

Jmeter常用逻辑控制器

循环控制器

在这里插入图片描述

ForEach控制器

一般常与用户定义的变量、正则表达式提取器等配合使用。该控制器下的取样器会被循环执行,每次读取不同的变量值。

在这里插入图片描述

用户定义的变量配合使用案例在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Jmeter常用定时器

同步定时器

作用是阻塞线程。当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力。

使用场景:模拟XX个用户同时XXX
在这里插入图片描述

常数吞吐量定时器

使用场景:负载测试
在这里插入图片描述

固定定时器

使用场景:需要延迟请求发送时间时

Jmeter直连数据库

在这里插入图片描述

以下介绍的是直连MySQL数据库

1.下载MySQL驱动的jar包(下载好后记得解压) https://downloads.mysql.com/archives/c-j/
在这里插入图片描述

2.添加MySQL驱动的jar包
方法一:(本脚本可用)在测试计划面板点击浏览按钮,选择jar包添加 在这里插入图片描述
方法二:(所有脚本可用)将jar包放到…/lib/ext下,重启JMeter
在这里插入图片描述

3.配置数据库连接信息
右键->添加->配置原件-> JDBC Connection Configuration 在这里插入图片描述

4.添加JDBC请求 在这里插入图片描述

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值