概念性能测试:用自动化工具,模拟不同场景,对软件各项性能指标进行测试和评估的过程性能指标:
* 响应时间:请求发起到请求响应的时间
* 并发数:并发测试的用户数
* 吞吐量:单位时间内处理客户端请求的数量
* 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 性能指标收集器,监听器中创建
版权归原作者 花间无久 所有, 如有侵权,请联系我们删除。