第一,后端性能测试
后端性能测试,是通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指
标,并且验证各项指标是否符合预期的性能需求的测试手段。
这里的性能指标,除了包括并发用户数、响应时间和系统吞吐量外,还应该包括各类资源的
使用率,比如系统级别的 CPU 占用率、内存使用率、磁盘 I/O 和网络 I/O 等,再比如应用
级别以及 JVM 级别的各类资源使用率指标等
第二,前端性能测试
第二,前端性能测试
通常来讲,前端性能关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓
存使用情况、资源压缩等内容,希望借此找到页面加载过程中比较耗时的操作和资源,然后
进行有针对性的优化,最终达到优化终端用户在浏览器端使用体验的目的。
第三,代码级性能测试
代码级性能测试,是指在单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评
估,以防止底层代码的效率问题在项目后期才被发现的尴尬。
如果你从事过性能测试相关的工作,一定遇到过这样的场景:系统级别的性能测试发现一个
操作的响应时间很长,然后你要花费很多时间去逐级排查,最后却发现罪魁祸首是代码中某
个实现低效的底层算法。这种自上而下的逐级排查定位的方法,效率通常都很低,代价也很
高。
所以,我们就需要在项目早期,对一些关键算法进行代码级别的性能测试,以防止此类在代
码层面就可以被发现的性能问题,遗留到最后的系统性能测试阶段才被发现。
但是,从实际执行的层面来讲,代码级性能测试并不存在严格意义上的测试工具,通常的做
法是:改造现有的单元测试框架。
第四,压力测试
压力测试,通常指的是后端压力测试
,一般采用后端性能测试的方法,不断对系统施加压
力,并验证系统化处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处
于临界状态时的主要瓶颈点。所以,压力测试往往被用于系统容量规划的测试。
还有些情况,在执行压力测试时,我们还会故意在临界饱和状态的基础上继续施加压力,直
至系统完全瘫痪,观察这个期间系统的行为;然后,逐渐减小压力,观察瘫痪的系统是否可
以自愈
参考:极客时间中《软件测试52讲》
第五,配置测试
配置测试,主要用于观察系统在不同配置下的性能表现,通常使用后端性能测试的方法:
1. 通过性能基准测试(Performance Benchmark)建立性能基线(Performance
Baseline);
2. 在此基础上,调整配置;
3. 基于同样的性能基准测试,观察不同配置条件下系统性能的差异,根本目的是要找到特
定压力模式下的最佳配置。
这里需要注意的是,“配置”是一个广义配置的概念,包含了以下多个层面的配置:
宿主操作系统的配置;
应用服务器的配置;
数据库的配置;
JVM 的配置;
网络环境的配置;
并发测试,指的是在同一时间,同时调用后端服务,期间观察被调用服务在并发情况下的行
为表现,旨在发现诸如资源竞争、资源死锁之类的问题。
谈到并发测试,我就不得不和你说说“集合点并发”的概念了,它源于 HP 的
LoadRunner,目前已经被广泛使用了。那,到底什么是“集合点并发”呢?
假设我们希望后端调用的并发数是 100,如果直接设定 100 个并发用户是无法达到这个目
标的,因为这 100 个并发用户会各自执行各自的操作,你无法控制某一个确定的时间点上
后端服务的并发数量。
为了达到准确控制后端服务并发数的目的,我们需要让某些并发用户到达该集合点时,先处
于等待状态,直到参与该集合的全部并发用户都到达时,再一起向后端服务发起请求。简单
地说,就是先到的并发用户要等着,等所有并发用户都到了以后,再集中向后端服务发起请
求。
比如,当要求的集合点并发数是 100 时,那么前 99 个到达的用户都会等在那里,直到第
100 个用户到了,才集中向后端服务发起请求。当然,实际达到服务器的并发请求数,还
会因为网络延迟等原因小于 100。
所以,
在实际项目中,我建议在要求的并发数上进行适当放大,比如要求的并发数是
100,那我们集合点并发数可以设置为 120。
第七,可靠性测试
可靠性测试,是验证系统在常规负载模式下长期运行的稳定性。
虽然可靠性测试在不同公司的叫法不同,但其本质就是通过长时间模拟真实的系统负载来发
现系统潜在的内存泄漏、链接池回收等问题
。
由于真实环境下的实际负载,会有高峰和低谷的交替变化(比如,对于企业级应用,白天通
常是高峰时段,而晚上则是低峰时段),所以为了尽可能地模拟出真实的负载情况,我们会
每 12 小时模拟一个高峰负载,两个高峰负载中间会模拟一个低峰负载,依次循环 3-7 天,
形成一个类似于“波浪形”的系统测试负载曲线。
然后,用这个“波浪形”的测试负载模拟真实的系统负载,完成可靠性测试。同样地,可靠
性测试也会持续 3-7 天。
聊完了常用性能测试方法的种类后,我们再来简单看一下性能测试的四大应用领域,以及每
个应用领域都会使用哪些性能测试方法。