流程方法篇性能测试难点不在于Loadrunner工具本身,难在对整个系统的全局把握,而对全局的把握你就必需得有丰富的知识面掌握一门编程语言:手动开发脚本良好的网络基础知识:协议、Cookie、Session计算机原理与操作系统知识:线程、进程、内存泄露、编码数据库知识:建表,索引,存储过程,事务,触发器性能测试1.性能测试的必要性2.性能测试分类3.性能测试手段4.Loadrunner介绍性能测试目前没有确切的定义,一般认为,性能测试就是一个测试过程,指的是在一定约束条件(指定的软件、硬件和网络环境等)确定系统所能承受的最大负载压力。通过性能测试,可以实现以下一个或者几个目标:判定软件是否满足预期的性能需求判定软件的性能表现寻找软件可能存的性能问题,定位性能瓶颈并解决问题。客户需求--系统快速响应、可靠性高等系统复杂性日益增长,要求系统的高可靠性业务处理快速增长,要求系统快速处理性能同功能一样重要如图所示表明了一个应用系统的基本架构:并发性能测试并发性能测试的过程是一个负载测试和压力测试的过程,即随逐渐增加负载,直到系统的瓶颈或都不能接收的性能点,通过综合分析交易执行指标和资源监控来确定系统并发性能测试过程疲劳度与大数据量测试疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程大数据量测试:针对某些系统存储、传输、统计查询等业务进行独立的大数据量测试;与并发性能测试、疲劳强度测试等相结合的综合数据量测试方案;关键在于数据量的准备手工测试自动化测试人工和自动化测试的结合Loadrunner原是Mercury公司的产品,2006Mercury公司被HP收购Loadrunner是一种较高规模适应性的自动负载测试工具,它能预测系统行为,优化性能。Loadrunner强调的是对整个企业应用架构进行测试,它通过模拟实际用户操作行为和实行实时性能监测,来帮助客户更快的确认和查找问题Loadrunner结构:Loadrunner主要包含以下功能模块:VirtualUserGenerator:虚拟用户生成器,简称VuGen用来录制使用者的操作,建立虚拟用户脚本。Controller:压力控制器。整个压力的控制中心,用来管理、设计驱动以及监控压力场景LoadGenerator:压力产生器。执行虚拟使用者脚本以产生虚拟用户,对被测系统发出请求和接收响应,模拟实际的负载。Analysis:结果分析器。通过测试结果数据用来分析压力测试结果Lanucher:提供一个集中的界面,启动LR所有的模块Loadrunner原理数据库服务器Web服务器4.测试结果被搜集及保存起来供分析控制器1.Controller起到调度压力测试并管理监控器2.模拟大量的真实用户生成压力.3.监控器实时捕获系统的性能状态性能监控器应用服务器虚拟用户生成器5.产生性能分析报告被测系统数据库服务器Web服务器4.测试结果被搜集及保存起来供分析控制器1.Controller起到调度压力测试并管理监控器2.模拟大量的真实用户生成压力.3.监控器实时捕获系统的性能状态性能监控器应用服务器虚拟用户生成器5.产生性能分析报告被测系统并发:指在某一时刻(某秒)多用户同时向服务器提交请求。即在1秒钟内服务器能同时正确响应的用户请求,一般用线程来模拟实际用户的并发请求。并发用户:指在性能集合点并发执行事务的用户。最大并发用户数:系统已不能正确响应超过5%并发事务时的最大虚拟用户数。在线用户:指用户登录系统后,一直未退出系统或用户处于活动状态。虚拟用户:通过执行测试脚本模仿真实用户与被测系统进行通信的用户。事务(交易):完成一定功能的单个或多个操作处理过程就是一个事务。集合点:即并发操作点,就是多用户同时向服务器提交请求的操作点。响应时间:从客户端发出请求开始到服务器成功响应,并返馈到客户端为止的这段时间。LoadRunner:是一种预测系统行为和性能的工业标准级负载测试工具。后面具体介绍。场景:LoadRunner的专门术语,是所有测试资源包括测试脚本、运行设置、运行用户数等的集合。在这个场景中,可以定义并发用户的数目,定义要运行的脚本,或者说运行的流程类型。在一个场景中,可以是单个流程,也可以是多个流程的组合。HitsPerSecond:点击次数——每秒用户对WebServer端的HTTP请求数。AverageThroughput(Bytes/sec):从WEBServer上接收到的数据量的值(网络总吞吐量)——该值随用户数的增加而增加以确定网络速度满足需求AverageTransactionResponseTime(sec):平均事务响应时间——系统成功处理一个事务的平均响应时间。TransactionPerSecond(TPS):每秒成功处理的事务数,即交易率。AvailableMBytes(Memory):服务器的可用物理内存15%%ProcessorTime(Processor_Total):服务器的CPU利用率85%测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告测试需求分析主要有以下的几个关键点:测试的目的是什么性能符合性验证:验证是否满足应用的需要。性能能力验证:确定性能极限、是否存在性能瓶颈。性能调优:对系统的性能进行调试、优化。测试要素分析:阅读需求规格说明书:响应时间等系统架构(项目经理、技术经理、开发人员)用户数量、用户分布测试执行的功能—原则数据量硬件环境(包括网络环境)软件环境现场环境评估测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告测试目的不同,则相应的测试策略不同。性能符合性验证—负载测试、疲劳强度测试。性能能力验证—压力测试、疲劳强度测试。性能调优—测试-调整-测试。负载测试、压力测试、疲劳强度测试、组合业务测试。测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告测试需求测试策略测试场景测试环境测试准备人员及时间安排问题与对策测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告搭建测试环境(…)录制脚本、编辑脚本布置测试场景执行测试场景测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告性能符合性验证:查看测试结果是否满足要求,比如响应时间、资源利用率、吞吐量等等。性能能力验证:记录软件系统的性能变化曲线。对于确定是否存在性能瓶颈,首先判断是否存在硬件(包括网络)瓶颈问题,若不存在硬件瓶颈问题,则按照应用软件到系统软件(应用服务器、数据库服务器、操作系统)的顺序进行分析,确定瓶颈点。性能调优:同性能能力验证确定性能瓶颈分析方法。内存分析方法1.首先查看可用内存(Memory\AvailableMbytes)计数器指标。若值较小则可能有内存问题,需进一步分析。2.注意Pages/sec、PagesRead/sec和PageFaults/sec计数器的值。Pages/sec和PageFaults/sec的值持续很高,很可能内存问题,若PagesRead/sec的值超过5,则可判断存在内存问题。3.根据PhysicalDisk计数器的值分析性能瓶颈。如果磁盘的AverageDiskQueueLength计数器增加的同时PagesRead/sec并未降低,则可判断内存有问题。处理器分析方法1.首先查看System\%TotalProcessorTime计数器的值。该值体现的是CPU的平均利用率,若超过90%,则说明存在处理器方面的瓶颈。2.其次查看每个CPU的Processor\%UserTime计数器的值。若应用服务器的%UserTime值较大,可以考虑是否能通过算法优化等方法降低这个值。若数据库服务器的%UserTime值较大,可考虑对数据库系统进行优化。3.查看System\ProcessorQueueLength计数器的值。当该值大于CPU数量的总数+1时,说明存在处理器方面的问题。磁盘I/O分析方法1.查看%DiskTime计数器的值。该值较大,则可能存在磁盘瓶颈问题。2.与Processor\PrivilegedTime合并进行分析。若%DiskTime值较大,而Processor\PrivilegedTime的值适中,则可判断存在磁盘问题。若Processor\PrivilegedTime较大,持续超过80%,则可能是内存泄漏。3.根据Disksec/Transfer进行分析。该值超过60ms,则磁盘存在问题。网络分析方法1.查看NetworkInterface\BytesTotal/sec计数器的值。用BytesTotal/sec计数器的值和网络的带宽进行比较,若超过50%,则说明网络存在性能瓶颈问题。软件瓶颈分析方法分析事务响应时间、吞吐量,确定是否存在性能问题,若发现存在性能问题,则找出响应时间不符合要求或者出现多个失败的事务,对其进行分解,然后对其进行网页细分,以确定影响性能的元素。测试需求分析制定测试策略制定测试方案执行测试方案测试结果分析编写测试报告测试指标:描述与测试场景对应的事务平均响应时间、事务吞吐率、资源消耗指标、运行的用户数等信息。结果分析与总结:根据测试目标,描述最后分析得到的结果,并给出相应的建议。性能测试不比功能测试,应制定性能测试方案性能测试应尽早开展测试目标设计要科学合理,不能想当然不要在服务器上进行性能测试性能场景监视很关键,要选取合适的性能计数器测试分析不应只看表面现象,要分析关联指标一定要花时间找出系统瓶颈,并尽早优化优化后的系统一定要回归测试,验证优化效果熟悉常见协议、技术手工演示以下内容:制定负载测试计划开发测试脚本创建运行场景运行测试监视场景分析测试结果一VuGen1录制基本用户脚本2完善测试脚本(插入事务,集合点)3Run-Timesetting4单机执行脚本二场景1创建运行场景三分析结果1如何添加并监控操作系统资源2如何生成报告(word\html等格式)3如何查看更多的计数器及结果