一、性能测试
1.0为什么要进行性能测试?
1.评估当前系统的能力
2.寻找性能瓶颈,优化系统性能
3.评估 软件是否满足未来需求
1.1什么是性能测试?
时间:系统处理用户请求的响应时间
资源:系统运行中,对资源的消耗
1.2性能测试是什么?
通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项西性能指标进行测试。
1.3功能和性能测试
1.不同:
功能测试验证系统的功能需求规格、聚焦功能。
性能测试验证系统业务性需求场景,聚焦时间内和资源。
2.关系:
功能测试通过后,后进行性能测试。
1.4性能测试的分类
1.4.1:基准测试
建立基准线,当系统软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
1.4.2负载测试
逐步增加系统负载,满足性能指标情况下,找出系统的最大承受能力。
作用:系统最大负载量达到用户要求时,系统才能正式上线使用。
注意:
1.通过负载测试,可以确定系统的最大负载量和极限负载量
2.系统对外宣称的最大负载量
3.负载测试的时间一般为1-2小时
1.4.3稳定性测试
系统各项指标都正常的情况下,进行长时间的测试(1天—至一周),并且没有出现问题,满足用户长时间运行该系统。
1.4.4压力测试
1.在强负载下的测试,查看系统在峰值下是否功能隐患、系统是否具有良好的容错能力和可恢复的能力。
2.场景
1.高负载下的长时间稳定性压力测试
2.极限负载下的破坏性压力测试
1.4.5并发测试
在极短的时间内,处理大量请求来验证系统的并发处理能力。
场景:抢红包、秒杀。
并发测试与负载测试的区别:
负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题。
并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题。
1.5 性能测试的指标
1.5.1 响应时间
指从客户端发起请求开始,到客户端接收到结果的总时间
包括:服务器处理时间 + 网络传输时间
1.5.2 并发用户数
某一时刻同时向服务器发送请求的用户数
1.5.3 吞吐量(Throughout)
1.概念:单位时间内处理客户端的请求数量,直接体现软件系统能能承载能力。
吞吐量单位分类
1.5.4 QPS
QPS(Query Per Second)每秒查询数,即控制服务器每秒处理的指定请求的数量。
1.5.5 TPS
TPS(Transaction Per Second)每秒事务数,即控制服务器每秒处理事务请求的数量。
如:支付请求事务=查询用户余额请求+校验支付安全请求+发送支付请求
1.5.6 点击数
所有的页面元素(如:图片、链接、框架等)的请求总数量
注意:点击数是请求数,不是页面上的一次点击
1.5.7 错误率
指系统在负载情况下,失败业务的概率
注意:
错误率是性能指标,是高负载下的失败业务的概率
随机bug是功能bug,先解决随机bug才能进行性能测试
1.5.8 资源利用率
概念:系统各种资源的使用情况,率=资源使用量/总资源可用量x100%
常见资源指标
CPU使用率:不高于75%-85%
内存大小使用率:不高于80%
磁盘IO(速率):不高于90%
网路(速率):不高于80%
Jmeter
1.jmeter的作用
1.接口测试 面试说postman,因为方便好用。
2.性能测试 jmeter,也可以用postman(runner),但是没有性能指标
3.数据库测试
2.线程组是什么?
概念:性质相同的线程放在一个组内
线程组包含线程数、准备时长、循环次数
1.线程数:虚拟用户数
2.准备时长:启动所有用户的时间
3.循环次数:每个线程发送请求的次数
3.jmeter主要组件
1.测试计划
2.线程组:性质相同的一组线程(线程数、准备时间、循环次数)
3.采样器:HTTP
协议、主机地址、端口号(选填)、请求方法、路径、编码格式(选填)、参数
4.监听器:采集测试结构
察看结果树、用表格查看、聚合报告
5.循环控制器
6.事务控制器
事务:多个操作组合
作用:
7.固定定时器
作用:控制两个采样器的间隔
8.断言
1.Json断言:判断某个key对应某个value
2.响应断言:响应中包含某个串
9.前置处理器和后置处理器
4.参数化
1.用户自定义变量:
作用:提供全局变量,方便修改
使用:配置元件 → 用户定义的变量 → key value → ${key}
2.CSV data set config
配置文件:
添加元件:CSV data set config → 选中文件 → 编码 → 字段1,字段2
在采样器界面:添加参数 → 调用${字段名称}
3.CSV函数小助手
工具 → 函数小助手 → 选择CSV Read → 复制文件路径 → 字段编号 → 生成 → 自动复制,过去粘贴
5.接口依赖
正则语法:* + ? . ()
实现:
①添加HTTP请求,使用正则提取一个需要字段
②在第一个HTTP请求里边调用字段${字段}
6. jmeter脚本录制和压测
1.什么是脚本录制
在进行测试的时候,可能有好多脚本或者界面需要操作测试,并且有些测试链接需要重复多线程高并发进行测试,我们一般会针对这一些操作,进行一个脚本录制,录制好之后,之后测试就可以在这个基础上进行测试。
2.脚本录制方式
web端:badboy脚本录制
app端:使用Jmeter自带的代理服务器进行脚本录制
3.Android手机端脚本录制
1.同网
2.添加http代理服务器
3.在线程中添加录制控制器
4.在http代理服务器中指定录制脚本的路径,默认端口8888
5.查看本地的ip
6.设置移动端代理,IP和端口号
7.启动
8.打开手机app,抓取接口
4.web端脚本录制
安装badboy脚本软件→打开badboy软件→使用
7.Jmeter压测
一.数据库压测
1.为什么要紧行数据库压测
不断给数据库施加压力,验证数据库处理的性能
2.如何进行数据库压测
1.jdbc配置:创建线程组→添加配置元件JDBC Connection Configuration→对数据库连接的配置进行设置→添加jdbc Request请求→运行
select statement:只支持单条查询,只支持第一条数据查询
updata statement:修改数据
Callable Statement:支持查询、修改、支持多个查询
Prepared Select Statement:类型必须为varchar**结合csv配置数据
2.jmeter对服务器压测(windows)
资源准备: JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目录下
操作:打开server的监听→添加监听器-jp@gc - PerfMon Metrics Collector→添加性能指标,线程组设置线程数和时间
2.jmeter对服务器压测(linux)