前言
分两个方面讲性能,主要就是一些概念性的东西
一、常见的6种性能测试
1.后端性能测试
后端性能测试是首先通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指标,并且验证各项指标是否符合预期性能要求的测试方法。
这里的性能指标除了包括并发用户数、响应时间和系统吞吐量外,含包括各类资源的使用率,如系统级别的cpu占有率、内存使用率、磁盘I/O和网络I/O等,应用级别以及的JVM级别的各种资源使用率
后端性能测试的场景设计主要包括以下两种方式:
- 基于性能需求目标的测试验证
- 探索系统的容量, 并验证系统容量的可扩展性测试
2.前端性能测试
前端性能测试关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容。通过前端性能测试方法,找到页面加载过程中比较耗时的操作,并进行优化,从而达到优化用户体验。
关于前端的性能优化规则
- 减少HTTP请求次数
- 减少DNS查询次数
- 避免页面跳转
- 使用内容分发网络
- 通过Gzip压缩传输文件
使用工具:
Performance Timing API 是一个支持Webkit内核浏览器中记录页面加载和解析过程的关键时间点的机制
3.代码级性能测试
代码级性能测试是指在单元测试阶段就对代码的时间性能与控件性能进行测试和评估,以防止底层代码的执行效率问题再项目后期才被发现(ps:个人觉得,是在开发代码评审时找到并提出。如果你提出会显得你很专业。。。。。)
这个举个栗子:比如sql多表查询优化
4.压力测试
一般采用后端性能测试的方法,不断对系统施加压力,验证系统处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处于临界状态时影响性能的主要瓶颈。分为两个方面:
- 在临界饱和状态的基础上继续施加压力,直到系统完全瘫痪,观察这段时间内系统的运行状态
- 逐渐减少压力,观察瘫痪的系统是否可以自动恢复
5.并发测试
是指在同一时间调用后端服务,在一段时间内观察被调用服务在并发情况下的行为表现,旨在发现诸如资源竞争,资源死锁之类的问题。
PS:介绍下集合点并发,它源自loadrunner,目前被广泛应用。
假设我们希望后端调用的并发数是100,因为这100个并发用户会执行各自的操作,无法控制某一个确定的时间点上后端服务的并发数量。为了达到这个目的,我们需要先到达的等。。。 直到100个并发用户到达后才开始。另外,比如要求的并发数是100,那么集合点并发可以设置为120
6.可靠性测试
可靠性能测试是验证系统在常规负载模式下长期运行稳定性的方法。本质 是通过长时间模拟真实的系统负载来发现系统潜在的内存泄漏、连接池回收等问题。
因为真实环境下的实际负载会有高峰和低谷的交替变化,所以会每12h模拟高峰,在两个高峰中间模拟低峰,依次循环3-7天
二、性能测试的四大应用领域
能力验证
是性能测试中最常见的应用领域,主要验证“某系统能否在A条件下具有B能力”,通常要求在明确的软硬件环境下,根据明确的系统性能需求设计测试方案和用例
能力规划
能力规划关注的是如何才能使系统达到要求的性能和容量。主要包括以下几个方面:
- 验证能否支持未来一段时间内的用户增长
- 验证应该如何调整系统配置,是系统能够满足不断增长的用户数量
- 验证应用集群的可扩展性,以及寻找集群扩展的瓶颈点
- 验证数据库集群的扩展性
- 验证缓存集群的可扩展性
性能调优
通常会设计多个层面的调整,包括硬件设备选型、操作系统配置、应用系统配置、数据库配置和应用代码实现的优化
缺陷发现
可以通过性能测试的各种方法来发现诸如内存泄漏,资源竞争,不合理的线程锁和死锁的问题。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取