性能测试
一:性能测试
1.概念
性能:事务,物品的某些特性的评价值
软件性能测试:通过工具,找出或获得系统在不同工况下的性能指标值
负载测试(逐步加压):逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量
压力测试(较大压力+较长时间*24):在较大的性能压力下,持续运行一个比较长的时间,看系统服务及各资源利用情况
稳定性测试:中度压力下的稳定性测试
可靠性测试(是否稳定,一定业务压力):在给定的一定的业务压力下,持续运行一段时间,查看系统是否稳定
容量测试(不同数据量级):在一定的软,硬件条件下,在数据库不同数量级数据量的情况时,对系统中读/写比较多的业务进行测试,从而获得不同数据,量级下的性能指标值
2.目的:寻找或证明系统的某些关键性性能指标
1.全新系统,从未做性能测试,寻找关键性的性能指标值
2.基于已有的性能测试基础上,再次做性能测试,验证预定的性能指标值
3.性能测试的必要性研究--关键项评估
主管部门,监管部门审查;涉及生命财产安全;大型新系统;核心系统;
架构调整;业务剧增;重大缺陷修复;
4.可测性--可量化为性能指标值
5.软件应该关注哪些性能?
1.企业关注哪些性能?
服务器利用情况,资源利用率
能支持的最大用户,系统容量
能支持的最大并发用户,并发用户数
是不是可以更换硬件提供性能,可扩展
能不能持续运行长时间不宕机,稳定性
2.开发人员关注哪些性能?
架构设计是否合理,系统架构
数据库设计,数据库
代码逻辑,代码
线程,异步,同步,队列,实现技术
资源配置,稳定性
6.性能测试主要指标
1.并发,指同一个时间点执行相同的操作(秒杀)
设置集合点,配置策略,让满足策略的人同时做某件事情,给服务器造成更大的压力
2.并发用户数(重要指标)
同一时间点,执行相同请求的用户数
系统用户数,在线用户数,线程数
3.事务,指一个客户机向服务器发送请求然后服务器作出反应的过程,jmeter默认一个接口请求就是一个事务,jmeter也可以设置一个事务下面多个接口请求
4.响应时间(RT)(重要指标)
从发起请求到收到请求响应的时间
发送请求网络传输时间+服务器处理时间+返回响应网络传输时间
5.TPS/QPS(最主要指标)
TPS:服务器每秒处理事务数,衡量服务器处理能力的最主要指标
QPS:每秒查询率
差异:一个Transactions可能有多个Queries,如访问网页
6.吞吐量(衡量网络):单位时间内处理的请求数量(事务/s) 如:港口吞吐量,1年5千万标准集装箱
7.吞吐率:单位时间通过的数据的平均速率(kB/s)如:港口日吞吐率,年吞吐量/365天
8.点击率:每秒点击数
9.资源利用率:指服务器资源的使用程度,比如服务器(应用及数据库)的CPU利用率,内存利用率,磁盘利用率,网络带宽利用率等
7.性能测试步骤
1.性能测试准备
需求分析-熟悉业务,明确性能测试目标(指标值),了解软件功能.架构,指定测试计划做好工作量评估,制定.测试模型(编辑测试用例)
2.搭建性能测试环境
工具选型与准备,被测系统环境搭建(服务器,服务器版本更新,数据库数据准备),网络配置
3.性能测试脚本开发
选取协议,制作脚本,调试脚本,验证脚本
4.性能测试执行
试运行,场景执行
5.性能测试结果分析与调优
分析依据:结果图表
分析思路:服务器硬件瓶颈(参数配置,数据库,web服务器)>应用瓶颈(sql语句,数据库设计,业务逻辑,算法)
调优:
修改脚本或场景
6.性能测试报告与结果跟踪
性能测试报告:
性能测试问题跟踪:
8.开展性能测试必备条件:1.网络要求,内网,外网,独立分开,千万不要用跨内网外网;2独立环境,功能测试不能和性能测试公用环境
(端口的连接数,netstat -anp | grep port | grep ESTAB | wc -l)
9.cpu:中央处理器,影响cpu性能主要因素:主频,架构
cpu的结构主要组成:运算器(执行运算操作),控制器(控制指挥中心),寄存器(cpu片内缓存+寄存器组)
10.内存:memory,是cpu与其他设备沟通的桥梁,主要用来临时存放数据,配合cpu工作,协调cpu的处理速度
11.jvm:Java虚拟机,虚拟出来的能够运行Java字节码的虚拟计算机。
本质上就是一个程序启动后就执行它包含的字节码
java运行是涉及的存储区域主要包括:程序计算器,Java 虚拟机(调用栈),本地方法栈,java堆
程序计数器,主要取下一条指令:java虚拟机栈,利用栈的先进先出特性存储变量表和动态连接;本地方法栈,与java虚拟机栈基本相同;java堆,最大的内存管理,同时也是垃圾收集器