当前位置: 首页 > news >正文

浅谈性能测试

负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
  很久没有做接手项目性能方面的测试,感觉陌生了许多,由于这次一个简单的web页面的压力测试,突然觉得知识的积累不够深刻,不能学着学着就丢了,如何积累成为自己的才是最重要的,凡是最后忘记的了那只能说明还是认识和学习不深刻。性能测试一直都是测试行业的一个难点,更是重点,可能我们都想做好它,但是不见得都有信心做好它,性能测试是一个带着诸多非常不确定因素进行的,因为没有标准答案,只能靠综合技术能力来分析,当然经验是最重要的,所以就需要不断去探索、积累,甚至于周围的同事进行讨论,吸取多方的经验。
  关于性能,我想大多数人对这个三个概念都很模糊,感觉都差不多。网上相关的说明确实很多,不过看完之后很容易忘记,而且真正做项目测试的时候还是分不清楚,这就是所谓不确定性。所以我想通过动手记录的方式来加深印象,至少还是需要深入理解才行。性能测试、压力测试和负载测试是我们最常接触的测试,关于这三种测试先来看看一个有趣的故事,可以帮助我们直观地去理解,故事描述得很形象,具体如下:
  有一个农夫决定买一匹骡子,他认为这个骡子至少 得能扛动3袋大米,他才会决定买这匹骡子(这相当于用户提出的性能需求)。结果他来到农贸集市上,试了好几头骡子,都不合适,最后终于有一头骡子能够比较轻松的扛动这3袋大米,而且还潇洒的走了几步(这相当于于性能测试通过)。 然后农夫高高兴兴地牵着这头骡子回家,而且给它扛了4袋大米(相当于让系统超负荷运行),因为他跑了太远才买到了这匹不可多得的骡子,他想看看它到底能有多强,所以农夫决定, 让这匹骡子就扛着这四袋大米走回家试试看,这匹骡子真的很厉害,刚开始的时候还一颠一跑的,可是后来实在路太远了,骡子越驮越费劲(在超负荷情况下检验系 统能正常运行多久,这相当于压力测试),快到家的时候,已经是走两步歇一步了。终于到家了, 农夫非常自豪地叫出自己的老婆,说:”老婆子,快来看看,看我买到了一头多么厉害的骡子啊!”,老婆来后,农夫把他和骡子在一路上的经历都告诉了老太 婆,谁知这个老太婆却说:”你真蠢,这么大老远的路,也不让骡子驮着你,竟然和这头傻骡子一样走回来!”,农夫听了,觉得非常后悔,说:”那好吧,既然在 路上它没有驮我,那就让它现在补上,也算是对我的补偿。”,骡子还没有反应过来,就看那老农夫一个箭步,跳到了骡子背上(这相当于容量测试的极限点),可怜的骡子,无论如何也不会想到,这狠心的农夫竟然在它走了这么久之后,不但没有帮 它卸掉身上的重担,更没有给它喝口水,竟然变本加厉的跳到了它那本已弯曲的背上。可怜的骡子啊,就这么一命呜乎了!就看见那个骡子、农夫和4袋麦子一起轰然倒地。(相当于已经到了系统的最大拐点,造成了系统瘫痪,无法使用,容量测试结束)。
  性能测试(Performance Test)
  通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能,度量系统与预定义目标的差距。
  关注点:how much和how fast
  负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
  关注点:how much
  压力测试(Stress Test):压力测试是一种高负载下的负载测试,也就是说被系统处于一个负载的情况,再继续对他进行加压,形成双重负载,知道系统崩溃,并关注崩溃后系统的恢复能力,以前再加压的一个过程,看看系统到底是否已经被彻底破坏掉了。
  有个很形象的说法就是:你能够承担100千克的重量,而且也能走,但是你能否承担100千克的重量行走1个月。
  我觉得有一句话描述的很好:外部的负载叫压力,内部的压力叫负载。负载注重关注内部的以及系统自身一些情况;而压力更关注系统外部的表象。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章:

  • 第二节(下)数组
  • 乌克兰电网被黑事件功臣:不让类似事件再次上演
  • 2015年度中国智能路由器市场监测报告
  • [导入]构建WCF面向服务的应用程序系列课程(2):WCF契约设计.zip(14.27 MB)
  • [导入]视频游戏开发系列课程(3):游戏元素大观园.zip(10.69 MB)
  • [翻译]TempDB剩余空间监视与纠错
  • 面对流言,HDS要说:寒冬将至?未必如此!
  • 警惕匿名方法造成的变量共享
  • 原料是否能制约光伏产业的发展?
  • 温习static,sealed,abstract,virtual
  • 外媒:华为2013年就在为起诉三星做准备
  • Hibernate3.3配置日志文件详解
  • 浪潮董事长孙丕恕:网盘关闭是合理的,但会诞生新模式
  • 创建androidMenu菜单
  • 双向视频会议系统的需求分析
  • 【node学习】协程
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • idea + plantuml 画流程图
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS+CSS实现数字滚动
  • MaxCompute访问TableStore(OTS) 数据
  • mysql中InnoDB引擎中页的概念
  • React Transition Group -- Transition 组件
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SSH 免密登录
  • TCP拥塞控制
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 翻译:Hystrix - How To Use
  • 项目实战-Api的解决方案
  • 新手搭建网站的主要流程
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 智能合约开发环境搭建及Hello World合约
  • ​一些不规范的GTID使用场景
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #pragam once 和 #ifndef 预编译头
  • (4) PIVOT 和 UPIVOT 的使用
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (三) diretfbrc详解
  • (原)本想说脏话,奈何已放下
  • (转)重识new
  • .cfg\.dat\.mak(持续补充)
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET delegate 委托 、 Event 事件
  • .NET Micro Framework初体验(二)
  • .Net 垃圾回收机制原理(二)
  • .NET企业级应用架构设计系列之技术选型
  • [20171106]配置客户端连接注意.txt
  • [Android]Android开发入门之HelloWorld
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [cocos2d-x]关于CC_CALLBACK
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [Editor]Unity Editor类常用方法
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练