性能测试技术栈
性能测试类型
性能测试类型包括负载测试、压力测试、强度测试、容量测试、并发测试、稳定性测试(可靠性测试、疲劳强度测试)、配置测试、失败测试等
性能测试
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能的需求。
注意:要事先了解被测系统经典场景,并具有确定的性能目标
目的:是验证系统是否具有宣称具有的能力。是为获取或验证系统性能指标而进行测试。多数情况下,性能测试会在不同负载情况下进行。
负载测试
模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(例如CPU、内存)等,以检查系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题。
负载测试更多的体现了一种方法或一种技术
负载
模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖、登录、购票等操作
关注点:软件系统的性能极限,软件在一定时期内,最大支持多少并发用户数,软件请求出错率等
负载测试是通过改变系统负载方式、增加负载等来发现系统中存在的性能问题
负载测试是一种测试方法,可以为性能测试、压力测试所采用
压力测试
压力测试/强度测试,是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统某项功能隐患、系统是否具有良好的容错能力和可恢复能力
关注点:饱和状态,让系统处在很大强度的压力之下,看硬件系统是否达到需求文档设计的性能目标,在一定时间内,系统的CPU的利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等是否稳定
压力测试分类
高负载下的长时间(如24小时以上)的稳定性压力测试
极限负载情况下导致系统崩溃的破坏性压力测试
容量测试
核实测试用户同时使用软件程序的最大数量,确定系统最大的承受量,比如系统最大用户数,最大存储量,最多处理的数据流量等
并发测试
通过模拟用户并发访问,测试多用户并发访问同一个应用,同一个模块或者数据记录时是否存在死锁或者其它性能问题。
特点:主要目的是发现系统中可能隐藏的并发访问时的问题,如系统中的线程锁和资源争用方面的问题
关注点:同时,多个用户同时(并发)对一个模块或操作进行加压
集合点:方便并发使用的控制器
稳定性测试、稳定性压力测试、可靠性测试、疲劳强度测试
在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定
特点:主要目的是验证是否支持长期稳定的运行,需要在压力下持续一段时间的运行,需要关注系统的运行状况
关注点:稳定,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态
稳定性测试:长时间运行软件,查看是否能连续稳定运行。一般测试时间是12小时或24小时
稳定性压力测试:强负载,长时间
可靠性测试:在有代表性的环境(比如客户使用的环境里)按照客户实际操作方法操作,验证软件是否符合客户需求
疲劳强度测试:比稳定性测试时间更长,一般测试时间是48小时或更长
配置测试
核实在操作条件保持不变的情况下,通过对被测系统的软/硬件环境资源配置的调整,收集各种不同配置对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特点:主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。一般在对系统性能状况有初步了解后进行。一般用于性能调优的规划能力,为设备选择,设备配置提供参考。
关注点:微调-最优分配,通过对软硬件的不断调整,找出这个最佳状态,使系统达到一个最强的状态
配置测试需要修改软硬件的配置,来进行多次测试
失败测试
对于有容灾备份和负载均衡的系统,通过次测试来验证如果系统发生故障,用户是否可以继续使用系统。
负载测试和压力测试区别
共同点:都是性能测试不同的设计,都是在测试过程中逐步加压(递增测试)
负载测试:Load Testing
是在正常范围内测试,满足性能需求,确保正常运行即可
压力测试:Stress Testing
可以再极端范围内测试,能够测试系统的性能极值
例如:性能需求中要求系统能够支持100用户并发
负载测试:20 40 60 80 100 用户的并发测试,递增进行
压力测试:继续加压,进行200 300 ....
各个测试关注点
关注点 | |
性能测试 | 性能指标 |
负载测试 | 宣称能力 |
压力测试(强度测试) | 饱和状态 |
容量测试 | 最大量,最多数 |
并发测试 | 同时 |
稳定性测试、可靠性测试 | 长时间 |
配置测试 | 调整配置 |
作者:暄总-tester,