干货技术,第一时间送达! ![]() 开课通知:重磅消息 | 2021年最新全栈测试开发技能实战指南(第2期) 大家好,我是黎潘,来自重庆,狂师老师的全栈测开训练营中上一期的学员。 大多数测试人员在谈到性能测试时,往往会倍感压力。对于我来说更是如此,想做好性能测试 一、简述性能测试性能测试含义:系统在一个给定的环境和场景中的性能表现是否与预期目标一致,评判系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性能的完整的过程。 介入时机:通常是在功能测试完成之后,并且系统功能处于相对稳定状态。 1.1性能测试开展范围客户端:web端,PC端,移动端,小程序,每一个都是不同领域的性能测试,关注点都不尽相同。还包括一个服务端的性能测试,本篇也主要是以服务端的性能测试来展开的。 1.2软件性能关注点
使用过程中更加关注响应时间,稳定性。总得来说就是用户体验要好。
系统最大并发,最大业务处理量,能支持多少用户访问,能否长时间提供服务,服务器资源使用,数据库资源使用,系统是否可以实现扩展。总的来说,更加关注系统的稳定性,资源利用率,可扩展性,系统容量等。
架构设计,数据库设计,代码设计,是否存在不合理的内存使用和线程同步方式,以及资源竞争等,总的来说,更加关注系统架构,数据库设计,设计与代码实现等。
系统资源指标,业务性能指标,DB性能指标,系统稳定性,支持最大并发,性能拐点等,几乎包括了上述所有人员的关注点。 二、后端性能常见指标2.1业务性能指标并发用户数:并发用户数取决于业务并发用户数和用户行为模式,也就是说实际使用的用户并不是每种用户行为都会对服务端产生压力,通常是指同一批用户同时执行一个对后端服务产生压力的操作行为。 响应时间:响应时间是系统最重要的性能指标,直观的反映了系统的快慢。指的是用户端发出请求到得到响应的整个过程所经历的。 系统处理能力:系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力,通常有以下几个指标衡量。
吞吐量:系统在单位时间内处理请求的数量。 事务成功率:单位时间内系统可以成功完成多少个定义的事务。 超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。 2.2系统资源指标CPU使用率:指用户进程与系统进程消耗的CPU时间百分比。 内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%。 磁盘I/O:磁盘吞吐量简称为 Disk Throughput,是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。 网络带宽:发送和接收字节的速率,包括帧字符在内。 数据库性能指标:sql语句,连接数,读写速度,资源使用率等。 上述只是一些常见的指标,通常还包括一些其他中间件,以及整个链路所经过的服务器指标。 2.3并发用户数,响应时间,系统吞吐量三者之间的关系未达到系统瓶颈:随着并发用户数的增加,系统吞吐量会逐渐增加,此时响应时间会较快。 达到系统瓶颈:随着并发用户数的增加,系统吞吐量不再会增加,此时响应时间会开始变长。 超过系统瓶颈:随着并发用户数的增加,系统吞吐量出现下降,此时响应时间会逐渐拉长,甚至无响应。 三、常见性能测试方法后端性能测试:通过模拟一定的并发用户量,获取一系列需要的系统,业务性能指标,来验证是否满足我们预期性能需求或者探索系统的容量和潜在的问题。 代码级性能测试:在单元测试阶段,针对代码本身,例如通过多次执行单元测试用例,获取一些关键算法的性能指标,是否满足需求。 压力测试:系统在一定资源饱和的情况下,模拟一定用户量,不断对系统施压,验证系统处于压力情况下的性能表现,寻找系统的性能瓶颈点。 配置测试:观察系统在不同配置下性能的表现,了解不同环境配置对系统性能的影响程度。 并发测试:模拟多个用户同一时间访问一个系统,模块或数据记录等其他并发操作,关注系统可能存在的性能瓶颈,如内存泄漏,线程死锁或资源竞争等问题。 可靠性测试:给系统施加一定的压力,持续运行一段时间,观察系统能否稳定运行。 四、企业中常见性能测试类型性能基准测试:基于固定的硬件环境和部署架构(比如专用的服务器、固定的专用网络环境、固定大小的集群规模、相同的系统配置、相同的数据库背景数据等),通过执行固定的性能测试场景得到系统的性能测试报告,然后与上一版本发布时的指标进行对比,如果发现指标有“恶化”的趋势,就需要进一步排查。 稳定性测试:又称可靠性测试,主要是通过长时间(7*24 小时)模拟被测系统的测试负载,来观察系统在长期运行过程中是否有潜在的问题。通过对系统指标的监控,稳定性测试可以发现诸如内存泄漏、资源非法占用等问题。 并发测试:是在高并发情况下验证单一业务功能的正确性以及性能的测试手段。高并发测试一般使用思考时间为零的虚拟用户脚本来发起具有“集合点”的测试。 容量规划测试:是为了完成容量规划而设计执行的测试。容量规划的主要目的是,解决当系统负载将要达到极限处理能力时,我们应该如何通过垂直扩展(增加单机的硬件资源)和水平扩展(增加集群中的机器数量)增加系统整体的负载处理能力的问题。 五、常见的性能测试工具目前市面上比较常见的服务端性能测试少说也有几十种,这里我们简单的比较下常见的三种,即JMeter,locust,LoadRunner。 5.1 组件对比![]() 5.2 功能区别![]() 通过以上对比,大家结合自己公司的需求,选择合适的性能测试工具。 5.3 locust入门定义Locust是使用Python语言编写实现的开源性能测试工具,简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。中文意为:蝗虫,蝗虫过境,寸草不生。 主要特点
安装直接通过 安装成功后可以输入 简单脚本示例
locust脚本命令运行
locust的UI界面![]()
测试结果页面![]()
其他模块![]()
由于本篇是对性能测试理论知识的分享,想了解更多locust的高级使用方法,可以参考官方文档。 注意: 后端性能测试工具是实现后端性能测试的技术手段,不能简单地把使用后端性能测试工具等同于后端性能测试。一般是在测试脚本开发和测试执行阶段发挥作用。 六、性能测试流程对于我们初学性能测试时,往往会陷入一个误区,那就是单纯的去学习性能测试工具,认为学会了工具的使用,就掌握了性能测试。这其实是大错特错的,工具的学习只是其中的一个阶段,而且是比较基础的一个阶段,在整个性能测试流程中,性能测试执行策略,性能场景和分析才是重中之重,也是最难的部分。 性能测试的学习路径可以分为五个阶段:
6.1 性能测试的前提日常工作中,被问及何时进行性能测试时,往往很多人都是摸不着头脑,大多数情况下都是被动接受领导或者开发给的任务,才回去进行性能测试,很少人会主动出击,去思考在什么阶段进行性能测试,下面给出几点建议,当然大前提肯定是在功能测试之后,整个系统都是处于一种稳定的状态。
6.2 制定性能测试目标
6.3 性能测试场景设计1. 测试负载组成
2. 负载策略
3. 资源监控范围定义
4. 终止方式
5. 负载产生规划
6.4 制定性能测试方案性能测试方案是在正式进行性能测试之前的工作,主要包括:
七、总结今天谈到的性能测试知识,不过是九牛一毛。想要正真掌握性能测试还需要不断的亲身实践,扩大自己知识的广度和深度,对于初识性能测试且没有实际经验的我来说,这将是我以后学习,并加以实践的基石。 如果你觉得文章还不错,帮忙 点赞、转发、关注、留言 ,因为这将是我持续输出更多优质文章的最强动力! |
|