第3章-软件性能的组织与管理课件.ppt
第3章 软件性能的组织与管理,焦忭忭2017.4,本章目录,1.软件性能测试过程模型2.组件性能测试团队3.制定性能测试计划4.设计性能测试方案5.搭建性能测试环境6.执行性能测试7.分析性能测试结果8.性能测试支持环境,1.软件性能测试过程模型,1.1Segue性能测试过程模型1.2HP性能测试过程模型1.3PTGM性能测试过程模型1.4APTM性能测试过程模型1.5SPTM系统性能测试过程模型,1.1Segue性能测试过程模型,Segue公司是专注于发展并提供软件质量优化解决方案的软件企业,后被Borland公司收购。该模型是在使用Silk Performer工具进行系统性能测试时推荐使用的过程模型与工具耦合度高,缺乏对测试计划、测试设计、测试执行和测试总结的支持,不具有指导通用性能测试的能力。,1.2HP性能测试过程模型,Mercury Interactive 公司是一家商务管理软件和自动化测试工具提供商,后被惠普公司收购。该性能测试过程涵盖了性能测试工作的大部分内容,但过于紧密地与LoadRunner工具集成,没有兼顾使用其它工具,并不是一个普适性的测试过程。,1.3PTGM性能测试过程模型,软件性能测试过程详解与案例剖析教材中,提出了一种性能测试过程通用模型PTGM(Performance Test General Model)该模型不仅刻画了性能测试的重要阶段,还对每个阶段中的活动进行了详细说明,给出了参考模板和工作指南,是一个具有实践指导意义的性能测试过程模型。,1.4APTM性能测试过程模型,敏捷开发近年来被越来越多的开发组织所接受,已经成为一种比较主流的软件工程开发方法。敏捷开发鼓励协作、交互,欢迎变化,通过不断迭代的方式实现小步快跑,以最快的速度向用户交付满足用户需求的软件产品。敏捷测试模型APTM(Agile Performance Test Model)不仅仅适用于指导敏捷开发过程中测试工作的开展,也同样适合非敏捷环境下尽早建立性能测试,尽早发现系统中可能存在的性能问题。,1.5SPTM系统性能测试过程模型,系统级性能测试的过程模型SPTM(System Performance Test Model),2.组件性能测试团队,2.1组织团队成员2.2安排工作分工2.3进行技能培训,2.1组织团队成员,一个强有力的测试团队是高质量完成性能测试的重要保障。性能测试工作是一项复杂的系统工作,需要具有各种专业技能的管理人员和技术人员协调配合才能完成。性能测试团队中,需要有多种角色人员参与相关测试工作,每种角色要承担相应的职责及具有专业的技能。,2.1组织团队成员,2.1组织团队成员,2.1组织团队成员,作为一名优秀的测试工程师,要对测试工作有浓厚的兴趣,热爱测试工作,才更容易做好测试工作。测试人员应该具有“五心”:专心:执行测试任务时注意力高度集中。细心:执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。耐心:执行测试工作有时候非常枯燥,需要很大的耐心。责任心:测试人员要具有高度的责任心,责任心是做好工作必备的素质之一。自信心:测试人员需要建立强大的自信心,面对测试过程中各种难题。作为测试人员,还需要具有良好的沟通表达能力、洞察力、好奇心、反向思维能力和记忆力。还需要具有一定的服务器技术、操作系统知识、数据库知识、中间件知识、编程能力、网络基础、IT素质和测试经验。,2.2安排工作分工,在组件好性能测试团队后,需要根据每个成员的能力情况,为其分配角色,例如:某个测试经理可以作为项目的测试负责人;某个高级性能测试工程师,可以在性能测试项目中承担性能测试设计人员和性能测试分析人员;某个中级性能测试工程师可以承担性能测试配置人员;某个初级性能测试工程师,可以在性能测试项目中承担性能测试脚本开发人员和性能测试执行人员。,2.2安排工作分工,在分配了角色后,每个团队成员需要承担的工作内容就基本明确了,每个人需要根据自己的情况开展相关工作,例如:测试负责人可以开始制定性能测试计划;性能测试设计人员可以开始了解系统情况和性能需求;性能测试配置人员可以进行工具和环境的准备工作;性能测试执行人员可以学习相关测试工具的使用方法。在性能测试负责人明确了项目进度计划后,每个团队成员按照计划开展相关工作。,2.3进行技能培训,性能测试团队中每个成员的工作能力对于测试项目能否取得成功具有重要的影响。性能测试人员要想完成某项目的性能测试工作,需要掌握以下几方面知识:系统功能需求和性能需求系统性能相关知识性能测试基础知识性能测试工具的使用性能分析方法等,2.3进行技能培训,在选择团队成员时,首先考虑选择已经具有工作经验的性能测试工程师。但是在某些情况下,并无法做到全部团队成员都具有经验。所以需要根据实际情况,对团队成员进行相应的培训工作。这种准备阶段的培训包括:专业基本理论培训被测系统基本情况培训性能测试相关技能的培训等,3.制定性能测试计划,3.1明确测试范围3.2制定进度计划3.3制定成本计划3.4制定环境计划3.5制定工具计划3.6测试风险分析,3.1明确测试范围,明确测试范围就是弄清楚本次性能测试的工作内容是什么,即明确工作目标,这是测试工作能够顺利开展和取得成功的前提。测试范围明确方法:需求中性能指标验证系统容量评价系统可靠性检验如果用户未对系统性能要求进行明确要求,在该环节要首先完成性能指标要求的分析。明确的测试范围必须经过双方评审,确认后作为双方安排工作和检查工作的依据。,3.2制定进度计划,制定进度计划就是为性能测试的关键工作进行分析,落实工作责任人,并明确各工作所需时间以及各阶段的里程碑。制定进度计划的两种途径:一是根据提供软件产品的最后期限从后往前倒推安排各阶段时间时间安排受限,实际中常见二是根据项目和资源情况制定性能测试初步计划时间安排合理,完成测试工作效果能够得到保障,3.2制定进度计划,进度计划的表示工具:,甘特图,网络活动图,3.3制定成本计划,项目成本指项目进展过程中所耗用的全部费用的总和。项目成本和项目收益是项目决策的重要依据,在批准的预算内完成项目是测试负责人的重要职责之一。在制定成本计划时需要根据项目人员、进度安排、环境工具要求、测试活动、日常办公等方面制定切实可行的成本预算,在项目执行过程中需要按照预算进行项目费用的支出。成本计划需要经过专门的审批小组审批后方可执行。,3.4制定环境计划,系统级性能测试需要在一定软硬件环境下才能得到执行,不同的测试环境对测试的成本和测试的效果有非常明显的影响。性能测试会对系统产生大量的压力和测试数据,所以一般情况下:对于新上线的系统,还没有真正业务在上边运行,可以在上线之前,在生产环境下开展性能测试工作对于已经运行中的系统,每天都有大量的生产作业任务,为了防止性能测试对系统产生的压力影响,一般不允许在生产环境下开展性能测试工作,此时需要部署与生产环境一模一样的软硬件环境作为测试环境。,3.4制定环境计划,测试环境计划中需要明确:服务器硬件环境:包括服务器数量、部署结构、配置等内容。测试客户端环境:在执行性能测试时,根据负载量的不同,可能需要1台或多台测试客户端机器,在进行环境计划时,需要根据测试的基本要求,提出测试客户机数量及配置的要求。操作系统环境:明确操作系统类型,版本号等。数据库环境:需要明确数据库类型,版本号等。中间件环境:需要明确中间件类型,版本号,配置等。数据环境:需要分析系统典型的数据量情况。,3.5制定工具计划,性能测试工具在性能测试项目中发挥着不可替代的作用制定测试工具计划:选择合适的工具确定测试工具的使用范围规定和规范测试工具的使用方法明确工具负责人,3.5制定工具计划,选择性能测试工具时,从以下方面进行规划:,3.6测试风险分析,项目风险是指可能导致项目损失的可能性。项目风险管理是为了最好地达到项目目标,识别、分配、应对项目生命周期内风险的管理方法,是一种综合性的管理活动。在制定项目计划阶段,需要对测试工作中有可能遇到的风险进行预测,确定可能会遇到哪些风险,才能够进一步分析这些项目的性质和后果。,3.6测试风险分析,在测试风险分析中,首先要全面分析测试项目的各种影响因素,从中找出可能存在的各种风险,分析风险发生的可能性及风险发生的危害程度,整理汇总成项目风险清单针对各种风险,制定切实可行的应急措施。在项目执行过程中,要进行不间断的风险监控,一旦风险发生,按照指定的风险应急措施对风险加以应对,避免对项目造成更加严重的影响。,4.设计性能测试方案,4.1明确性能需求4.2设计性能测试用例4.3设计脚本录制方案4.4设计测试场景4.5设计测试结果指标,4.1明确性能需求,性能测试的设计是针对性能需求的要求来完成的。在制定性能测试计划时,已经明确了系统的性能要求,在设计具体的性能测试方案之前,需要对性能需求进行进一步明确。性能需求是否明确直接影响性能测试的充分性和测试结果的有效性。性能需求主要从响应时间、并发用户数、吞吐量及资源利用率等角度对系统的性能提出具体的要求,性能测试方案设计人员需要针对每个性能指标要求,制定具有针对性的性能测试用例。,4.2设计性能测试用例,性能测试用例是性能测试方案设计结果的体现。性能测试用例与功能测试用例的作用是类似的,其中明确了测试内容。性能测试人员在执行性能测试时,只需要按照测试用例的要求,完成具体测试就可以了。,4.2设计性能测试用例,4.2设计性能测试用例,4.3设计脚本录制方案,脚本是性能测试中模拟用户访问系统行为的实体,是性能测试过程中非常宝贵的成果,需要进行认真的设计、精心的录制(开发)和细心的维护。脚本的设计:设计脚本操作过程、事务划分方式、运行逻辑设计、参数化设计、检查点设计、思考时间设计、关联设计、集合点设计等。脚本的录制:在工具中按照设计方案完成脚本的录制、开发、调试、回放,提供能够成功运行的脚本。脚本的维护:对脚本保存路径、命名方式、内容说明、创建人、最新修改时间等进行记录,4.3设计脚本录制方案,脚本可以应用在多个测试用例中。所以在设计测试用例时,首先要看已有的脚本是否能够满足本次测试的要求,如果已经有可用的脚本,则不需要再进行脚本的设计;如果尚未有可用的脚本,再设计新的脚本。,4.3设计脚本录制方案,脚本设计遵循以下一些原则:目标明确,脚本主要为哪项测试目标服务粒度适度,不要录制过大脚本,以利于调试和维护事务的划分要合理思考时间设定灵活选择参数化等提高脚本适用范围,4.4设计测试场景,测试场景是每个测试用例都要设置的测试执行环境。测试场景尽量模拟软件系统实际应用的特点,包括:测试时执行的脚本每种业务执行的用户数量模拟的总用户数用户执行方式执行过程中的相关参数设定测试执行中需关注或监测的资源指标等,如设备资源利用率、响应速度、吞吐量等。,4.4设计测试场景,4.5设计测试结果指标,在性能测试过程中,测试工具可以自动化记录很多指标数据,例如事务平均响应时间、每秒通过事务总数、每秒点击次数、吞吐量、每秒HTTP响应数、每秒连接数、各种性能计数器等。通过对这些数据的分析可以得到系统的性能状况。针对某个性能测试用例,需要采集哪些性能指标,以供性能测试结果分析使用,就需要进行合理的设计。指标的选择一般与测试目标一致,如果性能指标是响应时间,则测试过程中采集事务平均响应时间指标;如果性能指标是吞吐量,则测试过程中采集相应的吞吐量指标;如果对资源利用率指标有特殊要求,则在测试过程中可以采集资源利用率相关指标。,5.搭建性能测试环境,5.1搭建硬件环境5.2搭建软件环境5.3搭建测试工具环境5.4准备数据环境,5.1搭建硬件环境,搭建硬件环境指根据系统的物理部署方案,将服务器、测试机、路由器等硬件设备搭建好,为系统提供运行的物理设备环境。,5.2搭建软件环境,软件环境包括操作系统环境、编译环境、应用服务器中间件环境、应用程序、数据库环境等。在该步骤需要按照环境计划中指定的各种软件环境进行相应软件的安装和配置,使系统能够正常运行。,5.3搭建测试工具环境,性能测试一般在性能测试工具的支持下完成,所以在环境搭建阶段,需要搭建测试工具环境。测试工具一般作为系统访问客户端,向被测试系统发送大量并发访问,所以需要在准备的客户端计算机上安装相应的测试工具。在并发量大的情况下,有可能需要多台安装测试工具的计算机,此时需要按照多机测试的策略,完成客户端测试环境的部署工作。,5.4准备数据环境,系统性能受到数据环境的制约,所以在进行性能测试时,系统中需要存在具有代表性的数据量。在制定性能测试计划阶段已经明确了性能测试所需要的数据环境,在搭建测试环境阶段,需要按照计划的要求,采用自动或手动的方式,将测试数据准备就绪。,6.执行性能测试,6.1脚本录制与开发6.2场景设置6.3测试执行6.4测试监控,6.1脚本录制与开发,VU脚本是执行性能测试时自动执行的对象,所以在执行性能测试时,首先就是将VU脚本录制好,并根据测试的需要,对脚本进行再次开发。在录制脚本时,需要根据被测试系统的类型,选择对应的脚本录制协议,按照之前设计的脚本方案,在测试工具的支持下完成脚本的录制和开发工作。,6.2场景设置,场景设置是测试执行的前提在测试场景中需要明确本次性能测试执行的脚本、并发用户数,用户增加方案、执行时长、测试监测指标等内容。在方案设计阶段,针对每个测试用例的测试场景要求已经设计好,在执行环节,只需要在测试工具中进行相应配置即可。,6.3测试执行,当测试场景设置好之后,在工具中单击“执行”按钮功能,就可以触发本次性能测试的执行。性能测试工具会自动调用对应的VU脚本,按照测试场景设置的参数,自动完成测试过程的模拟,完成性能指标的采集。,6.4测试监控,为了更加直观反映性能测试过程中系统中各种指标的表现,可以在测试工具中设置测试执行过程中需要监控的性能指标,在测试过程中随时关注指标的情况。如果出现指标劣化非常严重时,可以考虑停止本次性能测试,重新调整测试方案后,再次投入运行。,7.分析性能测试结果,7.1测试结果分析7.2系统瓶颈分析7.3制定优化方案7.4性能测试总结,7.1测试结果分析,性能测试的分析需要借助各种图表,一般的性能测试工具都提供了报表模块来生成不同的图表。报表模块同时还允许用户通过叠加、关联等方式处理和生成新的图表。测试结果分析是一项技术含量非常高的工作,很多性能测试人员能够完成性能测试,获得一系列测试数据,但是这些性能数据反映了系统性能状况如何,却讲不清楚。在进行测试结果分析时,需要根据测试目标,找到与指标要求对应的测试结果数据,通过对比给出系统性能测试结果,并在此基础上完成系统性能瓶颈的定位和调优工作。,7.2系统瓶颈分析,对性能测试结果的分析,如果发现系统性能未达到性能需求的要求,则测试人员与开发人员和相关专家需要对系统瓶颈进行分析。系统瓶颈的分析是一项非常困难的工作,需要具有丰富的性能测试经验,才能准确分析出系统可能出现性能瓶颈的问题。性能瓶颈的定位往往需要通过更多的计数器指标才能够完成,如果之前测试中采集的指标数据不足,则需要修改测试场景设置,再次执行性能测试,以得到足够的分析数据。,7.3制定优化方案,明确了性能瓶颈后,相关专家会根据应用经验,给出系统优化的方案。开发人员或工程实施人员根据优化方案对系统进行优化之后再次对优化完成的性能进行性能回归测试,直到系统性能满足了要求为止。,7.4性能测试总结,在完成了系统性能测试工作之后,需要给出一个全面的性能测试总结报告报告需要将本次性能测试的目标、方法、工具、环境、测试用例、脚本设计方案、测试场景、测试结果、测试结论等内容进行全面阐述。,8.性能测试支持环境,8.1评审8.2沟通8.3管理8.4支持,8.1评审,在性能测试开展过程中,有很多环节的输出必须经过评审后,方可进行实施。需要进行评审的内容包括:性能测试计划测试设计方案,8.1评审,性能测试计划评审:性能测试计划制定的合理性对于整个项目能够顺利开展具有重要影响。性能测试计划需要由专门的评审小组对计划内容进行评审。评审小组需要包括性能测试项目组成员、项目开发相关人员、性能测试专家、用户代表等。经过评审的性能测试计划具有更好的可操作性,原因是:一方面,方案制定得更加合理,具体操作时难度小;另一方面是相关干系人在评审环节对计划内容都有所了解,在实际操作过程中会给予资源的保障和支持,从而使计划推进起来更加容易。,8.1评审,性能测试方案评审:性能设计方案是性能测试执行的依据,方案制定得是否科学对测试结果具有直接的影响。性能测试设计方案需要由专门的评审小组进行评审。评审小组需要包括性能测试项目组成员、性能测试专家、项目需求分析人员、用户代表等。评审小组需要在对系统性能需求进行深入理解的基础上,对性能测试设计方案进行论证,明确按照该设计方案开展的性能测试是否能够对系统的性能指标进行充分体现,按照该方案开展的性能测试能否达到验证系统性能的效果。经过评审的性能测试设计方案具有更好的合理性,为性能测试顺利开展提供了可靠性保障。,8.2沟通,在软件测试过程中,沟通行为随时可能发生,建立良好的沟通机制是测试顺利开展的保障。测试中的沟通包括:测试负责人与测试设计人员的沟通测试负责人与测试执行人员的沟通测试设计人员与脚本开发人员的沟通测试设计人员与需求分析人员的沟通测试负责人与用户的沟通测试负责人与其他部门沟通针对不同的目标和对象,需要建立不同的沟通方式,以达到高效、方便、准确、响应及时的沟通效果。,8.2沟通,会议沟通适合在与项目组外人员进行沟通时采用这种方式比较正式,沟通效率高,对于解决与会多方需要共同决定的事项是非常理想的沟通手段。注意事项:明确会议主题、明确参会人员范围、控制会议时间、把握会议议程、注意会后总结、会议纪要共享等。电话沟通适合不在一处办公的人员进行随机性沟通时采用。这种沟通方式灵活、不受时间和地点的制约,沟通效率高,需要时可以建立多方会议,以达到多人讨论的目的。在进行电话沟通时,需要注意一定要将沟通中达成的共识以文字的方式进行表达,并在相关干系人之间进行共享,防止事后由于理解的偏差或记忆不准确等问题造成不必要的分歧。,8.2沟通,邮件沟通适合类内容发布类内容的传达,例如会议纪要、通知、临时性文档等。邮件是办公场合最常用的沟通方式,但是不适合用来进行问题的讨论和重要文档版本的发布。采用电子邮件进行问题讨论效率低,效果差;进行重要文档版本的发布容易引起版本混乱,从而造成工作上的失误。配置管理平台沟通适合对某些版本非常敏感的资料进行沟通时使用。例如计划文档、设计方案文档、设计用例文档、测试报告、缺陷记录等。,8.2沟通,面对面沟通适合在一处办公的人员进行随时问题讨论时采用,是一种非常高效和直接的沟通方式。面对面沟通具有较好的沟通效果,而且面对面讨论更能够促进人与人的了解,加深团队成员之间的友情,对于提升集体凝聚力和战斗力是非常好的手段。应该积极鼓励这种沟通方式。即时通信软件沟通即时通信软件能够给人们提供一个随时随地沟通的方式,适合于一些非正式问题讨论时使用。由于即时通信软件传输效率方面的制约,一般情况下更多采用文本进行交流,所以容易产生理解上的歧义,是一种辅助的沟通交流方式。,8.3管理,软件测试项目管理对于软件测试活动的全过程进行管理,对于性能测试工作的顺利开展有着非常重要的作用。性能测试过程中需要重点开展的管理活动包括:范围控制进度计划控制项目成本控制风险的管理团队建设采购管理,8.3管理,范围控制工作范围是性能测试开展的依据,是测试工作量的直接影响因素。在测试计划制定阶段,就需要明确测试范围。在项目进行过程中,不能随意变更工作范围。如果由于某些原因,工作范围的确发生了变化,需要建立规范的范围变更控制机制,按照流程,对范围的变更进行记录、评估,之后再开展相应的工作。,8.3管理,进度计划控制:在测试计划建立阶段,制定项目的进度计划,明确项目开展过程中的重要里程碑。在性能测试开展过程中,需要按照进度计划进行进度的控制,一旦由于某些原因没有按照计划完成相应工作,需要及时进行问题分析并作出计划的调整,防止项目失控,使最初制定的进度计划变成一纸空文。,8.3管理,项目成本控制:项目成本直接制约了项目的利润,做好成本控制是项目管理的一个重要内容。对于场地、人员等固定支出成本,主要是通过做好进度控制来保障;对于餐费、交通等一些临时性成本,要通过预算决算机制,做好各项支出的合理规划,并按照规划控制实际支出,进而达到控制总成本的目标。,8.3管理,风险管理:性能测试过程中有可能会因为某些风险而影响项目的开展。有可能是人员风险、资金风险或技术风险。在项目开展过程中,测试负责人需要对项目风险进行分析,针对风险制定相应的应急预案,在项目执行过程中进行风险的识别和监控,一旦发生风险,采用相应方案进行应对,规避由于风险的发生给项目带来严重的影响。,8.3管理,团队建设:在团队组建好后,如何能够让团队成员非常愿意在团队中工作,发挥个人最佳工作状态,是团队管理的一项重要内容。作为测试项目负责人,需要通过沟通思想、开展团队建设活动、建立配合机制、合理绩效奖励等来提高成员的工作积极性,进而提高团队的凝聚力和战斗力。,8.3管理,采购管理:在性能测试开展过程中有可能需要一些设备、工具、材料等。企业需要有专门的采购管理机制,以最合理的价格、最高的质量和最快的速度向项目提供所需的资源。,8.4支持,在性能测试项目开展过程中,需要公司、项目开发小组和用户各方面的支持,才能够保障在项目进展中遇到问题时,尽快解决,进而保障测试项目的顺利开展。在性能测试过程中有可能需要的支持活动包括:人力资源支持工具支持场地支持设备支持业务支持开发支持,8.4支持,人力资源支持:由于人员流动或测试范围变动,需要更多的人员参与性能测试工作,企业需要给测试团队足够的人力资源支持,以保障各项工作的推进。工具支持:性能测试过程中需要某些专用的工具,企业需要进行采购、调配或开发,以支持项目的顺利开展。场地支持:性能测试需要专用的场地,企业需要给予办公场地的安排。,8.4支持,设备支持:性能测试过程中需要更多的测试设备,企业需要通过租赁、调拨或采购等方式,为项目组提供充足的测试设备。业务支持:性能测试会对业务系统带来很大的影响,为了防止性能测试对业务造成影响,也避免正常业务对性能测试结果造成影响,在性能测试执行过程中,可能需要业务系统进行业务调整,以配合相应测试工作的开展。开发支持:性能测试发现了性能瓶颈,需要相关专家、开发人员进行支持,进行快速优化,解决性能问题,为下一次性能测试做好支持。,