如何获取有效的性能需求

一个实际的例子
这是一个证券系统中某个业务的“实际需求”

  1. 系统总容量达到日委托6000万笔,成交9000万笔
  2. 系统处理速度每秒7300笔,峰值处理能力达到每秒10000笔
  3. 实际股东帐号数3000万

这个例子中已经包括几个明确的需求:

  1. 最佳并发用户数需求:每秒7300笔
  2. 最大并发用户数需求:峰值处理能力达到每秒10000笔
  3. 基础数据容量:实际股东帐号数3000万
  4. 业务数据容量:日委托6000万笔,成交9000万笔——可以根据这个推算出每周、每月、每年系统容量的增长模型

什么是“效的”性能需求?
要想获得效的性能需求,就要先了解什么样的需求是“有效的”。有效的性能需求应该符合以下三个条件。
1.明确的数字,而不是模糊的语句。
结合上面的例子来看,相信这个应该不难理解。但是的时候了数字未必就不模糊。例如常见的一种需求是“系统需要支持5000用户”,或者“最大在线用户数为8000”。这些数字的需求仍然不够明确,因为还需要考虑区分系统中不同业务模块的负载,以及区分在线用户和并发用户的区别。
2.凭据,合理,实际意义。
通常来说,性能需求要么由客户提出,要么由开发方提出。对于第一种情况,要保证需求是合理的,有现实意义的,不能由着客户使劲往高处说,要让客户明白性能是有成本的。对于第二种情况,性能需求不能简单的来源于项目组成员、PM或者测试工程师的估计或者猜测,要保证性能需求的提出是有根据的,所使用的数据和计算公式是有出处的——本文后面的部分会介绍获得可用的数据和计算公式的方法。
3.相关人员达成一致。
这一点非常关键。如果相关人不能对性能需求达成一致,可能测了也白测——特别是在客户没有提出明确的性能需求而由开发方提出时。这里要注意“相关人员”的识别,通常项目型的项目的需要与客户方的项目经理或负责人进行确认,产品型的项目需要与直属领导或者市场部进行确认。

如何获得效的性能需求

1.客户方提出
这是最理想的一种方式,通常电信、金融、保险、证券以及一些其他运营商级系统的客户——特别是国外的客户都会提出比较明确的性能需求。
2.根据历史数据来分析
根据客户以往的业务情况来分析客户的业务量以及每年、每月、每周、每天的峰值业务量。如果客户旧的系统,可以根据已系统的访问日志,数据库记录,业务报表来分析。要特别注意的是,不同行业、不同应用、不同的业务是各自的特点的。例如,购物网站在平时的负载主要集中在晚上,但是节假日时访问量和交易量会是平时的数倍;而地铁的售票系统面临的高峰除了周末,还周一到周五的一早一晚上下班时间。
3.参考历史项目的数据
如果该产品已其他客户使用,并且规模类似的,可以参考其他客户的需求。例如在线购物网站,或者超市管理系统,各行业的进销存系统。
4.参考其他同行类似项目的数据
如果本企业没做过类似的项目,那么可以参考其他同行企业的公布出来的数据——通常在企业公布的新闻或者成功解决方案中会提到,包括系统容量,系统所能承受的负载以及系统响应能力等。
5.参考其他类似行业应用的数据
如果无法找打其他同行的数据,也可以参考类似的应用的需求。例如做IPTV或者DVB计费系统的测试,可以参考电信计费系统的需求——虽然不能完全照搬数据,但是可以通过其他行业成熟的需求来了解需要测试的项目有哪些,应该考虑到的情况有哪些种。
6.参考新闻或其他资料中的数据
最后的一招,特别是对于一些当前比较引人关注的行业,涉及到所谓的“政绩”的行业,通常可以通过各种新闻媒体找到一些可供参考的数据,但是需要耐心的寻找。例如我们在IPTV和DVB系统的测试中,可以根据新闻中公布的各省、各市,以及国外各大运营商的用户发展情况和用户使用习惯来估算系统容量和系统各个模块的并发量

