5.1.2性能测试需求提取复习了一些常见的理论概念后,我们开始性能测试需求的提取。这个过程是非常重要的,往往测试失败,就是因为在这个过程中不知道如何得到确切的性能指标,而导致测试无法正常开展。性能测试需求提取一般的流程如图5-1所示。图5-1性能测试需求提取流程分析提取指标在用户需求规格说明书中,会给出系统的功能、界面与性能的要求。规范的需求规格说明书都会给出明确的性能指标,比如单位时间内访问量要达到多少、业务响应时间不超过多少、业务成功率不低于多少、硬件资源耗用要在一个合理的范围中,这些指标都会以可量化的数据进行说明。如果,实际项目并没有这些正规的文档时,项目经理部署测试任务给测试组长时,一般就会说明是否要对项目的哪些业务模块进行性能测试,以及测试的要求是什么的。最麻烦的就是项目经理或者客户要求给出一个测试部门认为可以的数据,这样非常难做的。可是“甲方”往往都是提要求的,“乙方”只能“无条件”接受!对于正规的项目,用户需求规格说明书中一般会给出类似表5-1的性能测试要求:测试项响应时间业务成功率并发数CPU使用率内存使用率用户登录=3秒98%2075%75%表5-1需求规格说明书中的性能要求表5-1给出的指标非常明确,在测试过程中,我们只需收集用户登录模块的响应时间、登录成功率、并发数、CPU使用率、内存使用率的数据,然后与表5-1的指标进行比较即可,通过的,就认为达到了客户要求的性能,未达到就分析原因,并给出测试报告及解决建议。大多数是没有明确的需求,需要我们自己根据各种资料、使用各种方法去采集测试指标。以OA系统为例,假设《OA系统需求规格说明书》中并未指明系统的性能测试要求,需要测试工程师自己分析被测系统及采集性能衡量指标。分析OA系统的结构,所有功能中仅有考勤模块可能是被测系统最终用户经常使用的业务点,那么我们的重点应该在放在该模块上。一般我们可以从下面三个方面来确定性能测试点:第一、用户常用的功能。常用的功能一旦性能无法满足,比如登录功能,从输入用户名与密码点击登录按钮到显示成功登录信息,花了5分钟,这样的速度是人无法忍受的。而对于用户不常用的,比如年度报表汇总功能,三个季度甚至是一年才使用,等个10分钟也是正常的,这些是跟用户的主观感受相关的,得根据实际情况区分。第二、系统业务逻辑复杂,数据流转频繁的功能。这些地方最终用户可能看不到、用不到,但在系统是个关键点,没有它其他功能就不能正常工作,即使用户未提出做性能测试,作为测试部门也应该对这些地方进行性能测试,以保证他们能够正常工作。第三、与外部系统的接口处。有时候本系统需要使用其他系统的组件。我做过的一个项目,B/S结构的企业信息管理系统,其用户管理模块中的用户数据就是使用早期C/S结构的ERP系统。前一个使用Oracle数据,后一个是用Sybase数据,设定了每三个小时更新一下用户信息,以保证两个系统用户信息是一致的。这样的功能,也是应该做测试的,特别是涉及到多系统的。综合考虑,与考勤模块相关的是登录模块,因为登录是考勤的前置条件,所以在实际的测试中不仅要测试考勤的,还应该考察登录模块的性能表现,尽管这不是用户要求的。OA系统是一个面向广大企业用户的办公自动化系统。根据大多数公司的作息安排,早上九点基本是公司的上班时间。那么根据实际业务分析,早上8:40到9:10可能是OA系统登录的高峰期。因为很多人集中在这个时候达到公司进行考勤业务操作。这个时候,就可以确定系统测试的一个时间段了。接下来,需要调查一般会有多少人使用OA系统,这个数据比较难,应该公司的规模不一样,人数也就不一样。既然是面向公众,那么就可以由开发工程师给出一个参考值,比如开发工程师说可以支持2000人同时使用,那么我们就将使用系统的人数定为2000人。既然说是2000人同时使用,我们可以理解为2000人在8:40到9:10这30分钟的时间里都要完成登录、考勤操作,并且不能有失败的业务。也就是说业务的成功率要求在100%。这样一来,到目前为止,得到了下面几个数据:1、OA系统使用高峰期为30分钟;2、并发使用人数为2000;3、登录、考勤成功率100%。接着分析,在满足功能的同时,还需要考虑操作的响应时间。很多公司都有迟到处罚制度,我原来的公司迟到一分钟扣五块钱,有的公司甚至更狠。所以,如果应为页面反映慢而导致迟到,会“冤死”一批人,这样的问题绝对不能出现。那么响应时间为多少算正常呢?说实话,这样的问题本身就是有问题的,何谓快,何谓慢?都是主观判断,你心急的时候觉得它慢,不急的时候觉得它快,所以没有一个定论,按照业内一个经验值,就是2、5、8或者3、5区分。2秒或者3秒的功能结果响应时间是非常理想,5秒就有点让人觉得不爽了,而8秒,甚至更高很可能导致用户放弃操作,或者再次发起第二次请求。这样的经验值在实际测试中对我们确定响应时间有很高的参考价值,当然响应时间还应该根据业务类型定,而不能仅从用户的感官考虑。我们这里就采用常规的3秒为目标,也就是说OA系统处理登录、考勤业务的服务器响应时间不超过3秒。除了软件的要求外,还应该对硬件资源进行监控,比如应用服务器的CPU使用率、内存使用率、带宽情况、Web服务器的资源使用情况等等,那么如果用户未提出要求,我们就按照常识走,CPU的使用率不超过75%,内存使用率不超过70%,其他指标这里就不列出了。之所以选择这两数值,是因为他们具有代表性。CPU的使用率超过75%可以说是繁忙,如果持续在90%甚至更高,很可能导致死机、机器响应超级慢等问题。如果过低也不好,说明CPU比较空闲,可能存在资源浪费的问题。对于内存存在同样的问题。通过上面的分析,最终采集得到本次测试的性能参考指标如表5-2所示:测试项响应时间业务成功率业务总数CPU使用率内存使用率登录=3秒100%30分钟完成200075%70%考勤=3秒100%30分钟完成2000表5-2OA系统性能参考指标得出本次测试的性能参考指标后,我们就可以进行测试模型的建立了。建立业务模型得到性能测试参考指标后,再次分析OA系统的实际使用情况,我们可以进行测试模型的建立,也就是建模。所谓建模,就是建立用户业务模型。建模是性能测试的基础。只有建立合理有效的业务模型,才能模拟出真实的系统使用情况,才能找到今后可能发生的缺陷,所以建立恰当的业务模型是我们性能测试成功与否的关键。那如何建立用户业务模型呢?根据上面的测试要求,我们需要测试OA系统登录与考勤两个模块的性能。这两个模块的使用方法是什么样的?用户又是怎么使用的?相对其他的业务系统而言,这里的功能比较简单了。登录功能很常见,输入用户名与密码,点击登录按钮即可完成登录操作。登录成功后,直接进入考勤页面,点击考勤按钮,即可完成考勤操作。所以,不需做太多的分析就能弄清楚这个过程。如果用流程图表示,则可表示为图5-2。图5-2OA系统考勤流程图建立实际的业务模型如表5-3所示:步骤序号步骤描述1用户打开OA系统首页地址2输入用户名“erbao”3输入密码“123456”4点击【登录】按钮5进入erbao个人页面,展开“行政管理”6展开“员工事务”,点击【员工考勤】链接7默认设置,点击页面右边【发送】按钮8考勤成功,点击【退出】按钮,退出系统表5-3OA系统考勤业务模型经过分析测试要求与建立业务模型两步,基本上已经确定了本次测试的内容。大多数项目的性能测试分析都可以使用这样的方法。在分析与建模过程中,最重要的是要弄清楚当前测试的重点是什么,对应的业务流程是什么,就像我们做功能测试一样的,性能测试也需要在客户的实际应用基础上开展,否则脱离实际的测试是无效的。评审确定指标前面的两步仅是测试工程师的分析确定过程,并没有取得项目组的审核,要知道,在一个软件生产过程中,评审在每一个过程都应该存在。得到测试指标与模型后,就需要编写对应的性能测试计划或者性能测试方案,并提交项目进行审批。如果项目组没有这个要求,测试工程师也需告知项目经理、开发组长与测试组长,并要求得到反馈。我曾做过的一个移动项目,方案改了三次,局方经理才同意,尽管他们并没有提出什么要求,就是认为不妥,此时我们就必须不断调整,他不同意,我们就不能开展工作。所以,有时候这个评审可能是个形式,但也得做。一般在这个阶段会生成性能测试计划或者性能测试方案。后期的性能测试工作就按照这些文档开展。5.1.3性能测试用例设计经过性能测试需求提取阶段的努力,测试目的明确了,就需要设计详细的测试用例了。这个阶段主要考虑的是如何实现性能测试模型。与功能测试用例设计不同的是,性能测试用例一般仅考虑正常的业务流程,而不会去检查异常流程,但其中的约束条件仍是需要注意的。比如有些在线投票系统是不允许一个IP投多次票的,在性能测试过程中特别需要注意这方面的问题。比如同一个IP仅允许一个用户登录、一个用户仅能操作一次、不允许出现同样的数据,业务操作中存在临时会话ID等等问题。从功能角度考虑,用户使用OA系统中的考勤功能,只能进行一次到达单位的签到,如果再次点击考勤按钮,则系统不允许提交,给予提示“不能重复考勤”。这样,在测试过程中,就需要使用不同的用户名。仔细分析测试数据的约束关系,找出其中容易出问题的地方,然后想办法解决它。经过分析,了解到考勤功能不允许重复考勤,也就意味着一个用户只能进行一次考勤操作。除此之外,还需要考虑同一个IP允不允许多个账号登录,在前面的功能测试阶段我们得知,OA系统是允许这样的操作的,那么在测试过程中就不需要进行IP欺骗的操作了。除此之外,似乎OA系统没有其他的限制了。再次强调,在设计性能测试用例的时候,一定要弄清楚测试点是否存在约束条件,一般可由该测试点对应的功能测试用例得到。综上所有,设计出本次性能测试的用例如表5-4所示:约束条件:同一用户只能进行一次考勤测试数据:用户名做参数化,预计5000个操作步骤:1、用户打开OA系统首页地址2、输入用户名“erbao”3、输入密码“123456”4、点击【登录】按钮5、进入erbao个人页面,展开“行政管理”6、展开“员工事务”,点击【员工考勤】链接7、默认设置,点击页面右边【发送】按钮8、考勤成功,点击【退出】按钮,退出系统期望结果:测试项响应时间业务成功率业务总数CPU使用率内存使用率登录=3秒100%30分钟完成200075%70%考勤=3秒100%30分钟完成2000实际结果:测试项响应时间业务成功率业务总数CPU使用率内存使用率登录考勤测试执行人:测试日期:表5-4OA系统性能测试用例至此,性能测试需求分析与测试用例设计已经完成,下面就可以利用测试工具进行实际的测试了。这里使用的是HP公司的LoadRunner8.1英文版。LoadRunner是一款专门用于性能测试的测试工具。该工具可以轻松的模拟百万用户并发使用软件系统的情景,同时可利用场景执行功能模拟真实的业务,场景执行完毕后,LoadRunner还提供了强大的测试结果数据分析功能,以便于测试工程师分析系统中所存在的性能问题。