服务器性能测试

本文详细介绍了性能测试的概念、关键指标和流程,包括响应时间、并发数、吞吐量等。通过实例展示了如何使用JMeter进行性能测试,涵盖了参数化、断言、监控和调优等环节。此外,还讨论了分布式测试和性能测试报告的生成,强调了性能测试的目的在于寻找系统瓶颈并进行优化。
摘要由CSDN通过智能技术生成

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

* 响应时间:请求发起到请求响应的时间
* 并发数:并发测试的用户数
* 吞吐量:单位时间内处理客户端请求的数量

    * TPS:每秒事务(业务请求)数,TPS=并发数/平均响应时间
    * QPS:每秒查询数,控制服务器处理指定请求数

* 点击数(web项目):整个页面(含图片,链接,框架等)向服务器发送的请求数
* 错误率:负载情况下失败的概率(一般不超千分之五),错误率=失败业务数/业务总数
* 资源利用率:系统资源使用情况,资源使用量/总资源可用量
* PV和UV:

栗子:

* 后台代码性能
* 中间件(Tomcat,Apache等)、数据库、架构设计等查找瓶颈
* 服务器资源消耗(CPU、内存、磁盘、网络)

性能测试目的: 评估系统能力,寻找系统性能瓶颈,并优化,评估是否满足未来需求性能测试策略:基准测试:单用户运行的性能指标作基准做参考负载测试:逐步增加请求,确定最大负载量稳定性测试:服务器正常运行长时间测试满足业务需求(1天、1周等)并发测试:极短时间发送多个请求,验证并发处理能力压力测试:强负载下系统达到峰值情况发现问题,看系统的容错能力和可恢复能力容量测试等:极限压力下的各种极限参数值(TPS吞吐量,最大连接数,最大并发数等)
性能测试流程

1. 性能测试需求分析
* 熟悉被测系统
* 明确测试内容
* 明确测试策略
* 明确性能测试指标
1. 性能测试计划及方案
* 项目背景
* 测试目的
* 测试范围
* 测试策略
* 风险控制
* 交付清单
* 进度与分工
1. 性能测试用例

2. 测试脚本编写/录制

3. 建立测试环境

4. 执行测试脚本
* 性能场景设置
* 执行脚本(已调试)
1. 性能测试监控
* 监控性能指标
1. 性能分析与调优
* 结果对比,提出性能瓶颈
* 调优难易(硬件-网络-服务器和数据库等-源代码和数据库脚本-系统架构)
1. 性能测试报告
* 覆盖情况,问题(分析-调优-解决)
* 风险规避控制
* 教训总结经验

性能测试工具Jmeter安装与Demo测试

* LoadRunner(收费)和Jmeter(免费)

环境搭建

* 安装JDK
* 安装Jmeter
* 启动双击jmeter.bat

界面介绍

* 菜单栏:File,Search,Edit,Run,Option,Help
* 工具栏:New,Template,Save,Start,Stop等
* 左侧面板:Test Plan
* 右侧面板:详情参数设置区域

Demo1:
步骤:

1. 测试计划中添加线程组
2. 线程组添加Http请求
3. 线程组添加结果查看树

参数化

* 用户定义变量
* 用户参数
* CSV Date Set Config
* 函数

通过${att_name}来引用变量

1. 用户定于变量(单独一组变量)
2. 用户参数(多组数据)
3. CSV Date Set Config(多组数据)
4. 函数counter(计算请求数和用户数),random(生成随机数),timeshift(时间戳)

5.CSV和用户定义变量的作用域

* csv是对针对线程

    * 对所有线程组中线程生效:父节点是测试计划,并线程共享模式为所有线程
    * 对当前线程组生效:父节点是某个线程组

* 用户定义变量针对测试计划

    * 无论用户定义变量组件在哪里,都对整个测试计划生效

断言响应断言
Json断言
持续时间断言
关联正则表达式提取器参数解释
XPath提取器参数解释
JSON提取器
跨线程组关联(不同的两个线程组)

* __setProperty函数,将值存为Jmeter属性
* __property函数读取Jmeter属性值
* 使用BeanShell取样器

脚本录制

* 设置代理服务器
* Jmeter配置非测试元件http代理服务器
* 设置过滤(类似fiddler)注意代理服务器端口一致栗子:

启动:证书认证
录制:打开目标网站

拓展:
信息头管理器:
Cookie管理器:
连接数据库

* 启动数据库服务
* 配置mysql连接jar包
* 配置数据库数据
* 添加线程组(jdbc请求)
* 结果树查看

逻辑控制器if控制

* 变量调用的方法

循环控制
foreach控制

* 使用场景:和用户自定义变量/正则表达式一起使用

定时器同步定时器

* 阻塞线程,达到指定数量,立即释放并发请求
* 阻塞数量不满足时,会一直处于阻塞状态无法发送请求(数量必须整除)
* 阻塞数量不满足可设置阻塞超时时间,达到时间直接请求

常数吞吐定时器使用场景:一个用户以10QPS(10次/s)频率访问百度首页,持续一段时间统计运行情况
分布式测试使用场景:高并发,单台电脑(cpu和内存无法支持)

* 原理:一台控制机,其它是代理机。执行时控制机发送脚本到代理机,代理机执行,类似命令行模式执行,不用打开jmeter界面,执行结束代理机传回执行结果汇总
* 控制机
* 代理机

测试报告
命令行生成:
jmeter -n -t ceshi.jmx -l re.jtl -e -o ./report

* -n:非GUI模式执行Jmeter
* -t [jmx file]:指定脚本文件
* -l [result file]:结果文件
* -e:生成测试报告
* -o [html report folder]:测试报告存放路径

性能测试常用图表

* PV(Pege View),打开一次页面+1数量
* UV(unique visitor)唯一访问量,记录真实用户访问数量

常用平均并发数计算公式

* 普通计算方法

TPS = 总请求数/总时间

* 二八原则计算方法

TPS = 总请求(80%)/总时间(20%)

* 按业务数计算

插件管理包

* 下载对应jar包
* jar包放入jmeter的第三方库中lib/ext/下
* 下载常用组件https://jmeter-plugins.org/install/Install/
1. Concurrency Thread Group 线程组,线程中创建
2. Transactions per Second 每秒事务数,监听器中创建
3. Bytes Throughput Over Time 吞吐量,监听器中创建
4. PerfMon Metrics Collector 性能指标收集器,监听器中创建
  • 0
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值