性能测试可分为七大类
如下:
第一、后端测试
后端性能测试,也就是服务器端性能测试。
后端性能测试,是通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指标,并且验证各项指标是否符合预期的性能需求的测试手段。
这里的性能指标,除了包括并发用户数、响应时间和系统吞吐量外、还应该包括各类资源的使用率,比如系统级别的 CPU 占用率、内存使用率、磁盘 I/O 和网络 I/O 等,再比如应用级别以及 JVM 级别的各类资源使用率指标等。
划重点:根据应用领域的不同,后端性能测试的场景设计主要包括以下两种方式:
1.1、基于性能需求目标的测试验证;
1.2、探索系统的容量,并验证系统容量的可扩展性。
第二类:前端性能测试(前端性能测试并没有一个严格的定义和标准)
通常来说、前端性能测试关注的是:浏览器页面的渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容。通过以上技术找到页面加载过程的耗时的操作及资源,然后针对性的进行优化,最终达到优化终端的,提高用户端体验目的。
前端优化规则:Yahoo链接规则雅虎前端规则
常用典型规则:2.1、减少http请求次数;2.2、减少DNS的查询次数。2.3、避免页面跳转。2.4使用内容分发网络(CDN)。2.5、gzip压缩传输文件。
第三、代码级性能测试
代码级性能测试,是指在单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评估,以防止底层代码的效率问题在项目后期才被发现的尴尬(一般开发人员自测)
第四、压力测试
压力测试、通常指的是后端压力测试。
一般采用后端性能测试的方法,不断对系统施加压力,并验证系统化处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处于临界状态时的主要瓶颈点。所以,压力测试往往被用于系统容量规划的测试。
还有些情况,在执行压力测试时,我们还会故意在临界饱和状态的基础上继续施加压力,直至系统完全瘫痪,观察这个期间系统的行为;然后,逐渐减小压力,观察瘫痪的系统是否可以自愈。
第五、配置测试
配置测试,主要用于观察系统在不同配置下的性能表现,通常使用后端性能侧的方法。
5.1、通过性能基准测试(Performance Benchmark)建立性能基线(Performance Baseline);
5.2、在此基础上,调整配置;
5.3、基于同样的性能基准测试,观察不同配置条件下系统性能的差异,根本目的是要找到特定压力模式下的最佳配置。
宿主操作系统的配置;
应用服务器的配置;
数据库的配置;
JVM 的配置; 网络环境的配置等。
第六、并发测试
并发测试、指在同一时间,同时调用后端服务,期间观察被调用服务在并发情况下的行为表现,在发现比如:资源竞争、资源死锁等问题。
第七、可靠性测试
可靠性测试,是验证系统在常规负载模式下长期运行的稳定性。
虽然可靠性测试在不同公司的叫法不同,但其本质就是通过长时间模拟真实的系统负载来发现系统潜在的内存泄漏、链接池回收等问题。
《概述留记》
概述:性能测试中,对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析,可以定位到性能瓶颈。
后端性能指标有CPU,内存,网络,I/O等等。
分析思路:整体系统CPU利用率、内存利用率、磁盘I/O的利用率和延迟、网络利用率。
CPU定位分析:CPU利用率大于50%,需要注意;大于70%,需要密切关注;高于90%,情况比较严重。
监控命令:vmstat、sar、dstat、mpstat、top、ps
内存定位分析:当物理内存不够时,会使用swap分区,所以性能测试过程中需要关注swap和mem的使用情况。
物理内存不够,大量的内存置换到swap空间,可能导致CPU和I/O的瓶颈。
监控命令:vmstat、sar、dstat、free、top、ps等。
网络定位分析:监控命令:sar、ifconfig、netstat,以及查看net的dev速率。
通过查看发现收发包的吞吐率达到网卡的最大上限,网络数据报文有因为这类原因而引起的丢包、阻塞等现象都证明当前网络可能存在瓶颈。
为了减小网络对性能测试的影响,一般我们都在局域网中进行测试执行。
IO定位分析:I/O读写频繁的时候,如果I/O得不到满足会导致应用的阻塞。
需要考虑I/O的TPS、平均I/O数据、平均队列长度、平均服务时间、平均等待时间、IO利用率(磁盘Busy Time%)等指标
监控命令:sar、iostat、iotop。