性能测试基础

1. 常见的性能测试方法

1. 后端性能测试

    后端性能测试,是通过性能测试工具模拟大量的并发用户的请求,然后获取系统性能的各项指标,并且验证各项指标是否符合预期的性能需求的测试手段

    后端性能测试指标:

        并发用户数
        响应时间
        吞吐量
        CPU占用率
        内存使用率
        磁盘I/O
        网络I/O
        JVM 级别的各类资源使用率指标

    后端性能测试场景设计:

        基于性能需求目标的验证
        探索系统的容量,并验证系统用量的可扩展性

2. 前段性性能测试

前端性能测试,主要关注的的是浏览器的页面渲染时间、资源价值顺序、请求数量、前端缓存使用的情况、资源压缩等内容,希望借此摘到页面加载过程中比较耗时的操作和资源,然后进行有针对性的优化,最终大道优化终端用户使用体验的目的

前端性能规则:

    减少http的请求次数

http请求数量越多,执行过程耗时就越长,所以可以采用和农多个图片到一个图片文件的方法来减少http请求的次数,也可以采用将多个脚本文件合并成单一文件的方式减少http 请求的次数

    减少DNS的查询次数

DNS的作用是将URL转化为实际服务器主机IP地址,实现原理是分级查找,查找过程需要花费20~100ms的时间,所以一方面我们要加快单次查找的时间,另一方面也要减少一个页面中 资源使用了多个不同的域的情况

    避免页面跳转

页面跳转相当于有打开一个新的页面耗时就会比较长,所以要尽量避免使用页面跳转

    使用内容分发网络

使用CDN相当于对静态内容做了缓存,并把缓存内用放在网络供应商(ISP)的机房,用户根据就近原则道ISP机房获取这些被缓存了的静态资源,因此可以大幅提高性能

    Gzip压缩传输文件

压缩乐意帮助减小传输文件的大小,进而可以从网络传输时间的层面来减少响应时间

3. 压力测试

压力测试,通常是指后端的压力测试

一般采用后端性能测试的方法,不断对系统施加压力,并验证系统化处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处于临界状态时的主要瓶颈点。所以,压力测试往往被用于系统容量规划的测试

还有些情况,在执行压力测试时,我们还会故意在临界饱和状态的基础上继续施加压力,直至系统完全瘫痪,观察这个期间系统的行为;然后,逐渐减小压力,观察瘫痪的系统是否可以自愈

4. 配置测试

配置测试,主要用于观察系统在不同的配置下的性能编写,通常使用后端性能测试方法

    1.通过性能基准测试(PerformanceBenchmark)建立性能基线(Performance Baseline)

    2.在此基础上,调整配置;

    3.基于同样的性能基准测试,观察不同配置条件下系统性能的差异,根本目的是要找到特定压力模式下的最佳配置。

这里需要注意的是,“配置”是一个广义配置的概念,包含了以下多个层面的配置:

宿主操作系统的配置;
应用服务器的配置;
数据库的配置;
JVM 的配置;
网络环境的配置;

5. 并发测试

并发测试,指的是在同一时间,同时调用后端服务,期间观察被调用服务在并发情况下的行为表现,旨在发现诸如资源竞争、资源死锁之类的问题。

为了达到准确控制后端服务并发数的目的,我们需要让某些并发用户到达该集合点时,先处于等待状态,直到参与该集合的全部并发用户都到达时,再一起向后端服务发起请求。 简单地说,就是先到的并发用户要等着,等所有并发用户都到了以后,再集中向后端服务发起请求。比如,当要求的集合点并发数是 100 时,那么前 99 个到达的用户都会等 在那里,直到第 100 个用户到了,才集中向后端服务发起请求。当然,实际达到服务器的并发请求数,还会因为网络延迟等原因小于 100。所以,在实际项目中,我建议在要求的并发数上进行适当放大,比如要求的并发数是 100,那我们集合点并发数可以设置为 120

6. 可靠性测试

可靠性测试,是验证系统在常规负载模式下长期运行的稳定性

虽然可靠性测试在不同公司的叫法不同,但其本质就是通过长时间模拟真实的系统负载来发现系统潜在的内存泄漏、链接池回收等问题

由于真实环境下的实际负载,会有高峰和低谷的交替变化(比如,对于企业级应用,白天通常是高峰时段,而晚上则是低峰时段),所以为了尽可能地模拟出真实的负载 情况,我们会每 12 小时模拟一个高峰负载,两个高峰负载中间会模拟一个低峰负载,依次循环 3-7 天,形成一个类似于“波浪形”的系统测试负载曲线。然后,用这个 “波浪形”的测试负载 模拟真实的系统负载,完成可靠性测试。同样地,可靠性测试也会持 3-7 天

2. 性能测试三大指标

1. 三大指标

    并发用户数

        指单位时间内发起请求的数量

    响应时间

        从请求开始到到服务器给出响应的时间

    系统吞吐量

        tps 单位时间内完成的事物数

2. 三大区间

    空闲区间

        当系统并发数量较少,系统的吞吐量也低,系统处于空闲状态,这个状态我们称之为"空闲区间"

    线性增长区间

        当系统的负载不是很大,随着系统的并发用户数量增加,系统的吞吐量也会随之增加,我们称之为这个阶段为"线性增长区间"

    拐点

        随着系统的的并发用户数进一步增加,系统得处理能力逐渐趋近雨饱和,因此每个用户的响应时间逐渐边长,响应的,系统的整体吞吐量并不会随着并发用户说的增长而继续增长。我们把这个阶段称为"拐点"

    过饱区间

        随着系统的并发用户数进一步增加,系统的处理能力导到饱和状态,此时,如果继续增加并发用户数,最终所有的用户响应时间会变的无线的长,相应的系统的吞吐量会降为零,我们往往把这个阶段称为"过饱和区间"

3. 性能测试类型发生的区间

    负载测试:一般放在"线性增长区间"

    压力测试:一般放在"拐点"甚至"过饱和区间"

Last updated

Was this helpful?