性能测试、压力测试、负载测试的关系
性能测试是一个统称,通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
负载测试和压力测试都属于性能测试。
压力测试
压力测试(Stress Testing):在超强的、近乎会导致系统崩溃的负荷(大数据量、大量并发用户等)下,观察系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等的变化。
稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等;破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过继续加压的手段,当压力强到可以迅速导致服务崩溃时,问题往往便会明显的暴露出来;负载测试
负载测试(Load Testing):目标是测试在不同负载情况下的系统性能情况。
常从比较小的负载开始,逐渐增加并发数、数据量, 观察并记录不同负载情况下系统的各项指标,直至系统无法承受而崩溃或服务不可用。
生活化例子
看到了网上一个餐厅服务员的例子,我借鉴并扩展一下:
压力测试:就是给这位服务员外部压力,比如长时间不让他休息、直接安排三倍的工作量等,看看服务员的反应如何,是会开小差(无法及时响应请求),还是会直接罢工(宕机)之类的。
负载测试:就是逐步加大这位服务员的工作量,比如第一天让他招呼一桌顾客,第二天招呼两桌,第三天招呼三桌,以此类推。看看此服务员在不同的工作量下完成服务的速度和质量,从而了解到该服务员的工作能力。