从开发人员角度看待性能基准测试

 对一个开发人员来说,除了保质保量按时完成功能需求外,非功能也不可忽视。
  决定一个软件的成败往往是非功能性需求比如性能,若是用户体验不好那么必定是个失败的作品。
  那么一个开发人员如何去做关于自己模块又或者整体的基准性能测试呢?以下将从测试的切入点和具体测试的指标来说明。
  切入点:
  通常,基准性能测试有两个切入点,一方面可以通过从整体系统的角度做一个全栈式(即打通上下各层)的性能测试用于发现整体系统的性能瓶颈点,另一方面又可以具体到某个层或者模块进一步分析性能问题。
  测试目标:
  从定量工具的角度来说性能测试一般关注以下3点:
  1. 单位时间内系统处理请求、事务的次数:比如测试模块的接口性能,可以针对一个接口调用N次并求平均值。
  2. 响应时间(延迟):目的是求出最大响应时间和最小响应时间,并对响应性能做一个预估用百分法来表示。比如对一个接口或协议发起请求10次,若有一次响应时间大于10ms,其他都小于10ms,那么可以说针对该接口有90%的概率系统响应时间小于10ms,当然要求准确的话需要更多地测试。
  3. 吞吐量:这里的指标常有如IOPS,常见于测试存储系统的性能测试用于发现系统最大流量。
  从测试价值的角度来说性能测试还需要以下2点:
  1. 可伸缩性
  可伸缩性需要和单纯的性能测试区别开,当系统只有一个访问者无其他负载的情况下为单纯的性能测试,若有性能问题可从代码、设计上分析研究。而伸缩性指得是在整个系统负载变化的情况下(比如增加访问者并发量),要求系统保持一定的性能(响应时间、吞吐量)。测试过程中可以尝试对测试环境的硬件进行扩展(垂直、横向扩展都行),看性能是否能够在持续增压的条件下满足性能需求。在持续对系统增加并发访问量的情况下通过查看系统的持续响应时间基准测试结果发现系统的设计缺陷。从一定层度上来讲,系统的伸缩性在设计上就已决定。
  2. 并发性
  对于并发通常有各种理解,但是对于系统性能测试领域来说,更准确地评判服务器的并发性指得是高峰时期单位时间内的请求数。对我们来说更多应该关注的是工作的并发量,比如同时处理请求的线程数或连接数。并发测试更多地是以一种辅助的手段配合性能测试,比如通过并发的手段持续加压达到测试系统伸缩性的目的。

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

时间: 2024-09-26 11:04:32

从开发人员角度看待性能基准测试的相关文章

开发人员需知:HTML5性能分析面面观

以下这篇文章是由一位名为张黎明的IT技术人员所写,其发表于InfoQ的网页上.这次他在全文里面从9个不同的方面分析HTML5的性能,还是很值得相应的开发人员阅读的. 从性能角度来说,HTML5首先是缩减了HTML文档,使这件事情变得更简单.第一,从用户可读性上说,原先一大堆东西,像初学者第一次看到这些东 西是看不懂的,而HTML5的声明方式对用户来说显然更友好一些. 第二,文档编码的声明,用HTML5方式的话,就很简单.很多人问HTML5是什么?我们说可以先用HTML5的方式就是把DOCTYPE

从代码构建到性能分析,Java开发人员的首选工具

Java 由于其实用性.跨平台性.可移植性等众多优点一直备受开发者青睐,在各大编程语言排行榜中也一直居高不下,因此本文为 Java 开发者们总结了这八个工具,它们几乎涵盖了Java开发的全部范围,从代码构建到错误压缩.这些工具可以帮助您提高代码的质量,并成为更高效的Java开发人员. 集成开发环境 Eclipse Eclipse是著名的跨平台的自由集成开发环境(IDE).最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具. Eclipse

面向.NET开发人员的Ajax 技术平台策略(3)

