什么是性能测试
我们常常听说什么性能测试、压力测试、负载测试等等,他们直接的关系是什么呢?
压力测试
定义:
长时间连续运行,增加超负荷(并发,循环操作,多用户),什么时候系统会产生异常,以及异常处理能力,验证系统可靠性,找出瓶颈所在。
注意:压力测试中的长时间运行;
目标:
压力测试注重的是系统长时间运行,给系统造成的影响
负载测试
定义:
一个很短时间内,处理一个巨大的数据量或执行许多功能调用上的能力,验证系统预期的性能目标,响应时间等。
注意:负载测试是测试不同负载情况下,系统的性能指标
目标:
测试在不同负载情况下系统性能(不关注稳定性,也就是说不关注长时间运行,只是得到不同负载下相关性能指标即可)
容量测试
定义
确定系统可处理同时在线的最大用户数
注意:容量测试,通常和数据库有关
容量和负载的区别在于:
容量关注的是大容量,而不需要表现实际的使用。
为什么做性能测试
目的
根据需求分析,可以协同产品、开发人员一起讨论
背景
了解业务背景,可以和产品经理沟通
如何做性能测试
准备工作
1、明确目的;
--- 测试的目的,为什么进行这次性能测试,是为了调优还是为了验证系统是否达标抑或是明确当前系统最大的并发
2、了解业务背景;
--- 明确对应的背景,数据量的增长有多大,使用的人员是哪些,对应人员的增长幅度是多大,什么时候投入使用,最常被使用的功能是什么
3、同产品、开发一起讨论,确定业务场景;
--- 根据业务背景,明确测试的业务场景,根据产品建议,选择最重要做常用的优先,根据开发建议选择比较容易出问题的场景验证
4、明确测试目标;
---- 测试目标其实是和测试目的一起的,在知道对应的目的后,需要确立目标,即完成目标,到什么时候为止;一般是参考需求说明,或者是测试前,大家先根据经验先制定一个经验值,达到这个值才可以停止测试。
5、准备测试数据;
--- 数据量的大小根据本次的业务场景,比如需要测试某查询功能,这时需要有一定的数据量支撑;或是并发1000,需要有1000个并发用户,对应的数据已经用户数据需要提前准备;
--- 建议大家在准备好数据后,进行一次备份,避免后续需要重复造数据;
6、编写测试脚本、调试;
--- 目的保证脚本正常运行;
--- 参数化数据可以正常使用;
7、明确测试环境;
--- 环境的地址;
--- 环境的配置;
8、了解测试场景对应的链路;
--- 需要开发协助,提供或者辅助测试同学画出对应的链路;
9、明确对应服务部署
--- 测试的服务部署在哪台机器上;
--- 每台机器上部署的有哪些服务;
过程监控
执行脚本
以jmeter为例
使用非gui模式运行,不要通过界面直接压测
选择好监控工具
不建议使用压力工具自带的监控工具
数据分析
系统数据分析
服务器数据分析
两者数据结合的分析
数据分析,注意数据的变化而不是数据的大小。