首页 > 其他分享 >当我们讨论性能测试时,我们在说什么?

当我们讨论性能测试时,我们在说什么?

时间:2023-03-15 15:44:47浏览次数:49  
标签:性能 可用性 系统 用户 能力 故障 测试 我们

转载:https://www.cnblogs.com/imyalost/p/10353954.html

说起性能测试,大家会想到哪些词?录制脚本、模拟高并发?性能需求分析、业务流程梳理?监控资源耗用、性能瓶颈定位?优化代码处理逻辑、提升服务器配置?

但这真的是性能测试的本质和最终目的么?这篇博客,聊聊我对软件性能的一些看法和思考。。。

 

首先明确一点:技术的存在是为了解决实际的业务发展中遇到的问题和痛点!

随着互联网时代不断深入生活工作的各方面,绝大多数的软件系统都会面临如下三个挑战:

1、日益增长的用户数量;

2、日渐复杂的业务场景;

3、急剧膨胀的数据冲击;

这对于软件系统而言,就意味着及时高效的处理能力、更好的服务可用性以及长期运行的稳定性等要求。

从以上几点要求出发,站在性能测试的角度,来谈谈我们需要注意哪些事项。。。

 

更及时高效的处理能力

在互联网最初的年代,有二五八原则一说。意思就是对用户而言,在页面做一个功能操作,如果能在2秒能出现用户期待的内容,那么用户体验就是比较好的。

如果5秒之内可以返回结果,那么对用户来说就是可以接受的范围,如果超过8秒,绝大多数用户就会选择离开或退出该页面。

虽然这只是一个笼统的概念,但也能看出用户对软件系统处理能力的容忍性。

近几年随着网络通讯技术的不断发展,以及硬件设施的不断提升,导致用户对软件处理能力越来越低的容忍力。

从性能优化角度出发,就需要我们尽力保持和降低系统的99%RT(即一段时间内请求响应时间从低到高排序,低于99%响应时间的上限边界值)的同时,提高单位时间内的处理能力

请求响应时间=请求发送耗时+请求解析耗时+请求处理耗时+处理结果返回耗时

提高处理能力和降低响应时间,有很多技术方案可以实现,比如:

提高网络传输速率、优化请求传输方式(串行→并行→连接复用→管道化)、增加缓存、优化代码处理方式、增加处理请求的机器数量、提升机器配置等方式。

 

更好的服务可用性

什么是可用性(Usability)?可用性实际上并不是一个具体的东西,也没有明确的定义。

个人觉得Jakob Nielsen大师提出的可用性五大属性,就很客观全面的介绍了可用性的特点,它们分别是:

可学习性(Learnability):初次接触这个设计时,用户完成基本任务的难易程度;

效率 (Efficiency):用户能多快完成任务;

可记忆性(Memorability):当用户一段时间没有使用产品后,是否能马上回到以前的熟练程度;

出错(Errors):用户能否从错误中恢复(从系统角度出发,可以理解为容错性);

满意度(Satisfaction):用户对产品的主观满意度。

如果真要给出一个定义,那么我们可以这样理解:可用性是指在特定的使用场景下,产品为特定用户用于特定目的时所具有的有效性、效率和主观满意度

从可用性五大属性出发,站在性能优化角度,就要求我们做如下的一些事情,来不断提升软件服务可用性:

可学习性:尽可能减少用户操作的步骤,优化业务逻辑;

效率:提升响应时间和系统的处理能力(回到上面提到的及时高效的处理能力);

可记忆性:人性化的提示,导航能力,是否符合特定用户的操作习惯;

出错:提升系统的容错能力和恢复能力;

满意度:提高用户体验,做好用户需求调研和场景建模分析;

如果只讨论技术保障方案,我们需要做好服务治理、服务解耦,通过主从模式、系统集群负载均衡、双机双工、分布式等方式,来保证系统在高可用的同时,降低故障恢复时间。

 

长期运行的稳定性

一般来说,系统的稳定性指标要求7*24小时或者5*8小时,系统的存活时间越长,意味着系统越稳定,这个要根据系统具体的业务定位来确定。

现在而言,系统的稳定性要求已经不仅仅是存活时间,还要求运行过程中的保持服务的高可用、及时处理能力、容错能力以及出现故障的及时恢复能力

那么如何保证系统的稳定性呢?

容错能力:即系统对于自身出现的错误具有一定的屏蔽或处理能力。常见的容错手段包括如下几点:

①、失败重试机制;

②、多机备份自动切换;

③、设置合理的TimeOut;

