业务需求:
2000人登录,登录不超过3秒:不可能同时找2k人
开发一款Web电商网站,使用JSP还是PHP:PHP写代码快得多,JSP写代码性能好,效率高
服务器配置是否支持2w人使用 测试2w人的服务器配置多少刚好够
关注点
响应时间
资源:
CPU
内存
硬盘
中间件,网络,数据库,架构设计是否存在瓶颈(配置问题,能力上限)
中间件:提供系统软件和应用软件之间连接的一种软件,简称应用服务器:如Tomcat,Apache…
目的:
评估当前系统能力 ----发布时
寻找性能瓶颈,优化性能 ----线上出问题,定位时使用
预估是否满足未来性能需求
瓶颈:看性能出问题时是什么因素导致的,内存,cpu,硬盘等
性能测试:验证软件需求是否满足业务需求场景,主要焦点是业务场景的满足(时间,空间)
时间:软件响应时间
空间:内存空闲率,服务器的磁盘使用率,cpu使用率
功能测试和性能测试相辅相成
在功能测试基本完成后进行
性能测试常用分类:
负载测试
压力测试
并发测试
稳定性测试
模拟真实场景测试
都要采取策略(性能基准指标测试:一个用户测试系统功能,查看响应时间和资源使用),作为后续测试结果的对比,可以评估未来 用户量增加,业务量上升响应时间下降趋势和资源使用的情况
负载测试:
负载:向服务器发送请求
逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统指标的情况下,系统所能承受的最大负载量的测试(最优运行的最大负载量)
压力测试:
逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,找到临界值
最优点是a,临界值是b
稳定性测试:
通过给系统加载一定的业务压力处于(0-a)(如cpu资源在70%-90%的情况下),运行一段时间检查系统是否稳定
通常测试一段时间即可,如24, 324, 724小时
并发测试:
模拟用户并发访问,测试多用户同时访问某一应用,模块或数据,观察系统是否存在问题
性能测试指标:
吞吐量:指的是单位时间内处理的客户端请求数量
并发数:并发测试的用户数
响应时间:
(web才有)点击数:
衡量web服务器处理能力的重要指标
该页面包含的元素(图片,链接,框架等)向web服务器发出的请求数数量。
错误率:
指系统在负载情况下,失败交易的概率,错误率=(失败交易数/交易总数)*100%
一般不超过千分之五。
稳定性较好的系统,其错误率应该由超时引起,既超时率(资源不足引起,增加资源解决)。
tps:
事务有大有小
QPS:
资源使用率:
CPU处理器
软件,程序运行时都需要实现把程序的代码和程序相关数据加载到内存里面,再运行起来。比如游戏加载。
性能测试流程:
性能需求分析的目标:
性能测试计划和方案:
项目背景
测试目标:确定此次性能测试的目标
人员安排:明确性能测试的时间,计划多少人来进行测试
时间进度
性能测试环境:尽量与生产环境保持一致,系统架构,软硬件配置,测试数据
测试工具:性能测试工具,监控工具
测试策略:确定性能测试类型和测试场景
单一场景:服务器同一时间只进行同一业务操作
混合场景:服务器同一时间处理多个不同业务操作
风险控制
搭建场景:
运行脚本:
系统性能调优:
性能测试报告:
LoadRunner:
ip欺骗就是:限制一个用户不能同时多个请求时,可以让多个用户同时来请求
Jmetea:
Jmeter文件目录介绍:
Jmeter基本操作步骤:
Jmeter原件作用域和执行顺序:
作用域:
原件执行顺序:
重点组件:
线程组,HTTP取样器,查看结果树
无论什么案例都需要以上三个组件
线程组:
线程组在测试计划默认是并行的
HTTP请求:
最底下参数如果是中文,需要点击编码,如果是post类型,在消息体数据中写
查看结果树:
取样器结果中的 Load time 为响应时间(ms)
Jmeter参数化:
用户定义的变量:
用户参数:
csv数据文件设置:
函数方式:
jmeter断言:
让脚本自动化执行的过程中,能够自动的判定执行结果是否正确,需要添加断言。
响应断言:
json断言:
断言持续时间:
关联:
正则表达式介绍:
正则表达式提取器:
后缀可以用调试取样器来查看,线程组右键添加取样器->调试取样器
xpath提取器:
xpath query: //标签名 , http取样器里要加后缀
json格式里用 $. 来表示根目录
Jmeter直连数据库:
逻辑控制器:
控制元件的执行顺序
如果(If)控制器:
循环控制器:
ForEach控制器:
定时器:
同步定时器:
常数吞吐量定时器:
Jmeter分布式:
相关注意事项:
分布式配置: