510 likes | 704 Views
软件性能测试. 山东省软件评测中心 www.sdstc.net 韩明军 hanmj@keylab.net 2006年10月. 内容概要. 1. 性 能 测 试 介 绍 2. 性 能 测 试 过 程 3. 性 能 测 试 举 例. 1. 性能测试介绍. 1.1 什么是软件性能 1.2 性能指标介绍 1.3 什么是性能测试 1.4 性能测试类型. 1.1 什么是软件性能. 系统的性能是个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。. 用户视角的软件性能
E N D
软件性能测试 山东省软件评测中心 www.sdstc.net 韩明军 hanmj@keylab.net 2006年10月
内容概要 • 1. 性 能 测 试 介 绍 • 2. 性 能 测 试 过 程 • 3. 性 能 测 试 举 例
1. 性能测试介绍 • 1.1 什么是软件性能 • 1.2 性能指标介绍 • 1.3 什么是性能测试 • 1.4 性能测试类型
1.1 什么是软件性能 系统的性能是个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。 • 用户视角的软件性能 • 管理员视角的软件性能 • 产品开发人员视角的软件性能
1.1 什么是软件性能 • 1.1.1 用户视角的软件性能 从用户角度来说,软件性能就是软件对用户操作的响应时间。
1.1 什么是软件性能 • 1.1.2 管理员视角的软件性能 系统的响应时间; 系统运行时服务器的状态,如CPU利用情况、内存使用情况等; 系统是否能够实现扩展; 系统支持多少用户访问; 系统性能可能的瓶颈在哪里; 系统是否支持7*24小时的业务访问。
1.1 什么是软件性能 • 1.1.3 产品开发人员视角的软件性能 用户关心的响应时间; 管理员关心的系统可扩展性等; 架构设计是否合理; 数据库设计是否合理; 代码是否存在性能方面的问题; 系统中是否有不合理的内存使用方式。
1.2 性能指标介绍 • 并发用户数 • 响应时间 • 吞吐量 • 资源利用率
1.2.1 并发用户数 • 并发用户数是指在某一给定时间内,某个特定点上进行会话操作的用户数。
1.2.2 响应时间 • 响应时间指的是客户端发出请求到得到响应的整个过程所经历的时间。
1.2.3 吞吐量 • 吞吐量是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。 一般来说,吞吐量用请求数/秒或页面数/秒来衡量,从业务的角度,吞吐量也可以用访问人数/天或处理的业务数/小时等单位来衡量。从网络的角度来说,也可以用字节数/天等单位来考察网络流量。
1.2.4 资源利用率 • 资源利用率是指系统资源的使用程度,比如服务器的CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。
1.3 什么是性能测试 • 性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行的一种测试。
1.4 性能测试类型 • 负载测试 • 压力测试 • 疲劳强度测试
1.4.1 负载测试 • 负载测试:主要用于描述常规的性能测试,通过模拟生产运行的业务压力和使用场景组合来测试系统的性能是否满足生产要求。 通俗的说,这种测试方法就是要在特定的运行条件下验证系统的能力状况。
1.4.2 压力测试 • 压力测试:对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收用户请求的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下应用程序的性能会变得不可接受。
1.4.2 压力测试 • 用户量压力测试 • 数据量压力测试
1.4.3 疲劳强度测试 • 疲劳强度测试通常是采用系统稳定运行情况下能够支持的最大并发用户数或 者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。 疲劳强度测试可以反映出系统的性能问题,例如内存泄漏等。
2. 性能测试过程 • 测试需求分析 • 制定测试策略 • 制定测试方案 • 执行测试方案 • 测试结果分析 • 编写测试报告
2.1 测试需求分析 • 测试需求分析主要有以下的几个关键点: • 测试的目的是什么 性能符合性验证:验证是否满足应用的需要。 性能能力验证:确定性能极限、是否存在性能瓶颈。 性能调优:对系统的性能进行调试、优化。
2.1 测试需求分析 • 测试要素分析: 用户数量 测试执行的功能 用户分布(即执行每种功能的用户数) 硬件环境(包括网络环境) 软件环境 数据量 • 其它分析 系统运行中所出现的问题有什么特征或规律 疲劳测试执行时间多少 性能需求的指标是什么等
2.2 制定测试策略 • 测试目的不同,则相应的测试策略不同。 性能符合性验证—负载测试、疲劳强度测试。 性能能力验证—压力测试、疲劳强度测试。 性能调优—测试-调整-测试。负载测试、压力测试、疲劳强度测试。
2.3 制定测试方案 • 测试需求 • 测试策略 • 测试场景 • 测试环境 • 测试准备 • 人员及时间安排 • 问题与对策
2.4 执行测试方案 • 搭建测试环境 • 录制脚本、编辑脚本 • 布置测试场景 • 执行测试场景
2.5 测试结果分析 • 性能符合性验证:查看测试结果是否满足要求,比如响应时间、资源利用率、吞吐量等等。 • 性能能力验证:查看测试结果是否满足要求,记录软件系统的性能变化曲线。 对于确定是否存在性能瓶颈,首先判断是否存在硬件(包括网络)瓶颈问题,若不存在硬件瓶颈问题,则按照应用软件到系统软件(应用服务器、数据库服务器、操作系统)的顺序进行分析,确定瓶颈点。 • 性能调优:同性能能力验证确定性能瓶颈分析方法。
2.5 测试结果分析 • 硬件瓶颈分析方法 内存分析方法 处理器分析方法 磁盘I/O分析方法 网络分析方法
2.5 测试结果分析 • 内存分析方法 1.首先查看可用内存(Memory\Available Mbytes)计数器指标。若值较小则可能有内存问题,需进一步分析。 2.注意Pages/sec、Pages Read/sec和Page Faults/sec计数器的值。 Pages/sec和Page Faults/sec的值持续很高,很可能内存问题,若Pages Read/sec的值超过5,则可判断存在内存问题。 3.根据Physical Disk计数器的值分析性能瓶颈。如果磁盘的Average Disk Queue Length计数器增加的同时Pages Read/sec并未降低,则可判断内存有问题。
2.5 测试结果分析 • 处理器分析方法 1.首先查看System\%Total Processor Time计数器的值。该值体现的是CPU的平均利用率,若超过90%,则说明存在处理器方面的瓶颈。 2.其次查看每个CPU的Processor\%User Time计数器的值。若应用服务器的%User Time值较大,可以考虑是否能通过算法优化等方法降低这个值。若数据库服务器的%User Time值较大,可考虑对数据库系统进行优化。 3.查看System\Processor Queue Length计数器的值。当该值大于CPU数量的总数+1时,说明存在处理器方面的问题。
2.5 测试结果分析 • 磁盘I/O分析方法 1.查看%Disk Time计数器的值。该值较大,则可能存在磁盘瓶颈问题。 2.与Processor\Privileged Time合并进行分析。若%Disk Time值较大,而Processor\Privileged Time的值适中,则可判断存在磁盘问题。若Processor\Privileged Time较大,持续超过80%,则可能是内存泄漏。 3.根据Disk sec/Transfer进行分析。该值超过60ms,则磁盘存在问题。
2.5 测试结果分析 • 网络分析方法 1.查看Network Interface\ Bytes Total/sec计数器的值。用Bytes Total/sec计数器的值和网络的带宽进行比较,若超过50%,则说明网络存在性能瓶颈问题。
2.5 测试结果分析 • 软件瓶颈分析方法 分析事务响应时间、吞吐量,确定是否存在性能问题,若发现存在性能问题,则找出响应时间不符合要求或者出现多个失败的事务,对其进行分解,然后对其进行网页细分,以确定影响性能的元素。
2.6 编写测试报告 • 测试指标:描述与测试场景对应的事务平均响应时间、事务吞吐率、资源消耗指标、运行的用户数等信息。 • 结果分析与总结:根据测试目标,描述最后分析得到的结果,并给出相应的建议。
3. 性能测试举例 • 性能测试工具介绍 • 性能测试举例
3.1 性能测试工具介绍 • 常见性能测试工具介绍 • 性能测试工具的选择
3.1.1 常见性能测试工具 • CompuWare公司的QALoad; • Mercury Interactive公司的LoadRunner; • Microsoft公司的WAS ; • RadView公司的WebLoad ; • IBM公司的RPT ; • 开源工具:OPENSTA等。
QALoad • 1、简介 QALoad模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现问题对系统性能进行优化,确保应用的成功部署。QALoad不单单测试WEB应用,还可以测试一些后台的东西,比如SQL Server等,只要是它支持的协议,都可以测试。 • 2、特征 1)自动捕获实际执行过程,自动生成测试脚本;2)通过控制台控制各个Agent,进行脚本分配;3)应用广泛,支持多种协议,如DB2、ODBC、WWW、Winsock等等。
LoadRunner • 1、简介 LoadRunner 是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测来确认和查找问题,能够对整个企业架构进行测试。通过使用Loadrunner,企业能够最大限度的缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner 能支持广范的协议和技术,功能比较强大,可以为特殊环境提供特殊的解决方案。 • 2、特征 1)轻松创建虚拟用户; 2)创建真实的负载; 3)定位性能问题; 4)分析结果以精确定位问题所在; 5)重复测试保证系统发布的高性能; 6)支持Enterprise Java Beans的测试; 7 )支持无线应用协议; 8 )支持Media Stream应用。
WAS • 1、简介: WAS--Web Application Stress是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。 • 2、特征: 1)可以数种不同的方式建立测试指令:包含以手动、录制浏览器操作步骤、或直接录入IIS的记录文件、录入网站的内容及录入其它测试程序的指令等方式; 2)支持多种客户端接口; 3)支持多用户:利用多种不同的认证方式仿真实际的情况。
WebLoad • 1、简介: WebLoad是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;WebLoad通过模拟真实用户的操作,生成压力负载来测试web的性能。 • 2、特征: 1)用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。 2)如有需要可以在做负载测试的同时,使用服务器监控工具对服务器端的内容进行记录那样使负载测试更加全面。
RPT • 1、简介 RPT--Rational Performance Tester是IBM基于Eclipse平台开发出来的最新性能测试解决方案。它可以有效地帮助测试人员和性能工程师验证系统的性能,识别和解决各种性能问题。 • 2、特征 在为性能测试员和性能优化人员提供了前面所提到的各种性能测试能力以外,它还提供了可视化编辑器,一方面可以使新的测试人员可以在无需培训和编程的情况下,即可快速上手完成性能测试;另一方面,也为需要高级分析和自定义选项的专家级测试人员,提供了对丰富的测试信息的访问和定制能力、自定义 Java 代码插入执行能力、自动检测和处理可变数据的能力。
OPENSTA • 1、简介 OpenSTA-- Open System Testing Architecture是专用于B/S结构的、免费的性能测试工具,可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。 • 2、特征 1)免费、源代码开放; 2)自定义功能设置大部分需要通过Script来完成,因此,在真正的使用这个软件之前,必须学习好它的Script编写。
3.1.2 性能测试工具的选择 • 创建还是购买 • 如何选择一种商业工具
3.1.2.2 如何选择一种商业工具 需要注意的几点: • 工具是否支持被测系统运行的平台(软硬件环境、数据库环境); • 工具能否支持被测系统使用的协议; • 工具是否能够支持我们的特殊要求,如防火墙、负载均衡等; • 工具是否能够提供对我们关心的服务器类型计数器的监控; • 工具的价格。
3.2 性能测试举例 • 某网站测试需求 可以支持100个并发用户执行各种查询操作,要求各查询操作的响应时间在5秒以内,服务器CPU利用率在80%以下。
3.2 性能测试举例 • 性能需求分析 测试目的:验证是否满足应用要求(性能符合性验证)。 测试要素: 并发用户数--100。 测试功能--仪器信息与使用预约、大型精密仪器机组查询、交流平台搜索、会展信息搜索。 用户分布--平均分配。 数据量、软件、硬件环境委托方负责准备。
3.2 性能测试举例 • 测试策略 负载测试—单项业务模式、混合业务模式。 说明:混合业务模式和实际应用是非常接近的,需要进行测试。 对于单独业务模式,虽然实际情况中很难出现,但这是一种极限的情况,也应该把这种情况下的测试结果呈现给用户。
3.2 性能测试举例 • 测试场景 场景1:100个用户同时执行仪器信息与使用预约操作。 场景2:100个用户同时执行大型精密仪器机组查询操作。 场景3:100个用户同时执行交流平台搜索操作。 场景4:100个用户同时执行会展信息搜索操作。 场景5:100个用户同时执行不同的操作,其中25个用户执行仪器信息与使用预约操作,25个用户执行大型精密仪器机组查询操作,25个用户执行交流平台搜索操作,25个用户执行会展信息搜索操作。
3.2 性能测试举例 • 执行测试 录制、编辑脚本 制定测试场景 执行测试场景
3.2 性能测试举例 • LoadRunner介绍 Virtual User Generator 用来录制脚本、编辑脚本 Controller 用来布置测试场景、执行测试场景 Analysis 用来对测试结果进行分析