概念性能测试:用自动化工具,模拟不同场景,对软件各项性能指标进行测试和评估的过程性能指标:
* 响应时间:请求发起到请求响应的时间
* 并发数:并发测试的用户数
* 吞吐量:单位时间内处理客户端请求的数量
* 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 性能指标收集器,监听器中创建



