性能测试1性能测试简介234性能测试流程环境搭建LoadRunner应用Part1.性能测试简介性能测试是指模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的要求。软件系统性能指标:(1)响应时间:是指系统对请求做出响应的时间。(平均相应时间和最大相应时间)“呈现时间”与“系统响应时间”,“系统响应时间”-网络传输时间与应用延迟时间;(2)吞吐量:是指系统在单位时间内处理请求的数量。对于无并发的应用系统,吞吐量与响应时间成严格的反比关系。对于并发系统,需要使用吞吐量作为性能指标。(3)并发用户数:是指系统可以同时承载的正常使用系统功能的用户的数量。例如:网站系统:注册用户数,在线用户数,同时发送请求用户数;注册用户数存在部分用户长期不登录系统;在线用户数作为性能指标更直观,而同时发送请求用户数作为性能指标更为准确;(4)资源利用率:反映的时在一段时间被资源平均被占用的情况。对于数量为1的资源,资源利用率可以表示为被占用的时间与整段时间的比值。对于数量不为1的资源,资源利用率可以表示为在该段时间内平均被占用的资源数与总资源数的比值。性能测试的定义Part1.性能测试简介(5)思考时间:ThinkTime,也被称为“休眠时间”,从业务的角度来说,这个时间指的是用户在进行操作时,每个请求之间的间隔时间。从自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间,体现在脚本中,具体而言,就是在操作之间放置一个Think的函数,使得脚本在执行两个操作之间等待一段时间。(6)TPS:Transactionpersecond,每秒钟系统能够处理的交易或者事务的数量。它是衡量系统处理能力的重要指标。(7)HPS:点击率HitPersecond,每秒钟用户向WEB服务器提交的HTTP请求数。这个指标是WEB应用特有的一个指标,WEB应用是请求—响应模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求。性能测试的定义Part1.性能测试简介(1)用户视角对用户而言,性能测试就是响应时间。用户甚至不关系响应时间中哪些是软件造成的,哪些是硬件造成的。但是用户感受到的响应时间既有客观成分,也有主观成分,甚至是心里因素。(2)管理员视角管理员需要使用软件提供的管理功能等手段来方便普通用户使用。这类用户首先关注普通用户感受到的软件性能。其次,管理员需要进一步关注如何利用管理功能进行性能调优。(3)开发人员视角开发人员的视角与管理员的视角基本一致,但开发人员需要更深入地关注软件性能。在开发过程中,开发人员希望能够尽可能地开发出高性能的软件。软件性能的视角Part1.性能测试简介性能测试的广义定义0102对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,系统响应时间合适会变得不可接受或事务不能正常执行。对系统不断地增加压力或增加一定压力下的持续时间,直到系统的一些性能指标达到极限。例如响应时间超过预定指标或某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供依据。压力测试负载测试03强度测试为了检查程序员对一场情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运行;例如:高于正常点击率2倍进行测试;运行需要最大存储空间的测试用例;运行可能导致系统崩溃或磁盘数据剧烈抖动的测试数据;该测试对于系统未来的扩展空间具有重要意义;04并发测试主要指当测试多个用户同时访问同一个应用程序、同一个模块或数据记录时是否存在死锁或其他性能问题,几乎所有的性能测试都会涉及到并发测试。在具体的性能测试工作中,并发用户往往都是借助工具来模拟的,LoadRunner中称之为并发虚拟用户。Part1.性能测试简介性能测试的广义定义0506大数据测试分为:一种针对某些系统存储】传输】统计业务进行大数测试;一种是与并发测试相结合的极限状态下的综合数据测试。大数据量测试用例的设计:1、历史数据引起的大数据量测试;2、运行时大数据量测试指通过测试找到系统各项资源的最优分配原则。配置测试时系统调优的重要依据。例如:可以通过不停地调整Oracle的内存参数来进行调试,使之达到一个较好的性能;配置测试可以和之前的测试配合进行大数据量测试配置测试07可靠性测试在给系统加载一定业务压力的情况下,时系统运行一段时间,依次检测系统是否稳定。例如,可以世家让CPU资源保持70%-90%市盈率的压力,连续对系统加压8小时,然后根据结构分析系统是否稳定。1性能测试简介2性能测试流程34环境搭建LoadRunner应用Part2.性能测试流程在现实生活中,无论做什么都要一步一步的,按照一定的流程进行。同样做性能测试的时候也是一样,也要有一个流程,如右图所示。开始分析应用系统定义压力测试的对象和目标是否可以接受测试环境的搭建测试数据的准备测试工具的准备编写测试案例录制脚本,增强脚本实施方案,监视系统资源分析测试结果结束测试计划评审调优1性能测试简介2性能测试流程3环境搭建4LoadRunner应用Part3.环境搭建LoadRunner12.55VirtualUserGenerator(虚拟用户生成器)是一种基于录制回放的工具,LoadRunner拥有各种Vuser类型,每一种类型都适合与特定的负载测试环境;用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本VuserScript)。Controller(控制器)用于组织、驱动、管理和监控负载测试。设置虚拟用户数,开始时间,结束时间,测试持续时间设置(时间范围内虚拟用户数的变化)描述虚拟用户场景设置与测试执行;Analysis(分析器)根据测试数据结果集合,绘制响应的测试结果分析图表,有助于查看、分析和比较性能结果1性能测试简介2性能测试流程3环境搭建4LoadRunner应用LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner具有以下功能:(1)虚拟用户:以虚拟用户方式模拟真实用户的业务操作行为;(2)真实负载:设定负载方案,业务流程组合和虚拟用户数量;(3)定位性能:含有实施检测器,在负载测试过程中可以观察应用系统的运行性能,性能检测器实时显示交易性能数据;(4)分析结果:测试完毕,将收集汇总所有的测试数据,并提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。(5)重复测试:负载测试是一个重复过程。每次处理玩一个出错情况,将需要在相同方案下在进行椅子负载测试,检测所作的修正是否改善运行性能;Part4.LoadRunner应用LoadRunner简介Part4.LoadRunner应用LoadRunner性能测试执行过程性能测试执行过程:1、数据准备(数据参数化);2、录制、编辑及调试脚本;3、设计及调试场景;4、执行场景;5、分析结果;Part4.LoadRunner应用1、数据准备数据准备时根据测试需要,在执行测试之前在被测系统种加入复合要求的数据。数据准备方法:1、手工:要加入的数据量比较少的情况下可以手工在系统中加入。2、使用LR或其他自动化测试工具:在数据量比较多的情况下就要使用工具,录制脚本反复迭代运行脚本或在场景中运行脚本;3、数据直接写入数据库:这种方法使用sql语句(或存储过程)实现数据批量写入数据库;Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator录制脚本可参考LR的操作手册;需要注意:1、在脚本录制过程中加入备注;2、在编辑脚本前备份一盒原始脚本;3、编辑时插入思考时间、集合点、检查点、事务和关联点4、再录制一个同样的脚本,用于与刚才录制的的脚本进行对比,查找出哪些需要参数化值;性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator备注:即在录制时给出脚本注释,方便后续脚本阅读;思考时间:模拟用户操作之间的思考等待时间;性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator集合点:插入集合点是为了衡量在加重负载的情况下服务器的性能情况。当通过controller虚拟多个用户执行该脚本时,用户的启动或运行步骤不一定都是同步的,集合点是在脚本的某处设置一个标记,当有虚拟用户运行到这个标记处时,停下等待,直到所有的用户都达到这个标记处时,再一同进行下面的步骤,集合点的用处对于loadrunner来说意义非常大,可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下同时多个用户操作,同时模拟负载,实现性能测试的最终目的;性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator检查点:设置检查点也是为了规避使用工具进行性能测试的“盲点”,一般在执行性能测试的时候,不进行功能验证,一旦在不同的负载下,被测系统有功能错误发生的时候,测试工具不能够记录产生的错误,这就忽略了性能测试下,系统功能的不稳定问题,如果忽略这些,将会导致测试结果的参考依据的意义不大,甚至还有弊产生。所以性能测试期间,进行功能的校验有时候还是必须的,这时,可以通过Loadrunner的检查点来验证功能实现的准确性。性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator事务:为了衡量服务器的性能,需要定义事务;如:数据查询操作,为了衡量服务器执行查询操作的性能,需要把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator关联点:在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。其实关联也属于一同特殊的参数化,关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值参数化值:参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集;性能测试最重要的一步是生成虚拟用户脚本Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator性能测试脚本设计:Action脚本截图Part4.LoadRunner应用2、录制、编辑及调试脚本VirtualUserGenerator性能测试脚本执行:回放概要(ReplaySummary)截图Part4.LoadRunner应用3、设计及调试场景Controller性能测试场景设计:Design中的场景设置策略和交互计划图截图性能测试场景执行:场景执行完成后Run界面截图Part4.LoadRunner应用4、执行场景ControllerPart4.LoadRunner应用5、分析结果Analysi