前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当我们讨论性能测试时,我们在说什么?

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

作者头像
老_张
发布2019-12-02 19:08:03
3190
发布2019-12-02 19:08:03
举报

说起性能测试,大家会想到哪些词?录制脚本、模拟高并发?性能需求分析、业务流程梳理?监控资源耗用、性能瓶颈定位?优化代码处理逻辑、提升服务器配置?但这真的是性能测试的本质和最终目的么?这篇文章,聊聊我对软件性能的一些看法和思考。。。

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

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

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

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

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

这对于软件系统而言,就意味着及时高效的处理能力、更好的服务可用性以及长期运行的稳定性等要求。从以上几点要求出发,站在性能测试的角度,来谈谈我们需要注意哪些事项。。。

更及时高效的处理能力

在互联网最初的年代,有二五八原则一说。意思就是对用户而言,在页面做一个功能操作,如果能在2秒能出现用户期待的内容,那么用户体验就是比较好的。如果5秒之内可以返回结果,那么对用户来说就是可以接受的范围,如果超过8秒,绝大多数用户就会选择离开或退出该页面。

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

近几年随着网络通讯技术的不断发展,以及硬件设施的不断提升,导致用户对软件处理能力越来越低的容忍力。从性能优化角度出发,就需要我们尽力保持和降低系统的99%RT(即一段时间内请求响应时间从低到高排序,低于99%响应时间的上限边界值)的同时,提高单位时间内的处理能力

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

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

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

更好的服务可用性

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

长期运行的稳定性

一般来说,系统的稳定性指标要求7*24小时或者5*8小时,系统的存活时间越长,意味着系统越稳定,这个要根据系统具体的业务定位来确定。现在而言,系统的稳定性要求已经不仅仅是存活时间,还要求运行过程中的保持服务的高可用、及时处理能力、容错能力以及出现故障的及时恢复能力。那么如何保证系统的稳定性呢?

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

①、失败重试机制;

②、多机备份自动切换;

③、设置合理的TimeOut;

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

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

更多阅读:

https://blog.csdn.net/tanga842428/article/details/79664605

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

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

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

②、软件系统故障;

③、数据故障;

④、网络故障;

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

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

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

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

总结

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

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老张的求知思考世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档