优测云服务平台分享性能测试的理论基础

优测云服务平台分享性能测试的理论基础

1.1 性能测试基本理论

在介绍性能压测概念与背景之前,首先需要知道为什么要做性能压测。从09年的淘宝双十一大促导致多家合作银行后台系统接连宕机,到春运期间12306购票难,再到聚美优品促销活动刚开始就遭秒杀。根据Amazon统计,每慢100毫秒,交易额下降1%。这些事件和统计数据为大家敲响了警钟,也客观说明了性能压测对于企业应用的重要性。从具体的作用上讲,性能压测可以用于新系统上线支持、技术升级验证、业务峰值稳定性保障、站点容量规划以及性能瓶颈探测。性能压测伴随着系统开发、重构、上线到优化的生命周期,因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。

1.2 性能测试基本概念

软件性能:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。

性能测试:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

性能关注的是软件的非功能特性,一般来说性能测试介入的时机是在功能测试完成之后。

1.3 不同视角下的软件性能

对不同类型的系统,软件性能的关注点各不相同。比如web类应用和手机端应用,一般以终端用户感受到的端到端的相应时间来描述系统的性能。而对于非交互式的应用,比如银行后台处理系统或第三方支付系统,响应时间关注更多的是事件处理的速度,以及单位时间的事件吞吐量。此外,对于同一个系统,不同对象群体对软件性能的关注点也不同。

(1) 终端用户:响应时间是终端用户对系统性能最直观的印象。主要包括反应系统能力的系统响应时间和用户端处理能力的前端展示时间。其中系统响应时间包括应用系统处理时间、数据库处理时间、网络传输时间。

(2)运维人员:除了关注单用户时系统响应时间外,更会关注多用户并发时的负载、系统健康状态、并发处理能力、系统容量、系统瓶颈、长时间运行的稳定性和可扩展性、系统配置调优以及数据库调优。

(3)软件开发人员:开发严重的软件性能包括算法设计、架构设计、数据库等方面。其中算法设计方面,包括核心算法的高效性、是否采用buffer机制、是否存在内存泄漏和线程安全等。架构设计方面,是否可方便地进行系统容量和性能扩展。数据库方面,应考虑数据库表设计是否高效、是否引入必要的索引、数据库是否需要引入读写分离机制、系统冷启动后, 缓存大量不命中的时候, 数据库承载的压力是否超负荷。软件性能的可测试性方面,关注是否支持全链路性能分析、是否支持高并发场景的性能打点等等。

(4)性能测试人员:性能测试工程师关注的是算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性这五大方面。优秀的性能测试工程师应具备以下技能:性能需求的总结和抽象能力;根据性能测试目标,精准的性能测试场景设计和计算能力;性能测试脚本的开发和执行能力;测试性能报告的分析解读能力;性能瓶颈的快速排查和定位能力;性能测试数据的设计和实现能力;互联网产品方面,测试工程师应具备全链路压测的设计与执行能力;深入理解性能测试工具的内部实现原理,当性能测试工具有限制时,可进行扩展二次开发;具备极广的知识面,包括 编程语言、计算机原理和操作系统、网络基础、数据库、中间件(apache,tomcat)、常用抓包工具以及性能测试工具。此外还需大量点的深入积累,比如数据库SQL的调优、多线程常见问题等。

猜你喜欢

转载自blog.csdn.net/weixin_46033259/article/details/110945710