高级性能测试经典学习文档.ppt
1,高级性能测试,2,课程内容介绍,测试策略制定测试结果指标分析测试典型案例分析 测试技术讨论测试工具的使用技巧,3,测试策略制定,概念测试计划测试流程包括哪些步骤测试要达到什么目的选择什么协议进行测试如何编写一个完整的测试方案 测试指标包括哪些内容自动化负载压力测试策略,4,测试结果指标分析,客户端负载压力指标 服务器资源使用指标网络监控指标,5,测试典型案例分析,系统故障定位与分析数据库服务器典型性能调优与评估Oracle数据库性能调优案例测试经验交流,6,测试工具的使用技巧,负载压力测试工具:LoadRunner8.0功能回归测试工具:WinRunner7.6测试管理工具:TestDirector8.0,7,性能测试,系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等,我们这里重点讨论的负载压力是系统性能的一个重要方面。性能测试用来保证产品发布后系统的性能满足用户需求。性能测试在软件质量保证中起重要作用。,8,负载测试,负载测试是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。负载测试通常描述一种特定类型的压力测试,即增加用户数量以对应用程序进行压力测试。,9,压力测试,压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。,10,负载压力测试,负载压力测试是性能测试的重要组成部分,负载压力测试包括:并发性能测试(重点)疲劳强度测试大数据量测试,11,负载压力测试,12,负载压力测试,并发性能测试 考察客户端应用的性能,测试的入口是客户端并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。,13,负载压力测试,疲劳强度测试 通常是采用系统稳定运行情况下能够支持的最大并发用户数或 者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。,14,负载压力测试,大数据量测试 大数据量测试的两种类型 独立的数据量测试 针对某些系统存储、传输、统计、查询等业务进行大 数据量测试 综合数据量测试 和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案,15,测试计划,分析应用程序 定义测试目标 计划方案实施检查测试目标,16,制定测试计划的目的,构建能够精确地模拟您的工作环境的测试方案。了解测试需要的资源。以可度量的指标定义测试成功条件。,17,分析应用程序,确定系统组件描述系统配置 分析使用模型 任务分布,18,确定系统组件,客户机、网络、中间件和服务器,19,描述系统配置,连接到系统的用户数应用程序客户端计算机的配置情况(硬件、内存、操作系统、软件、开发工具等)使用的数据库和Web 服务器的类型(硬件、数据库类型、操作系统、文件服务器等)服务器与应用程序客户端之间的通信方式前端客户端与后端服务器之间的中间件配置和应用程序服务器可能影响响应时间的其他网络组件(调制解调器等),20,分析使用模型,考虑哪些用户使用系统每种类型用户的数量每个用户的典型任务,21,任务分布,确定数据库活动峰值期的发生时间负载峰值期间的典型活动,22,定义测试目标,23,定义测试目标,以可度量的指标制定目标确定测试的时间,24,确定测试的时间,25,计划方案实施,定义性能度量的范围定义Vuser活动 选择Vuser 选择测试硬件和软件,26,定义性能度量的范围,度量应用程序中不同点的响应时间。根据测试目标确定在哪里运行虚拟用户运行哪些虚拟用户,27,应用程序中不同点的响应时间,度量端到端的响应时间:,28,应用程序中不同点的响应时间,度量网络和服务器响应时间:,29,应用程序中不同点的响应时间,度量GUI 响应时间:GUI 响应时间=端到端响应时间-网络和服务器响应时间,30,应用程序中不同点的响应时间,度量服务器响应时间:,31,应用程序中不同点的响应时间,度量中间件到服务器的响应时间:,32,选择Vuser,33,选择测试硬件和软件,硬件和软件应该具有强大的性能和足够快的运行速度,以模拟所需数量的虚拟用户。,34,检查测试目标,度量最终用户响应时间 定义最优的硬件配置 检查可靠性 确定瓶颈 度量系统容量,35,定义最优的硬件配置举例,例如,您可以设置三种不同的服务器配置,并针对各个配置运行相同的测试,以确定性能上的差异:.配置1:200MHz、64MB RAM.配置2:200MHz、128MB RAM.配置3:266MHz、128MB RAM,36,检查可靠性举例,确定系统在连续的高工作负载下的稳定性级别。强制系统在短时间内处理大量任务,以模拟系统在数周或数月的时间内通常会遇到的活动类型。,37,确定瓶颈举例,您可以运行测试以确定系统的瓶颈,并确定哪些因素导致性能下降,例如,文件锁定、资源争用和网络过载。,38,度量系统容量举例,查看现有系统中性能与负载间的关系,并确定出现响应时间显著延长的位置“拐点”。可以确定是否需要增加资源以支持额外的用户。,39,测试流程步骤,测试需求分析 测试案例制定 测试环境、工具、数据准备 测试脚本录制、编写与调试负载压力场景制定 测试执行 结果分析与定位问题 测试报告与测试评估,40,测试目的,在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况预见系统负载压力承受力,在应用实际部署之前,评估系统性能 帮助软件厂商或用户分析系统瓶颈、优化系统,41,测试目的,实现目的的测试方法:性能检测 性能调优,42,性能检测,在真实生产环境下,检测系统性能,评估并报告整个系统的性能和健壮情况检查服务等级的满足情况对系统的未来容量作出预测和规划,43,性能调优,查找系统瓶颈的根本原因评估性能调整的效果在测试环境下再现性能问题,44,选择测试协议,客户端与直接压力承受的服务器之间的通讯协议是选择测试协议的唯一标准,45,测试协议,Client/Server:MS SQL,ODBC,Oracle(2-tier),DB2 CLI,Sybase Ctlib,Sybase Dblib,infomix,Windows Sockets及DNS定制:C templates,Visual Basic templates,Java templates,Javascript 及 VBscript.分布式组件:COM/DCOM,Corba-Java,及Rmi-Java.E-business:FTP,LDAP,Palm,SOAP,Web(HTTP/HTML),及the dual Web/Winsocket.Enterprise Java Beans:EJB Testing及Rmi-Java.Legacy:Terminal Emulation(RTE).Mailing Services:Internet Messaging(IMAP),MS Exchange(MAPI),POP3,及SMTP.Middleware:Jacada及Tuxedo(6,7).Streaming:MediaPlayer及RealPlayer.Wireless:i-Mode,VoiceXML,及WAP,46,编写一个完整的测试方案,应用在客户端性能的测试 应用在网络上性能的测试 应用在服务器上性能的测试一个测试方案的例子一个测试计划的例子,47,测试指标,客户端交易处理性能指标 服务器资源监控,例如:UNIX数据库资源监控,例如:OracleWeb服务器监控,例如:Apache中间件监控,例如:TUXEDO等等,48,自动化负载压力测试,利用或开发负载压力测试的自动化测试方法,包括:程序、工具、流程等等。,49,自动化负载压力测试优势,50,选择自动化负载压力测试方法,利用自动化负载压力测试工具 开放资源(OpenSource)测试 自主开发代码测试,51,自动化负载压力测试概念,通过在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,对应用程序进行测试,通过可重复的、真实的测试能够彻底地度量应用的性能,确定问题所在。工程项目实践证明,其测试结果与实际情况完全符合。,52,自动化负载压力测试实现机制,自动负载测试,53,自动化负载压力测试工具,LoadRunner美国Mercury Interactive公司QALoad美国Compuware(康博)公司Rational Robot 美国IBM公司SILK PERFORMER V 美国Segue 公司Benchmark Factory美国Quest软件公司WAS美国Mcrosoft 公司,54,自动化负载压力测试工具,自动化负载压力测试工具对比,55,自动化负载压力测试工具选择依据,模拟您的客户机运行多个模拟的客户机 脚本化执行并能编辑脚本 支持会话 可配置的用户数量 报告成功、错误和失败,56,自动化负载压力测试工具缺陷,缺乏功能点的校验对有些控件支持得不好不能达到真实模拟负载脚本的支持不够灵活报错定位不够详细,57,自动化负载压力测试工具盲点,在负载测试中,不进行功能校验,就是当功能错误发生时,测试工具不能够记录产生的功能性错误,这就忽略了负载压力情况下的功能不稳定问题。在负载压力测试过程中记录所有虚拟用户的操作及服务器的响应是当前负载压力测试技术发展的最大挑战。但测试过程中的附加记录会导致资源消耗、操作行为增加以及产生大量日志等问题。,58,开放资源(OpenSource)测试,开放系统测试体系OpenSTA)TestMaker()Apache JMeter(http:/jakarta.apache.org/jmeter/),59,开发测试工具举例,Web服务器通用性能测试系统的设计与实现实际系统由四部分组成:模板文件数据文件性能测试程序结果处理程序,60,开发测试工具举例,系统结构示意图,61,开发测试工具举例,主流程图,62,开发测试工具举例,通用应用系统性能评测环境设计,63,开发测试工具举例,通用应用系统性能评测环境设计,64,开发测试工具举例,通用应用系统性能评测环境设计,65,开发测试工具举例,通用应用系统性能评测环境设计,66,测试结果指标分析,客户端负载压力指标为了完成一个任务,用户对应用程序执行的一组操作,例如登陆一个Web站点、搜索一个飞机票信息、在网上买一本书等等。虚拟并发用户数(Total Virtual Users)交易响应时间(Response Time)每分钟交易数(Trans Rate)吞吐量图(ThroughOut),67,测试结果指标分析,客户端负载压力指标-交易处理指标.平均事务响应时间图.每秒事务数图.每秒事务总数.事务摘要图.事务性能摘要图.事务响应时间(负载下)图.事务响应时间(百分比)图.事务响应时间(分布)图,68,测试结果指标分析,客户端负载压力指标-Web请求指标.每秒点击次数图.点击次数摘要图.吞吐量图.吞吐量摘要图.HTTP 状态代码摘要图.每秒HTTP 响应数图.每秒下载页面数图.每秒重试次数图.重试次数摘要图.连接数图.每秒连接数图.每秒SSL 连接数图,69,测试结果指标分析,客户端负载压力指标-Web页面组件指标.激活网页细分图.页面组件细分图.页面组件细分(随时间变化)图.页面下载时间细分图.页面下载时间细分(随时间变化)图.第一次缓冲细分时间图.第一次缓冲时间细分(随时间变化)图.已下载组件大小图,70,测试结果指标分析,服务器资源使用指标-UNIX,71,测试结果指标分析,服务器资源使用指标-Windows2000 Server,72,测试结果指标分析,服务器资源使用指标-Windows2000 Server(续),73,测试结果指标分析,服务器资源使用指标-Windows2000 Server(续)看一个例子,74,测试结果指标分析,服务器资源使用指标-数据库SQLServer,75,测试结果指标分析,服务器资源使用指标-中间件Tuxedo,76,测试结果指标分析,网络监控指标:吞吐量容量(信道容量或带宽)利用率最优利用率可提供负载有效率延迟延迟变化量响应时间,77,测试典型案例分析,系统故障定位与分析最难的问题,78,系统瓶颈分析举例,经验举例1交易的响应时间如果很长,远远超过系统性能需求,表示耗费CPU的数据库操作,例如排序,执行aggregate functions(例如sum、min、max、count)等较多,可考虑是否有索引以及索引建立的是否合理;尽量使用简单的表联接;水平分割大表格等方法来降低该值。,79,系统瓶颈分析举例,经验举例2分段排除错误。测试工具可以模拟不同的虚拟用户来单独访问Web服务器、应用服务器和数据库服务器,这样,就可以在Web端测出的响应时间减去以上各个分段测出的时间就可以知道瓶颈在哪并着手调优。,80,系统瓶颈分析举例,经验举例3UNIX资源监控(NT操作系统同理)中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。“Swap in rate”和“Swap out rate”也有类似的解释。,81,系统瓶颈分析举例,经验举例4UNIX资源监控(NT操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。合理使用的范围在60%至70%。,82,系统瓶颈分析举例,经验举例5UNIX资源监控(NT操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统、重新部署业务逻辑等,另外设置Tempdb in RAM,减低max async IO,max lazy writer IO等措施都会降低该值。,83,系统瓶颈分析举例,经验举例6Tuxedo资源监控中指标队列中的字节数(Bytes on queue),队列长度应不超过磁盘数的1.52倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。,84,系统瓶颈分析举例,经验举例7SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。,85,优化调整设置,CPU问题:考虑使用更高级的CPU代替目前的CPU对于多CPU,考虑CPU之间的负载分配考虑在其它体系上设计系统,例如增加前置机、设置并行服务器等。,86,优化调整设置,内存和高速缓存内存的优化包括操作系统、数据库、应用程序的内存优化。过多的分页与交换可能降低系统的性能内存分配也是影响系统性能的主要原因保证保留列表具有较大的邻接内存块调整数据块缓冲区大小(用数据块的个数表示)是一个重要内容将最频繁使用的数据保存在存储区中,87,优化调整设置,磁盘(I/O)资源问题磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能磁盘镜像会减慢磁盘写的速度通过把日志和数据库对象分布在独立的设备上可以提高系统的性能把不同的数据库放在不同的硬盘上,可以提高读写速度。经常把数据库、回滚段、日志放在不同的设备上把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快,88,优化调整设置,调整配置参数包括操作系统和数据库的参数配置并行操作资源限制的参数(并发用户的数目、会话数)影响资源开销的参数与I/O有关的参数,89,优化调整设置,优化应用系统网络设置可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样做效率较高调整会话数据单元的缓冲区大小共享服务进程比专用服务进程提供较好的性能,90,故障定位与分析,一个测试实例,91,测试典型案例分析,数据库服务器典型性能调优与评估,92,数据库服务器典型性能问题,数据库服务器性能问题及原因分析 单一类型事务响应时间过长 数据库服务器负载 糟糕的数据库设计 事务粒度过大 批任务对普通用户性能的影响 并发处理能力差 锁冲突严重 资源锁定造成的数据库事务超时 数据库死锁,93,数据库服务器典型性能问题,数据库性能问题的一般解决办法 监视性能相关数据;定位资源占用较大的事务并做出必要的优化或调整;定位锁冲突,修改锁冲突发生严重的应用逻辑;对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布。,94,Oracle与提高性能有关的特性,索引并行执行簇与散列簇分区多线程服务器同时读取多块数据,95,Oracle配置的关键参数,MAX_DSPATCHERS:这个参数指定了系统允许同时进行的调度进程的最大数量。MAX_SHARED_SERVERS:这个参数指定了系统允许同时进行的共享服务器进程的最大数量。如果系统中出现的人为死锁过于频繁,那么管理员应该增大这个参数的值。PARALLEL_ADAPTIVE_MULTI_USER:当这个参数的值为TRUE时,系统将启动一个能提高使用并行执行的多用户系统性能的自适应算法。这个算法将根据查询开始时的系统负载自动降低查询请求的并行度。,96,Oracle配置的关键参数,PARLLEL_MIN_SERVERS:这个参数指定了实例并行执行进程的最小数量。其值就是实例启动时Oracle创建的并行执行进程数。PARLLEL_THREADS_PER_CPU:这个参数指定了实例默认的并行度和并行自适应以及负载平衡算法。它指明了并行执行过程中一个CPU能处理的进程或线程数。PARTITION_VIEW_ENABLED:这个参数指定了优化器是否使用分区视图。Oracle推荐用户使用分区表(这是在Oracle8之后引入的)而不是分区视图。分区视图只是为了提供Oracle的后向兼容性。REVOVERY_PARALLELISM:这个参数指定了恢复数据库系统时使用的进程数。,97,Oracle的索引,索引和降低系统处理的数据量 索引和更新 在字段选择性很低的情况下适用索引,98,Oracle的并行执行特性,RDBMS的绝大多数操作都可分为以下3类:被CPU限制的操作:这类操作的速度和单CPU运行速度一样。通过并行化操作,多个CPU可并行处理系统负载,因此可以更快完成该操作。被I/O限制的操作:这类操作花了绝大部分时间等待系统完成I/O操作。当系统中同时出现多个I/O请求时,绝大多数RAID控制器将很好工作。另外,当一个线程需要等待完成I/O操作时,可充分利用CPU来处理另一线程的CPU部分。被竞争限制的操作:并行处理不能改善由资源竞争所限制的操作。,99,Oracle的并行执行特性,应当首先根据如下一些因素考虑并行度:计算机的CPU能力:CPU的数量和能力将影响系统能运行的查询进程数量。系统处理大量进程的能力:一些操作系统能处理很多并发进程,而另一些操作系统则没有这方面的能力。系统负载:如果系统现在的运行已经达到了极限,那么对并行度的调整不会有太大效果。如果系统运行已达其能力极限的90%,那么太多的查询进程将使系统不堪重负。系统处理的查询数量:如果系统的大部分操作是更新操作,但仍有少量的重要查询存在,那么开发人员可能希望系统运行多个查询进程。系统的I/O能力:如果磁盘上的数据是分片或是使用磁盘阵列存储的,那么系统能够处理多个并行查询。操作类型:系统是否需要处理很多的全表扫描或排序?并行查询服务器非常有助于这类操作。,100,Oracle的并行执行特性,并行查询处理 并行创建索引 并行加载数据 并行恢复,101,Oracle的并行执行特性,关于并行度的一些建议:诸如排序之类的需要大量CPU资源的操作应当采用较低的并行度。其原因是这类受限于CPU的操作已经充分利用了CPU,而不需等待系统的I/O操作。诸如全表扫描之类的需要大量磁盘I/O的操作应当采用较高的并行度。需要等待磁盘I/O的操作越多,系统就越能受益于并行操作。如果系统中有大量的并发进程,那么应当采用较低的并行度。因为太多的进程将使系统不堪重负。,102,Oracle的簇与散列簇,有利 不利,103,Oracle的同时读取多块数据,当系统执行表扫描时,Oracle具备同时读取多个数据块的能力,这种能力提高了系统的I/O速度。通过同时读取多块数据,Oracle能够从磁盘上读取更大的数据块,从而避免了对磁盘上数据进行搜索的操作。通过降低磁盘搜索和读取更大的数据块,可以降低系统的I/O开销和CPU开销。,104,Oracle的分区,分区方案:Range Partitioning:这种方案根据数据的范围,比如月、年等等对表中的数据进行分区。List Partitioning:这种方案和Range Partitioning分区方案很类似,但这种方案是按照数据的值而不是数据的范围来进行分区划分的。Hash Partitioning:这种分区方案使用散列函数来实现对数据的自动分区。Sub-Partitioning:这种方法就是开发人员熟悉的复合分区方法。这种方法允许开发人员同时使用多种分区方案。,105,Oracle的分区,分区有以下几方面的好处:对能被分区的大尺寸表进行扫描时,分区可降低I/O操作和CPU的使用率。可在分区的层次上而不是表的层次上加载数据。能以删除分区的方式删除数据,而不必使用SELECT语句来删除大量数据。对用户和应用程序而言,分区是完全透明的。可在分区层次上而不是在表层次上维护数据。,106,Oracle的多线程服务器,用户可通过专用服务器进程连接到Oracle实例,也可以通过多线程服务器进程连接到Oracle实例。因为每一个专用服务器进程都将占用大量内存资源和系统资源,所以有必要对多用户连接采用多线程服务器进程。多线程服务器进程允许多个用户使用一定数量的共享服务器进程。共享服务器进程使用共享缓冲池对用户请求进行排队并返回数据,从而大大减少CPU和内存的使用。,107,测试典型案例分析,硬件配置与系统性能测试实例,108,测试典型案例分析,服务器集群与系统性能测试实例,109,案例测试经验交流,负载均衡与系统性能测试实例,110,案例测试经验交流,负载均衡基础知识负载均衡策略:静态方式、动态方式:负载均衡针对的应用负载均衡记录文件用户表回话保持概念回话保持方式负载均衡器布置,111,测试典型案例分析,案例测试经验交流,112,案例测试经验交流,一个文档、邮件接收与发送系统:业务“下传文档”录制不全,本地保存与打开不能够录制上。Weblogic监控需要做的准备工作是系统不能登陆,IE问题Windows 2000 Server的资源监控把握3个重点Unix资源监控,如果LoadRunner无法监控 7.5的license加到7.8上,出现监控counter全部丢失的现象在结果文件analysis中直接可以得到excel格式的结果,113,案例测试经验交流,一个多媒体处理系统:出现业务“登陆”无法并发的现象“登陆”无法并发并不影响后面交易的并发执行采用correlation技术实现压力对于“查询”操作验证检查结果是否正确。QALoad和LoadRunner所录的脚本不一致QALoad所录脚本并发,交易都成功,但报400及500错误,114,案例测试经验交流,一个打扫码信息处理系统:Winsock连接要考虑是否有必要做并发性能测试?还是需要做疲劳测试?默认的分析中thinktime时间没有去掉加压前系统的性能指标应该关注,否则没有参考依据,例如CPU、内存、Disk I/O等。指标Disk Time在磁盘阵列时失效,其值大于100,应注意监控“idle time”指标。,115,案例测试经验交流,一个工作流系统的选型测试:测试数据的准备集群的验证,116,案例测试经验交流,一个税务测试:1.关闭视图降低系统的交易平均响应时间;2.并发测试过程中,当大规模并发时候,出现服务器拒绝连接的情况,connection refused(10061),被测试系统为WEBLOGIC应用服务器,调整weblogic配置参数backlog的值,可以克服该问题;3.索引使用不当;4.代理的吞吐能力影响并发用户数,117,案例测试经验交流,一个IC卡处理系统:中间件客户端连接数队列阻塞问题数据库优化选项问题负载均衡问题,118,案例测试经验交流,工具不能支持的被测对象:Oracle FormSMTPSSLNC,119,案例测试经验交流,负载压力性能指标的区别(CPU):LoadRunnerVmstat命令Iostat命令Mpstat命令Top命令,120,案例测试经验交流,不同的工具监控性能指标(CPU):最大并发用户数最大连接数最大在线用户数最大注册用户数,121,测试案例介绍,并发性能测试几个应用实例 实例1:计费帐务系统V3.0 测试类型:并发、疲劳 系统运行模式:三层结构中间件TUXEDO、数据库服务器操作系统UNIX、数据库Oracle 监测的测试指标包括:交易处理性能、UNIX资源、TUXEDO资源 并发用户数:50 测试工具:解决的问题:业务执行平均响应时间在100秒左右,经过调优后,平均响应时间降为10秒 例图如下,122,测试案例介绍,销帐,并发用户数50,平均响应时间,123,测试案例介绍,实例2:加油IC卡试点工程核心软件V2.0 测试类型:并发 系统运行模式:发卡网点子系统采用三层结构的运行模 式,零管子系统采用C/S运行模式。中间件TUXEDO、数据库服务器操作系统UNIX、数据库Sybase 监测的测试指标包括:交易处理性能、UNIX资源、TUXEDO资源 并发用户数:销售信息查询100,单用户卡充值170 测试工具:QALoad、LoadRunner,124,测试案例介绍,实例2:加油IC卡试点工程核心软件V2.0(续)解决的问题:销售信息查询,当记录条数达到1000000时,系统在15分钟内无任何响应。经分析确定为系统数据库的架构存在问题。例图如下:,125,测试案例介绍,1100用户 250用户 330用户 420用户 510用户,126,测试案例介绍,实例3:高速公路联网收费系统V1.1 测试类型:并发、疲劳系统运行模式:该软件为C/S结构,数据库Informix7.3,中间件(自行开发)Winsock,各级服务器均为IBM系列服务器监测的测试指标包括:UNIX资源并发用户数:100测试工具:QALoad、LoadRunner解决的问题:CPU占用率基本保持在65,在并发用户数为100,交易数为100的情况下达到82%,最大值达到90以上。可见CPU占用率将来有可能会成为系统瓶颈疲劳测试丢失数据763条,中间件的稳定性有待进一步提高 例图如下:,127,测试案例介绍,0309100_05F:虚拟用户数100 0309100_060:虚拟用户数100309100_061:虚拟用户数30 0309100_062:虚拟用户数50图:入口车道往结算中心上传交易响应时间分布图,128,测试案例介绍,实例4:多媒体数据库 V1.0 测试类型:并发、疲劳系统运行模式:B/S运行模式,三层结构,web服务器为Apache,后台各服务器操作系统为UNIX或者Linux,数据库为Oracle监测的测试指标包括:UNIX(Linux)、Oracle以及Apache资源并发用户数:200测试工具:QALoad、LoadRunner解决的问题:当并发用户数超过200时,监控到HTTP 500、connect以及超时错误,且web服务器报内存溢出错误,系统应进一步提高性能,以支持更大并发用户数。例图如下:,129,测试案例介绍,130,测试案例介绍,实例5:业务流程管理平台V1.0 测试类型:并发、疲劳系统运行模式:B/S运行模式,三层结构,web服务器为WebSphere,后台各服务器操作系统为Windows2000 Server,数据库为DB2监测的测试指标包括:数据库服务器、应用服务器、Web服务器的network interface、Windows2000 Server performance、数据库DB2、WebSphere等资源并发用户数:500测试工具:QALoad、LoadRunner解决的问题:并发用户数为500时的系统交易响应时间在不可接受的范围内,数据库服务器的资源占用预计会成为系统运行瓶颈。例图如下:,131,测试案例介绍,1.业务:wokflow,总并发用户数:100;2.业务:wokflow,总并发用户数:300;3.业务:wokflow,总并发用户数:500;4.业务:homepage,总并发用户数:100;5.业务:homepage,总并发用户数:300;6.业务:homepage,总并发用户数:500;7.业务:mail,总并发用户数:100;8.业务:mail,总并发用户数:300;9.业务:mail,总并发用户数:500;10.业务:mailsend,总并发用户数:100;11.业务:mailsend,总并发用户数:300;12.业务:mailsend,总并发用户数:500,132,测试工具上机实习,负载压力测试工具:LoadRunner7.8上机实习内容:BSCS自己开发测试脚本资源监控,133,测试工具的使用技巧,面向目标的测试方案参数池技术 将事务插入到Vuser脚本 将集合点插入到Vuser脚本 动态数据关联 IP数据池 Web站点经验点滴 脚本调试技术 测试工具配置技巧 加载GUI脚本Oracle故障诊断特殊的测试类型,134,面向目标的测试方案,虚拟IP数据池用户目标类型 每秒点击次数、每分钟页面数或每秒事务数 事务响应时间目标类型,135,参数池技术(1),136,参数池技术(2),137,Manual Correlation,提问:系统的输出值需要为后续操作提供输入:系统产生的SessionID;每次访问Web页面的动态URL;表单提交期间录制的Field(有时会隐藏)这些值只对当前会话有效。解决办法:从一个操作步骤中扑捉输出值该值用于另一个步骤的输入,138,Manual Correlation,这里我们提供几种关联数据的方法:手工关联录制结束后自动关联录制过程中自动关联,139,Manual Correlation,在Vuser脚本中关联动态数据步骤:确定需要扑捉的值找到所扑捉值的左右边界标识符决定应该使用哪个边界将函数web_reg_save_param加入脚本在函数中加入参数名称、左边界标识符、右边界标识符以及函数事件在每次脚本运行时参数化动态数据校验执行结果,140,IP数据池,运行负载生成器上的“IP 向导”添加指定数量的IP 地址。为UNIX 负载生成器计算机手动配置新的IP 地址。重新启动计算机。如有必要,用新地址来更新服务器的路由表。在Controller 中启用这项功能。,141,Web应用测试,测试策略 设计测试 开发测试应用测试,142,Web应用测试策略,按系统架构:客户端测试、网络上测试、服务器端测试按面向对象:功能测试、服务测试、安全测试、数据库测试按质量特性:功能测试、性能测试、安全性测试、兼容性测试和易用性测试按开发阶段:设计测试、开发测试、运行测试,143,Web应用设计测试,总体架构设计的测试客户端设计的测试服务器端设计的测试,144,Web应用总体架构设计的测试,采用瘦客户端或胖客户端是否适合需求确定Web架构的组成部分是否满足需求服务器的配置及分布是否满足需求,145,Web应用总体架构设计的测试,146,Web应用客户端设计的测试,功能设置信息组织结构设计 页面设计,147,Web应用服务器端设计的测试,功能设置容量规划安全系统设计 数据库设计,148,Web应用开发测试,代码测试组件测试服务器端设计的测试,149,Web应用运行测试,功能测试易用性测试负载压力测试客户端配置与兼容性测试安全性测试,150,Web应用安全性测试,部署与基础结构输入验证身份验证授权配置管理敏感数据回话管理加密参数操作异常管理审核与日值记录,151,Web站点经验点滴,在执行客户端并发性能测试的过程中,需要同时监控数据库服务器、Web服务器以及网络资源等使用情况,以便对系统的性能做全面评估 录制脚本和手工编写脚本相结合 设置数据池,实现变量加载业务批量执行,152,Web站点经验点滴,模拟用户数的递增 合理设置交易之间时间间隔 模拟IP地址变量的技术 超时(timeout)的设置 并发用户连续执行交易数的设置 错误处理,153,Web站点经验点滴,利用QALoad的ActiveData技术采用复合交易测试方案尽量将执行负载测试的机器合理分布 并发用户数量极限点加压机器的CPU使用率也有必要监控 设置并发点 HTML与URL录制方式,154,脚本调试技术,Winsock并发性能测试 关键技术:在脚本中如何用变量来代替定值,即处理Winsock应用程序数据流。看看下面的实例脚本!,155,原始脚本PLAYER_INFO*s_info;/*Declare Variables*/SET_ABORT_FUNCTION(abort_function);DEFINE_TRANS_TYPE(wsk-AdvancedTech_1.c);/Checkpoints have been included by the convert processDefaultCheckpointsOn();DO_WSK_Init(s_info);SetTimeout(20);/*Wait up to 20 seconds for eachexpected pattern*/SYNCHRONIZE();BEGIN_TRANSACTION();DO_WSK_Socket(S1,AF_INET,SOCK_STREAM,IPPROTO_IP);DO_WSK_Bind(S1,ANY_ADDR,ANY_PORT);DO_WSK_Connect(S1,172.22.24.125,2100,AF_INET);/The session id returned by the server is/unique to each connection/*21bytes:SessionID=jrt90847rn*/DO_WSK_Expect(S1,n);/This unique id is then used for subsequent/requests/*34 bytes*/DO_WSK_Send(S1,SessionID=jrt90847rn:BBA);/*15 bytes:ID Accepted#rn*/DO_WSK_Expect(S1,n);DO_WSK_Closesocket(S1);END_TRANSACTION();REPORT(SUCCESS);EXIT();return(0);,156,修改后的脚本PLAYER_INFO*s_info;/*Declare Variables*/char Buffer64;char SendBuffer64;int nBytesReceived=0;SET_ABORT_FUNCTION(abort_function);DEFINE_TRANS_TYPE(wsk-AdvancedTech_1.c);/Checkpoints have been included by the convert processDefaultCheckpointsOn();DO_WSK_Init(s_info);SetTimeout(20);/*Wait up