【测试】性能测试——概念

性能测试是一个非常大的概念,接口、页面、项目或者系统,网络硬件都可以进行性能测试。

什么是性能测试

性能测试与功能测试的区别?

从功能上来说,这俩量车都有玻璃、车轮、座椅、灯光等等,基本没有区别。

从性能上来分析,下面这里车的硬装质量,内置设施,百里加速要更好。

也就是说,功能是有没有,性能是好不好。

  • 性能概念:为了发现系统性能问题或获取系统性能相关指标而进行的测试。

⼀般在真实环境、特定负载条件下,通过⼯具模拟实际软件系统的运⾏及其操作,同时监控性能各项指标,最后对测试结果进⾏分析来确定系统的性能情况。

【注意】不能通过手工测试来验证系统性能的好坏。

常⻅的性能问题:

查询数据时间过⻓,⽹速很慢,服务器⽆响应,查询数据很⻓时间才显⽰列表

常见性能测试指标

如何评估系统性能的好坏?需要借助性能指标来统计和分析。

并发数

并发⽤⼾数。

从业务层⾯看,并发⽤⼾数指的是实际使⽤系统的⽤⼾总数。

从后端服务器层⾯看,指的是web服务器在⼀段时间内处理浏览器请求⽽建⽴的http连接数或⽣成的处理线程数。

通过并发数,可以实时的了解到当前系统的压力情况。 

吞吐量

单位时间(s)内处理的并发数,直接体现软件系统负载承受能力。能够成功处理的并发数越多,吞吐量越高,系统承受的并发越多,性能越好。

吞吐量的分类:

  • 按照请求数量

TPS 和 QPS

TPS(transaction):每秒处理事务数,用于衡量系统在一定时间内能够处理的事务数

计算公式:总的请求成功的事务数 / 总的运行时间

QPS(query):每秒查询率

若一个事务中只有一个接口且是查询接口,则QPS=TPS

  • 按照网络数据包 

KB / s

响应时间

应⽤系统从请求发出开始,到客⼾端接收到最后⼀个字节数据所消耗的时间。

对于web系统⽽⾔,系统响应时间包含前端展现时间和系统响应时间。

前端展现时间:⻚⾯渲染时间

系统响应时间:包含服务器、数据库、通讯⽹络等响应时间

并发⽤⼾、系统吞吐量、系统响应时间之间的关系

对于系统来说,若并发数少,系统基本没有压力。 

当并发⽤⼾较少,系统吞吐量低,系统响应时间较短,我们认为系统处于空闲区间。随着系统并发⽤⼾增加,系统吞吐量开始呈线性增⻓,系统性能进⼊了线性增⻓区间。

吞吐量在某个点上达到了饱和点,也称之为拐点。(也是系统性能的拐点,通过这个拐点能够发现系统性能的瓶颈)在这之后⽤⼾请求不再被⽴即处理,响应时间随之变⻓,吞吐量也逐渐降低,系统性能进⼊了过饱和区间。

系统性能的拐点通常是性能测试的主要⽬的。

资源利用率

通过查看系统占用的情况分析资源瓶颈。

服务器:CPU、内存、磁盘、网络等。

性能测试的分类 

基准测试

基准测试(Benchmark Testing)⼜称单⽤⼾测试,主要⽤于监测被测系统在较低压⼒下的运⾏状况并记录相关数据。当性能测试环境确定以后,通常选取业务模型中的重要业务做基准测试,对被测系统施加⼀定压⼒,从⽽获取被测系统在单⽤⼾运⾏情况下的各项性能指标,为多⽤⼾并发测试和混合场景测试等提供参考依据。

开发了一个新的系统,该系统有很多功能,博客系统:登陆功能、博客展示功能、博客详情功能、博客编辑功能... ...

并发测试

并发测试(Concurrency Testing)⽤于评估被测系统的某些特定操作同时发⽣时的性能表现,例如,被测系统被多个⽤⼾同时登录时的响应能⼒,或系统的某⼀功能被多个⽤⼾同时操作时的性能表现。通过并发测试,不仅可以获得被测系统在多⽤⼾并发操作时的性能指标,还可以发现被测系统在并发条件下可能发⽣的问题,如内存泄漏、线程锁、资源争⽤问题。例如,通过模拟多个⽤⼾同时访问某⼀条件数据,或模拟多个⽤⼾同时更新数据,可能会发现被测系统的数据库访问错误、写⼊错误等。⼏乎所有的性能测试都会涉及⼀些并发测试。但并发测试对并发时间要求⽐较苛刻,通常需借助专⻔的性能测试⼯具,采⽤多线程或多进程的⽅式来模拟多个虚拟⽤⼾的并发性操作。

负载测试

负载测试(Load Testing)是性能测试的⼀种测试类型,⽤于评估被测系统在预期的不同负载下的⾏为。负载测试关注系统处理不同负载的能⼒,这些负载可通过控制并发⽤⼾或者进程的数量来实现。进⾏负载测试时,通过对系统不断增加并发访问负载,监测系统性能的变化,直到系统的某项或多项性能指标达到安全临界值,最终确定在满⾜该安全临界值的性能指标下,系统所能承受的最⼤负载量。简⽽⾔之,负载测试是通过逐步加载的⽅式来确定系统的处理能⼒。负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员在其⾝体状况保持正常的情况下所能举起的最⼤重量。通过负载测试可以获取系统能够达到的峰值指标。

压力测试

压⼒测试(Stress Testing)⽤于评估被测系统在⾼于预期、⾼于指定容量负载需求或低于最少需求资源的条件下的⾏为。压⼒测试关注被测系统处理超出预期或特定峰值负载的能⼒,也可以⽤于评估系统在资源匮乏时的处理能⼒,⽐如在可⽤的计算能⼒、带宽和内存资源不⾜的条件下系统的表现。进⾏压⼒测试时通常采⽤逐步增加系统负载的⽅式,使系统某些资源达到饱和甚⾄失效,从⽽发现那些只有在⾼负载条件下才会出现的缺陷,如同步问题、内存泄漏等。通过对被测系统进⾏压⼒测试,也能找出被测系统的性能拐点,获得系统所能提供的最⼤服务级别(系统所能承受的最⼤压⼒),评估系统在峰值负载或超出最⼤负载情况下的处理能⼒。压⼒测试主要⽤于性能诊断、性能调优和容量规划等场景。

  • 压⼒测试和负载测试的区别?

压⼒测试与负载测试不同。负载测试是在保持性能指标要求的前提下测试系统能够承受的最⼤负载,⽽压⼒测试则是测试系统性能达到极限的状态。例如,软件系统要求的响应时间为2秒。进⾏负载测试时发现,当访问量达到1万时,系统响应时间不超过2秒,⽽当访问量超过1万时,系统响应时间则会超过2秒,那么,在满⾜系统响应时间指标的前提下,该系统能够承受的最⼤访问量是1万。进⾏压⼒测试时,则可继续增加系统的访问量,并观察系统的性能变化。例如,当系统访问量增加到2万时,发现系统响应时间延迟到5秒,⽽当访问量增加到3万时,系统则崩溃,⽆法做出响应。由此可以确定系统能达到的极限访问量是3万。

稳定性测试

在负载测试的基础上,执⾏较⻓时间的测试以检查系统的稳定性。通常较⻓时间指3*24⼩时以上。

猜你喜欢

转载自blog.csdn.net/dab112/article/details/142179188