--------------------

在软件开发过程中,需求管理要远远简单于需求开发,CMMI中也体现了这一点,并且实际工作中也常常需要我们思考,如何根据客户的实际使用或粗线条的性能要求来开发满足客户需要的性能需求来。

就拿文中例子来说,客户告诉我们“系统总容量达到日委托6000万笔,成交9000万笔;系统处理速度每秒7300笔,峰值处理能力达到每秒10000笔”,那我们将客户的这个要求管理起来并实现了这一点,这叫需求管理;而如果我们根据以下2个假设:

采用2/8比例,即80%的业务在20%的峰值时间内完成,20%的业务在80%的非峰值时间内完成,那么我们可以得到峰值处理业务量1.5亿(6000w+9000w)的80%为1.2亿,非峰值处理业务量1.5亿的20%为3000万;
1天系统运行时间为20小时,另4小时为非营业的后台处理时间,那么峰值时间20小时的20%为4小时,非峰值时间20小时的80%为16小时。

我们可以计算到:
平均峰值处理速度1.2亿/4*3600秒接近9000个/秒;
平均非峰值处理速度3000万/16*3600秒约500个/秒;

考虑到特殊情况的发生,我们建议实际峰值处理速度要能达到理论计算的平均峰值处理速度的1.5到2倍,所以最终确定下来的建议峰值处理速度为9000个/ 秒*2=18000个/秒。拿这个结果向客户说明,告诉他们原来的需求很可能在发生特殊情况时无法有效处理,客户可能就会接受我们的说法并调整了他们的需求。
这叫需求开发,通过分析修正了客户的不合理需求,满足了他们最根本的需要“系统总容量达到日委托6000万笔,成交9000万笔”,而处理速度是他们根据自己的需要估算出来的,并不准确。

所谓需求开发,也就是根绝客户的核心需求,为客户设计完整的需求体系,甚至根据客户的业务发展需要,为客户设计核心需求和需求体系。
在我说的这个例子中只用了1个计算,而实际的需求开发中需要做调研、出可研报告、做需求方案、设计等一整套的工作。
----------------------------

(1)计算平均的并发用户数:C=nL/T
(2)并发用户数峰值:C’≈C+3根号C
公式(1)中,C是平均的并发用户数;n是loginsession的数量;L是login session的平均长度;T指考察的时间段长度。
公式(2)则给出了并发用户数峰值的计算方式中,其中,C’指并发用户数的峰值,C就是公式(1)中得到的平均的并发用户数。该公式的得出是假设用户的loginsession产生符合泊松分布而估算得到的。
实例:
假设一个OA系统,该系统有3000个用户,平均每天大约有400个用户要访问该系统,对一个典型用户来说,一天之内用户从登录到退出该系统的平均时间为4小时,在一天的时间内,用户只在8小时内使用该系统。
则根据公式(1)和公式(2),可以得到:
C=400*4/8=200
C’≈200+3*根号200=242
------------------------------------------   

时间: 2024-10-11 12:19:43

如何获取有效的性能需求的相关文章

《LoadRunner没有告诉你的》之六——获取有效的性能需求

本文是<LoadRunner没有告诉你的>系列的第六篇,我将继续保持“无废话”的原则,用尽可能简洁.明确的语句来表述我对性能测试的看法和经验.在这篇文章中,我们要讨论的是如何获取“有效的”性能需求. 一个实际的例子 为了便于大家的理解,我们先来看一个性能需求的例子,让大家有一个感性的认识,本文后面的讨论也会再次提到这个例子. 这是一个证券行业系统中某个业务的“实际需求”——实际上是我根据通过网络搜集到的数据杜撰出来的,不过看起来像是真实的 ^_^ l         系统总容量达到日委托600

看《做性能测试需要知道些什么》