ajax|策略|技术平台 基于Ajax 架构的Web应用框架 之前我提到过"似Ajax" 的架构,现在我要说的Ajax框架也就是指专门针对这种Ajax架构而提供的框架.目前,我还没有听说过特别好的这个领域的流行框架.但我知道我的身边,.NET领域,J2EE领域或PHP平台上都有这样的框架和应用,我认为,正是因为有很多这样应用,所以Ajax才会像某个模式一样,被撰有一个专门的名词.不过我感觉Ajax 渐渐变成了Ajax feature的代名词,变成了XMLHTTP的代名词,成了异步通讯,

Web开发人员编程模型:隔离级别

ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性.虽然这四个性质都很重要,但是隔离性最为灵活.大部分数据库都提供了一些可供选择的隔离级别,且现在许多库都增加了附加层来创建颗粒度更细的隔离.隔离级别应用范围如此之广主要是因为放宽隔离约束往往会使得可扩展性和性能提高几个数量级. 串行一致性是可用的最古老最高的隔离级别之一,它之所以倍受青睐是因为其提供的简单编程模型,即每次仅能有一个事务对给定的资源进行操作,这就避免了很多潜在的资源问

C#开发人员应该知道的13件事情

本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方.使用工具可以帮助你在发布之后,解决掉一些问题. 编码标准 遵照编码标准可以编写出更多可维护的代码,特别是在由多个开发人员或团队编写和维护的代码库中.例如FxCop,StyleCop和ReSharper等,就是常用的实施编码标准的工具. 开发人员:在压缩代码之前,请使用工具仔细检查是否违反了标准,并且对结果进行分析.使用工具发现的代码路径问题,不比你预期的少. 代码审查 代码

十个有关Docker让开发人员失去热情的神话

本文讲的是十个有关Docker让开发人员失去热情的神话[编者的话]近年来Docker及其生态系统日益完善,但是尽管如此,围绕着Docker本身还是有一些神话或者说是误解来阻碍开发人员使用Docker的热情的,本文列出了十个有关Docker的神话,并且探讨了各自的解决方案. 最近在一次谈话中发生了一件奇怪的事情. 我在讨论Docker的发展,但是会不停地听到一些不太对劲的信息."Docker本质上是更加企业级的" "Docker只能暂时性地工作在OS X中,几乎不能在Windo

技术人观点:开发人员在处理云应用时该注意什么?

我们与28位分别来自23家企业的高管人员进行了交流,希望了解这些负责立足于云环境进行应用程序开发与部署的技术领导者如何看待相关议题. 当被问及"开发人员需要在处理云应用时注意什么?"时,各位企业高管人员给出了以下意见与建议: 应用程序性能管理应该分为主动与被动两类,特别是在面对开发与生产等不同场景的情况下.我们需要在开发阶段获取更多测试信息.APM工具将帮助我们在应用直接触及生产环境前对其加以测试,并有效缩短产品进入生产环境并被交付至用户手中的周期. 了解应用程序的十二因素.如何对应用

think in java interview-高级开发人员面试宝典(九)

模拟面试 今天来谈一下出于面试官的角度,他是会如何去考虑给一个侯选人面试的. 下面先来看一份简历的摘要. 熟练掌握SPRING, STRUTS1, 2, HIBERNATE: J2EE方面5年工作经验: ORACLE使用经验48个月: 熟练掌握JAVA缓存机制: 了解工作流.ERP.EAI工作机制并有实际项目经验: 老实说,一般面试官看到上面的简历就会想让这个人来面试了,因为真的你SSH,ORACLE,ERP或者是EAI等工作过5年很利害了已经,于是面试官在F2F(Face To Face)面试

开发人员应该关注技术热点

[编者按]预测未来本来就是一件非常疯狂的事情,而且现在企业科技的发展速度永远超越我们的想象.infoworld主编Eric Knorr为我们预测了在2015年或是未来一段时间内9大技术将大行其道.他认为开源是企业获得竞争优势的首选,作为开发人员应该关注技术热点,并围绕核心技术构建一个类似Docker.Hadoop等的生态系统. 以下为译文: 1.公有云将获得成功 今年,IaaS和PaaS的融合使得在公有云平台上更容易构建.测试和部署应用程序.随着AWS现在提供多重PaaS选项,所有主流的公有云都