④、服务解耦,微服务模式;

⑤、权重选举,服务降级;

更多阅读:亿级web系统的高容错性实践

故障恢复能力:即系统能否从出错或故障中及时恢复正常服务水平的能力。

一般来说会根据故障的严重等级和优先级,确定不同等级的故障需要在多久时间内恢复正常提供服务的能力。常见的故障有如下几种:

①、硬件及有关设备故障;

②、软件系统故障;

③、数据故障;

④、网络故障;

为了应对如上的几种故障,常见的一些容灾恢复方案有如下几种:

①、系统需要具有自我诊断、故障报告及指示处理方法的能力,以及具备冗余及自动切换能力;

②、监控到故障发生时,系统需要具备及时隔离、服务降级、服务快速切换的能力;

③、主从热备,多机冷备,异地多活等措施;

更多阅读:不容忽视的软件可恢复测试

 

总结

回到开头提到的内容:技术的存在是为了解决实际的业务发展中遇到的问题和痛点!

随着业务的不断发展,软件系统面临着日益增长的用户数量、日渐复杂的业务场景以及急剧膨胀的数据冲击这几种挑战。

这就要求我们的系统具有及时高效的处理能力、更好的服务可用性以及长期运行的稳定性等要求。

为了解决这几点挑战,使系统具有所要求的能力,我们需要通过性能测试来验证系统是否具有我们所期望的能力

我们通过完善性能测试流程,优化性能测试工具,采用不同性能测试方法,在各种环境和条件下进行测试,全方位监控,定位分析性能瓶颈,针对性的进行优化

最终的目的是希望系统具有及时高效的处理能力,更好的服务可用性和长期运行的稳定性,来满足系统面临的种种挑战,为业务的发展提供更好的服务保障!

标签:性能,可用性,系统,用户,能力,故障,测试,我们
From: https://www.cnblogs.com/ceshi2016/p/17218770.html

相关文章

  • 攻击树测试
    攻击树1给如何偷汽车创建攻击树。在这道题以及其他攻击树的练习题中,可以通过图来描述攻击树,也可以使用一个编号的列表来描述攻击树(比如,1,1.1,1.2,1.2.1,1.2.2,1.3,…)。信息......
  • Oracle 数据核对测试
    主键唯一性检测selectcount(distinctpk_id)-count(*)frompk_id_test;createtablestudent(snovarchar(10),snamevarchar(10),sagedate,ssexvar......
  • 《性能测试二三谈》系列
    转载:https://www.cnblogs.com/imyalost/p/10012867.html基础篇我第一次真正意义上接触性能测试,应该是从段念老师的《软件性能测试过程详解与案例剖析》这本书开始的。相......
  • 浅谈容量测试与容量规划
    转载:https://www.cnblogs.com/imyalost/p/9630846.html在性能测试中,需要根据具体的性能需求和系统架构等情况,采用不同的测试策略,其中最常见的策略就有容量测试。这篇博客......
  • 再谈性能测试之需求调研
    转载:https://www.cnblogs.com/imyalost/p/9941938.html之前的博客聊聊性能测试开始前的准备工作,聊了一些关于性能测试开始前要做的准备工作。这篇博客,来谈谈性能测试开始......
  • pytest测试框架
    1、pytest安装与依赖依赖pytestrequires:Python3.7+orPyPy3.安装#安装pytest:pipinstallpytest#升级pytest pipinstall-Upytest#查看pytest版本pytest--......
  • 认识一下,我们是应用社交「幕后大佬」 IM 家族
    今天,就让我们跟随小M一起来认识一下:*艾瑞咨询近期发布的《2023年全球互联网通信云行业研究报告》(本公众号后台回复【报告】获取完整版)显示,2021年全球互联网通信云市场......
  • 从OTA测试变革浅析OTA测试系统升级方向
    小标题1:OTA测试的变革  自去年以来,OTA逐渐开始从少数“高端玩家”的卖点,成为汽车行业普遍应用的功能,各传统或新兴OEM都逐步开始在OTA上做布局,而随之而来的就是整个OTA......
  • 性能测试之思
    转载:https://www.cnblogs.com/imyalost/p/9912382.html1、如何理解性能指标?在性能测试中,涉及的性能指标有很多,强行记忆理解可能是一件很吃力的事情。对性能指标进行分层......
  • Vulnhub之Rudra靶机详细测试过程
    Rudra作者:jasonhuawen靶机信息名称:HA:Rudra地址:https://www.vulnhub.com/entry/ha-rudra,386/识别目标主机IP地址(root......