http://blog.sina.com.cn/zwjlxl[订阅][手机订阅]
个人资料
分类
    内容读取中…
评论
读取中...
音乐播放器
图片幻灯
电视机
访客
读取中...
好友
读取中...
博文
 在软件开发过程中,需求管理要远远简单于需求开发,CMMI中也体现了这一点,并且实际工作中也常常需要我们为客户来开发这部分的性能需求。
还希望你能考虑一下,如何根据客户的实际使用或粗线条的性能要求来开发满足客户需要的性能需求来。

就拿你文中例子来说,客户告诉我们“系统总容量达到日委托6000万笔,成交9000万笔;系统处理速度每秒7300笔,峰值处理能力达到每秒10000笔”,那我们将客户的这个要求管理起来并实现了这一点,这叫需求管理;而如果我们根据以下2个假设:
1。采用2/8比例,即80%的业务在20%的峰值时间内完成,20%的业务在80%的非峰值时间内完成,那么我们可以得到峰值处理业务量1.5亿的80%为1.2亿,非峰值处理业务量1.5亿的20%为3000万;
2。1天系统运行时间为20小时,另4小时为非营业的后台处理时间,那么峰值时间20小时的20%为4小时,非峰值时间20小时的80%为16小时。
我们可以计算到:
1。平均峰值处理速度1.2亿/4*3600秒接近9000个/秒;
2。平均非峰值处理速度3000万/16*3600秒约500个/秒;
考虑到特殊情况的发生,我们建议实际峰值处理速度要能达到理论计算的平均峰值处理速度的1.5
    “性能测试”是“了解系统在一个既定的环境和场景中的性能表现是否与期望的目标一致,并根据测试数据识别性能瓶颈,改善系统性能的过程”。
    “性能”本质上是“并发量与吞吐量(每秒事务数)、响应时间以及资源利用率之间的一种平衡”。
    换句话说,性能测试是要去认识一个事物的特性——去了解被测系统在某个环境和场景中的性能如何,然后再比较这个性能是否与预期的目标一致;而不是简单的“验证能否支持某个并发量”。也就是说你的 PM 给出的是一个目标——当然,这个目标还不够明确,而你要做得是测试,并得出数据和结论。
    另外,用户或 PM 提出的性能需求的真正目的是要了解“当8000用户/服务器的情况下系统的性能表现是怎样的”,就是说除了并发量还要考虑吞吐量、响应时间和资源利用率。但是对于性能测试工程师来说,也不能仅仅验证 8000 个用户,要验证在各种不同的负载下系统的表现如何——这就包括了 8000 以下的和 8000 以上的,当然,如果发现到了 1000 已经有大量的请求失败,或者响应时间已经到了不可忍受的情况就没有必要非做到 8000 了。
   注意明确性能需求。用户要求支持100个用户,但是这个100用户是什么概念呢?同时在线人数?同时执行某个操作的人数?平均负载?峰值负载?

   举个例子,假如说用户要求系统每秒最大可以处理100个登陆请求,那么你需要验证系统的响应能力是否可以达到这个要求。怎么验证呢?你可以使用上面这篇文章中的方法,使用不同的负载来观察系统的响应情况,例如分别使用 10/25/50/75/100 个并发用户来执行登陆操作,然后观察系统在不同负载下的响应时间和每秒事务数。

    在实际执行时,你会发现随着并发用户数量的逐渐增加,先是每秒事务数增加,而响应时间变化不大;
    但当到达某个点时,例如 50 并发用户时,每秒事务数不再随负载的增加而增加,而响应时间的值开始变大,硬件资源和软件资源使用已经饱和;
    当负载继续增大,例如到达 75 或 100 并发用户时,响应时间开始明显延长,并且每秒事务数开始下降,硬件资源和软件资源使用完全饱和。

    如果根据上面的描述,可能会发现登陆模块最大能支持的并发用户数只有75。当然,如
  在软件测试中,经常会遇到一个名词“粒度”,粒度的概念是什么呢?我的第一理解就是“程度”,通过51testing帖子(源地址:http://bbs.51testing.com/archiver/tid-32910.html)中的讨论,受益匪浅将个人认为不错的理解记录如下:
1、粒度由功能、要求来决定:
   在我看来测试粒度应该由功能来决定吧,或者说得由具体的测试要求来说吧,如果说测试的软件的控件、按钮等等的正确性的话,那么每一个操作都应该算一个用例。如果说要求是测试软件的工作流程、工作功能,那么应该把粒度设定得更大些,大到每一个用例是针对一个功能。
2、用例设计之前约定
   一方面应该要设计用例前有约定 ,另一方面可以把一些通用按键功能设计成公共用例。既详细又不会忘记测试。
3、从执行和管理角度分析“粒度”
1)从执行的角度来看,
   最小颗粒应该是对应一个不可拆分的功能点(可
异常(2008-01-05 10:26)
概念

什么是异常?

异常(exception)应该是异常事件(exceptional event)的缩写。
异常定义:异常是一个在程序执行期间发生的事件,它中断正在执行的程序的正常的指令流。
当在一个方法中发生错误的时候,这个方法创建一个对象,并且把它传递给运行时系统。这个对象被叫做异常对象,它包含了有关错误的信息,这些信息包括错误的类型和在程序发生错误时的状态。创建一个错误对象并把它传递给运行时系统被叫做抛出异常。
一个方法抛出异常后,运行时系统就会试着查找一些方法来处理它。这些处理异常的可能的方法的集合是被整理在一起的方法列表,这些方法能够被发生错误的方法调用。这个方法列表被叫做堆栈调用(call stack)

运 行时系统搜寻包含能够处理异常的代码块的方法所请求的堆栈。这个代码块叫做异常处理器,搜寻首先从发生的方法开始,然后依次按着调用方法的倒序检索调用堆 栈。当找到一个相应的处理器时,运行时系统就把异常传递给这个处理器。一个异常处理器要适当地考滤抛出的异常对象的类型和异常处理器所处理的异常的类型是 否匹配。异常被捕获以后,异常处理器关闭。如果运行时系统搜寻了这个方法
2008准备好了吗?(2008-01-02 16:54)
 2008年已经到来,你准备好如何度过这个关键的一年了吗?
 你的计划你的目标是什么?
 计划中......
 在这新的一年里,我祝愿我的家庭幸福,我的爱人和我的家人身体健康!!!
汝要牢记(2007-09-11 08:49)
汝不可因惰而随心所睡;汝不可移志而半途而废;

汝不可因苦而哭天抹泪;汝不可因闷而夜夜买醉;

汝不可因闲而叫嚣疲惫;汝不可因难而节节后退;

汝不可因书厚而借口不背;汝不可因没座而迟到早退;

汝不可为求闲而叫苦喊累;汝不可因一败而万念俱灰;

汝不可稍有进步便自我陶醉!

 

假定有一个Web应用:C:\myHome

myHome/WEB-INF/……
myHome/files/……
myHome/image/……
myHome/src/……
myHome/index.jsp

在命令行窗口下执行如下命令:

C:\>cd myHome

C:\myHome\>jar   cvf   myhome.war   */  .

解释:jar   cvf   [A=》war包名].war   [B=》资源文件及文件夹  [C=》将要生成war包的目标文件夹]

*/”(B=》)代表当前目录(C:\myHome)下的所有文件及文件夹。

.” (C=》)表明将要在当前目录中生成war包。

 

操作完成后,找到C:\myHome下新生成的myhome.war,将其拷入TOMCAT_HOME/webapps/下。然后启动Tomcat即可。

心态(2007-07-17 11:43)
   最近自己的心态不太好。
   也很复杂!!
   工作、干活、挤车......弄的自己身心疲惫,但是一点对做的工作是认真的。
   什么都想干好,结果似乎什么都没有干好!!!
   自尊心强的自己,有种失败的感觉!!!
   ......
   似乎对什么都没有兴趣,似乎什么也激发不起来我的激情和斗志!!难道真的是老了?麻木了?堕落了?疲惫了?
   ......
   小鸟,想要飞高,就不要怕风雨!!!
   这些低落一定是短暂的,baxia!!!我不信会一直这样!!
应用范围
  在使用Loadrunner进行性能测试时,经常遇到一种情况,需要通过web页面修改某事务的状态。于是需要首先读出当前的事务的状态,再进行修改,此时便可以使用到web_reg_save_param了。可以通过它先将事务的状态读出写入一个自定义的变量中,根据变量的值来决定下一步的动作。

 简要说明

  语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

 参数说明:
ParamName: 存放得到的动态内容的参数名称
list of Attributes: 其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写
Notfound: 当在返回信息中找不到要找的内容时应该怎么处理
Notfound=error: 当在返回信息中找不到要找的内容时,发出一个错误讯息。这是缺省值。
Notfound=warning: 当在返回信息中找不到要找