性能测试、压力测试、负载测试 的区别
1. 性能测试
性能测试(Performance Test):以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
容量测试(Volume Testing)
确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
得到负载测试和压力测试各项指标的临界值。
稳定性测试
定义:是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试 时间为 n*12 小时。
运用场景:此类型的测试目前也最常见,针对需要长时间稳定运行的性能点,需要执行稳定性测试。往往在一个项目的性能测试过程中,会划分出优先级较高的性能点,做稳定性测试。例如:宝贝详情页面等等。
负载测试(Load Testing)
是确定在各种工作负载下系统的性能,目标是测试当对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。
运用场景:一般情况下,是以服务器资源安全临界值为界限的测试。如果要模拟某个应用在指定服务器上最大且安全的负载量,则属于负载测试。
压力测试(Stress Testing)
超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。
目的是找到系统在哪里失效以及如何失效的地方。
2.性能测试系统的性能指标
一般会在产品需求文档中有明确定义,
有三种形式描述软件系统的性能指标:
- 给出产品性能的主要指标(如响应时间):如在100000记录中查询一个特定数据的时间为0.5秒。
- 与上个基线对比:以某个已发布的版本为基线,如比上一个版本的性能提高30-50%。
- 与竞争对手的同类产品比较:也叫对标。
3.性能分析
排查手法基本相同:检查请求处理的各个环节的日志,分析哪个环节响应时间不合理,超过预期;然后检查监控数据,分析影响性能的主要因素是内存、磁盘、网络、还是CPU,是代码问题还是架构设计不合理,或者系统资源确实不足。
如:硬盘容量的最大值,文件系统容量的最大值,最大文件长度,缓冲区长度等
----->找出临时存储媒介的限定范围
如:邮箱,CD的最大长度
----->查找通信的限制
如:消息文件的超时或最大长度。查出快超时前有多少数据可以传输
----->寻找数据临时存放的地方,找出存储数据、读和取出这些数据的功能。
制作存储和删除两个过程的测试场景,找出该地方是否会填满或溢出。
----->长时间不停的多个用户同时进行系统的各项操作(一般用脚本或工具实现),观察系统资源占用情况,直到系统无反应或死机为止,获取系统可以承受的最大业务处理量,或最多访问用户数,提交给开发,让其设置系统容量检查指标
----->网络容量测试,检查系统中是否存在网络数据传输功能,如果存在,通过压力测试,获得网络最大传输量,提交给开发,让其设置网络容量检查指标
4.小故事