看<做性能测试需要知道些什么>需理解最佳用户数和最大用户数开始性能测试前,需要知道:1.客户的要求 如系统同时满足**用户登录,平均每个用户登录时间不超过**秒2.目前系统的性能 求最大用户数和最佳用户数,系统分析并找到压力点3.系统瓶颈 分析可能对系统造成瓶颈的逻辑业务4.长时间压力下性能状况(强度测试)->内存溢出 测试环境1.硬件 服务器.CPU.内存2.软件 前端.中间件.服务器3.网络环境 寻找系统的压力点 做性能测试之后需要知道些什么->获取"有效的"

性能测试===当我们在谈性能测试的时候,我们在谈什么?

*本文转自虫师的博客:http://www.cnblogs.com/fnng/archive/2011/11/15/2250445.html 本文仅用于收藏学习,如有侵权.立删~ 最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新来上来就问关于LoadRunner的使用上的问题.对性能测试的理解也不是太清楚.公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点了LoadRunner的使用说明就开始对系统下刀了.对于一些大公司的专业性能测试人员来

(引用)性能测试没有告诉你的

<LoadRunner没有告诉你的> 1.        LoadRunner之—Block l  如何在一个脚本中实现不同事务不同次数的循环呢? l  案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办?录3个脚本?每个事务分别在脚本中复制N次? l  当然不用,LR早就想到了你的需求,下面让我们隆重推出Block. l  位置:Run-time Settings--General--Run Logic l  操作: l  将你所要考察的事务设置在不同的Acti

看《做性能测试需要做些什么》

我们说性能测试,那么性能测试主要是什么呢?软件性能包含两方面特性:时间特性和性能特性.时间特性:系统处理客户请求的响应时间=呈现时间+系统响应时间性能特性:测试过程中,资源消耗情况(CPU.内存.磁盘)响应时间=网络传输时间+应用服务器处理时间+数据库处理时间N1 N2 N3 N4 A1 A3 A2并发用户数:同一时刻 进行数据交互 所有用户数(备注: !=系统所有用户 & !=所有在线用户.所以,并发用户数如何计算?需参考.分析历史数据.试上线运行)吞吐量:单位时间 服务器处理的字节数 B/s

利用WebLog Experet分析日志获取性能需求

一.下载WebLog Expert日志分析工具 官网下载地址:http://www.weblogexpert.com/download.htm 二.安装 安装很简单,点击“下一步”默认安装即可 三.配置tomcat,自动生成访问日志(localhost_access_YYYY_MM_dd.log) Tomcat默认情况下是没有开启自动生成访问日志,也就是说在tomcat/logs目录下没有类似access.log的日志文件,开启tomcat访问日志需要修改tomcat/conf/server.x

性能测试--如何获取有效需求

如何获得有效的性能需求呢,有下面几种方法来获取: 1.客户方提出,这是最理想的一种方式.通常电信.金融.保险.证券以及一些其他运营商级系统的客户--特别是国外的客户都会提出比较明确的性能需求. 2.根据历史数据来分析,根据客户以往的业务情况来分析客户的业务量以及每年每月.每周.每天的峰值业务量.如果客户旧系统,可以根据已有系统的访问日志,数据库记录,业务报表来分析.要特别注意的是,不同行业.不同应用.不同的业务是各自的特点的.例如:购物网站在平时的负载主要集中在晚上,但是节假日的访问量和交易量会

【API】高德地图API JS实现获取坐标和回显点标记

1.搜索+选择+获取经纬度和详细地址 2.回显数据并点标记 3.实现 第一步:引入资源文件 <!--引入高德地图JSAPI --><script src="//webapi.amap.com/maps?v=1.3&key=在官网申请一个key"></script><!--引入UI组件库(1.0版本) --><script src="//webapi.amap.com/ui/1.0/main.js">

微信开发 网页授权获取用户基本信息

微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method