软件性能测试过程详解与案例剖析.docx
《软件性能测试过程详解与案例剖析.docx》由会员分享,可在线阅读,更多相关《软件性能测试过程详解与案例剖析.docx(12页珍藏版)》请在冰豆网上搜索。
![软件性能测试过程详解与案例剖析.docx](https://file1.bdocx.com/fileroot1/2023-1/3/aa593ae2-a26e-40d4-b1e5-c9ce052469d1/aa593ae2-a26e-40d4-b1e5-c9ce052469d11.gif)
软件性能测试过程详解与案例剖析
软件性能测试过程详解与案例剖析
第1章性能测试基本概念
1.1软件性能
从用户的角度,软件性能就是软件对用户操作的响应时间。
从管理员的角度,软件性能首先表现在响应时间上。
还包括资源利用率、可扩展性、系统容量(并发等)和系统稳定性等。
为了保证系统的稳定运行和持续的良好性能。
对于
开发人员而言,最想知道“如何通过调整设计和代码实现,或是如何通过调整系统设置等方
法提高软件的性能表现”和“如何发现并解决软件设计和开发过程中产生的由于过多用户访问引起的缺陷”,也就是性能瓶颈和大量用户访问时的缺陷。
关注的是系统架构、数据库设计、代码和设计。
所以在性能测试时,既要关注响应时间,还要关注软件可扩展性、并发能力等指标,还要为性能问题定位。
1.2术语
1、响应时间
系统响应时间为应用系统从发出请求开始到客户端接收到响应所消耗的时间。
合理的
响应时间取决于实际用户的需求。
2、并发用户数
有两种理解,一种是同一时间段访问系统的用户数量,一种是服务器所能承受的压力(同
时发出请求的客户)。
在性能测试中我们更关注前者,业务并发用户数。
公式c=nL/T,计算平均并发用户数,还可用c=n/10还做简单的估计。
n为每天访问系
统的用户数。
还可以通过分析服务器的日志来了解用户的使用状态。
3、吞吐量
单位时间系统处理的客户请求的数量,请求数/秒,页面数/秒,访问数/天,业务数/小
时,字节数/天。
可用于衡量是否达到了预期设计目标,协助分析性能瓶颈。
4、性能计数器
描述服务器或操作系统性能的一些数据指标。
例如,存数、进程时间。
用于监控和分析。
常与资源利用率进行横向对比,例如cpu占用率68%。
5、思考时间(休眠时间)
用户在进行操作时,每个请求之间的间隔时间。
1.3方法
1、SEI负载测试计划过程
关注于负载测试计划的方法,目标是产生清晰、易理解、可验证的负载测试计划。
关注目标、用户、用例、生产环境、测试环境和测试场景。
2、RBI方法
rapidbootieneckidentify,用于快速识别系统性能瓶颈的方法。
3、性能下降曲线分析法
描述性能随用户数量增长而出现下降趋势的曲线。
4、LoadRunner的性能测试过程
包括计划测试、测试设计、创建VU(virtualuser)脚本、创建测试场景、运行测试场景、
分析结果。
5、Segue提供的性能测试过程
先确定性能基线,然后设定可接受的性能目标,用不同的并发用户数等重复测试。
适合性能调优和性能优化,通过不断的try-check过程,逐渐找到可能导致性能瓶颈的地方并
对其优化。
6、PTGM模型
performaneetestinggeneralmodel。
分为测试前期准备、测试工具引入、测试计
划、测试设计与开发、测试执行和管理以及测试分析。
第2章性能测试的应用领域
2.1性能测试的方法
1、性能测试(performaneetesting)
模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能的要求。
2、负载测试(loadtesting)
通过在系统上不断增加压力,直到性能指标超过预定或某种资源的使用达到饱和。
找到
系统的处理极限。
3、压力测试(stresstesting)
测试系统在一定饱和状态下,系统能够处理的会话能力,以及系统是否会出现错误。
常用于测试系统的稳定性。
4、配置测试(eonfigurationtesting)
通过对被测软件的软/硬件环境的调整,了解各种不同环境对系统性能的影响的程度,从而找到系统各项资源的最优分配原则。
5、并发测试(coneurrencytesting)
模拟用户的并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是
否存在死锁或者其他性能问题。
关注存是否有太多临时对象、超过设计生命周期的对象、数据库死锁、经常出现长事务、是否出现线程/进程同步失败、资源争用导致死锁、未处理异常导致死锁。
6、可靠性测试(reliabilitytesting)
通过给系统加载一定的业务压力的情况下,让应用系统持续运行一段时间,测试系统在
这种条件下能否稳定运行。
7、实效恢复测试(failovertesting)
针对冗余备份和负载均衡的系统。
检验如果系统局部发生故障,用户是否能够继续使用
系统,如果这种情况发生,用户将受多大程度影响。
2.2应用领域分析
1、能力验证
performaneetesting,reliabilitytesting,stresstesting,failovertesting
2、能力规划
loadtesting,configurationtesting,stresstesting
3、性能调优
configurationgtesting,loadtesting,stresstesting,failovertesting
4、缺陷发现
concurrencytesting,stresstesting,failovertesting
第3章性能计数器及性能分析方法
用来衡量被测系统当前的状况和进行性能测试结果分析。
可在操作系统级、应用服务器级和数据库级别上查看和记录性能计数器的数值。
3.1操作系统计数器及分析
1、Windows
Memory:
availablembytes,pages/sec,pagesread/sec,pagefaults/sec,cachebytesProcess:
%processortime,pagefaults/sec,workset,privatebytesProcessor:
%processortime,%usertime,%privilegedtime,%dpctime
PhysicalDisk:
%disktime,averagediskqueuelength,averagediskread/writequeuelength,diskreads(writes)/sec,averagedisksec/read,averagedisksec/transferNetworkInterface:
bytestotal/sec
System:
%totalprocessortime,filedataoperation/sec,processorqueuelengt
h
2、unix
3、存分析方法
用于分析系统有无遇到存瓶颈,是否需要通过增加存等手段提高系统性能表现。
首
先查看memory/availablembytes;注意
pages/sec,pagesread/sec,pagefaults/sec(反映进行磁盘交换的频率);根据
physicaldisk分析。
4、处理器分析方法
先看system\%Totalprocessortime,然后看每个cpu的指标,最后分析。
5、磁盘I/O分析方法
计算每个磁盘的I/O数;然后与processor\privilegedtime合并分析;最后根据
disksec/transfer分析。
6、进程分析方法
察看%processortime,反映进程消耗的处理其时间;然后查看每个进程产生的页面失
效,对于产生最多页面失效的进程要重点分析;了解进程的process/privatebytes,看是否
存在存泄露。
7、网络分析方法
networkinterface\bytestotal/sec为发送和接收字节的速率,与当前带宽进行比
较。
3.2应用服务器计数器
1、IIS
2、J2EE应用服务器计数器
weblogic
JVM:
heapsize;heapfree
JDBCconnectionpool:
waitingforconnectioncurrentcount;connectionto
talcount;maxcapacity;activeconnectionscurrentcount
executequeue:
executethreadcurrentidlecount;pendingrequestoldesttime;servicedrequestoldesttime;servicedrequesttotalcount;pendingrequestcurrentcount;
3、数据库计数器
第4章性能测试工具原理
4.1性能测试工具模型
性能测试工具只能帮助您实施性能测试,并不能帮助您完成性能测试的需求;性能测试工具能够根据您的要求以各种方式提供报表,这些报表是分析的基础。
性能测试工具一般包括虚拟用户脚本产生器;压力产生器;用户代理;压力调度和控制系统;压力结果分析工具。
4.2性能测试脚本录制时的协议类型
对于j2ee,建议选择http/https协议。
4.3性能测试工具的选择与评估
工具支持被测系统运行的平台吗?
支持被测系统使用的协议吗?
能够支持我们的特殊要求?
能够提供对我们关心的服务器、应用服务器或是数据库类型计数器的监控吗?
工具使用的脚本语言功能完善吗?
常用的包括Loadrunner禾口silkperformer。
第5章性能测试的组织
5.1人员构成
经理、测试设计、测试开发、测试执行、测试分析、支持
5.2过程模型
基于ATLM和TMap模型。
1、前期准备
保证系统稳定、建立合适的测试团队、测试工具需求确认。
2、测试工具引入
选择;培训;应用过程。
3、测试计划
测试目的(应用领域,测试目标);用户活动剖析与业务建模(系统日志与用户调查分析);确定性能目标;制定计划。
4、测试设计与开发
测试环境设计;测试场景设计;测试用例设计;脚本和辅助工具开发活动。
5、测试执行与管理
建立测试环境;部署测试脚本和测试场景;执行测试和记录结果。
6、测试分析
根据测试的目的和目标给出测试结论。
第8章案例三某通信企业的web业务系统性能测试
8.1背景
该系统用于管理企业的备品和备件,包括网络设备的库存管理、库存流转、备品备件的
查询统计。
测试的主要目的是验证系统的性能是否达到用户要求。
8.2项目特点
采用J2ee,tomcat,struts+ejb+hibernate。
一台unix服务器用作数据库服务器,一台
unix服务器用作应用服务器。
性能体现主要是响应时间。
协议为http/https。
8.3测试过程
1、前期准备
5人:
一个数据库工程师、一个性能测试设计和分析人员、三名性能测试开发和实施人员。
工具需要支持Http/https协议,监控unix/windows服务器的主要性能计数器值,
支持oracle数据库计数器值监控,支持tomcat应用服务器的jvm存使用状况监控。
2、测试工具引入
选择LoadRunnder;tomacat的jvm自行开发工具来实现。
3、测试计划
(1)测试目的:
验证系统是否达到预期性能指标
(2)用户活动剖析与业务建模:
得到典型用户活动分析表,并发用户数和吞吐量
用户活动分析表
业务名称
实际使用用户数量
业务发生数(笔/天)
备件信息
200
1500
库存流转-申请单
200
4000
库存流转-审批
100
4000
库存流转-借用
150
3000
库存流转-还库
150
3000
库存流转-报废
100
200
查询统计-备件查询
200
5000
查询统计-申请单查询
100
2000
导入备件Excel文件
20
80
500
平均每天该系统的用户为600;平均每个用户每天使用4小时;平均每个用户进行
个业务操作;
所以并发用户数:
600*4/8=300
吞吐量:
300*500/(4*60*60)=10,浏览数/秒
(3)确定性能目标:
得到性能需求描述
详细描述
在典型数据量,页面响数据规模备件500000条记录,
应时间不超过10秒半年流转数据750000条记录
系统能够稳定运行压力条件:
高于实际系统运行压力1倍系统稳定判定条件:
测试中,各进程存没有明显变化
测试中,响应时间和业务能力没有明显变化
持续测试时间72小时
典型规模的excel备文件规模20M,包含记录50000条
件文件导入时间性能
在10秒的响应时间下,以响应时间〉10秒作为负载测试的结束条件,
能承受的用户数获得系统能承受的最大用户数量
在典型用户数量下,cpu平均使用率不高于75%,存使用率不高于75%;
在稳定性测试的压力条件下,cpu使用率不高于95%,存使用率不高于90%。
(4)制定时间计划。
子项目名称子项目起止时间里程碑成果参与者
测试环境和场景设计2005.3.1-2005.3.2测试环境文档、测试场景文档
测试用例设计和脚本开发2005.3.3-2005.3.10测试用例文档、测试脚本
测试环境构建2005.3.3-2005.3.5测试环境、测试环境描述文档
测试工具和场景部署2005.3.11-2005.3.12测试工具部署说明、场景部署说明
执行性能测试2005.3.13-2005.3.15测试结果记录
稳定性测试2005.3.16-2005.3.20测试结果记录
测试结果分析和报告编写2005.3.21-2005.3.23测试报告
4、测试设计与开发
(1)测试环境设计
由于本测试主要与于验证系统在实际环境中的性能能力,因此尽可能选择接近实际环
境的配置。
测试环境
设备硬件配置软件配置
数据库服务器SUNV880服务器(1台)Solaris8
4CPU8GB存磁盘阵列Oracle9.2.0.1
服务器性能计数器脚本
应用服务器SUNV880服务器(1台)Solaris8
4CPU8GB存磁盘阵列Tomcat5
服务器端应用
服务器性能计数器脚本
性能测试ConsolePC机(1台)WindowsXP+SP1
CPU2.4GHZ512MB存LoadRunnerController
40GB硬盘LoadRunnerAnalysis
MicrosoftOffice
负载产生设备PC机(5台)WindowsXP+SP1
CPU2.4GHZ512MB存LoadRunnerAgent
40GB硬盘
基础数据量在需求中已有描述
(2)测试场景设计
设计并发用户数300,每个VU操作之间的时间间隔为30秒
典型测试场景
场景名称场景业务及分配比例测试指标性能计数器
系统
用户分配:
应用
备件信息100
典型
申请单100
页面数据库服务器常用性能计数器响应应用服务器cpu使用率时间应用服务器存使用率
场景1备件查询100小于应用服务器JVM可用存
用户增长模式:
10秒响应时间
rampup,每15秒增加4个
迭代时间间隔30秒
运行时间30分钟
系统
用户分配:
页面
数据库服务器常用性能计数器
应用
申请单100
响应
应用服务器cpu使用率
典型
审批100
时间
应用服务器存使用率
场景
2还库50
小于
应用服务器JVM可用存
报废10
10秒
响应时间
用户增长模式:
rampup,每15秒增加4个
迭代时间间隔30秒
运行时间30分钟
系统
用户分配:
页面
数据库服务器常用性能计数器
应用
申请单100
响应
应用服务器cpu使用率
典型
审批100
时间
应用服务器存使用率
场景
3备件查询100
小于
应用服务器JVM可用存
报废1010秒响应时间
用户增长模式:
rampup,每15秒增加4个
迭代时间间隔30秒
运行时间30分钟
稳定
用户分配:
页面数据库服务器常用性能计数器
性测
典型场景3用户数响应应用服务器cpu使用率
试场
的两倍
时间应用服务器存使用率
景
备件查询100
小于应用服务器JVM可用存
运行时间72小时
10秒响应时间
数据
用户分配:
页面数据库服务器常用性能计数器
导入
导入Excel文件
10响应应用服务器cpu使用率
场景
申请单100
时间应用服务器存使用率
审批100
小于应用服务器JVM可用存
用户增长模式:
10秒响应时间
rampup,每15秒增加4个
迭代时间间隔30秒
运行时间30分钟
(3)测试用例设计
将用户业务操作形成更详细的用例步骤。
审批业务:
用例编号:
TC_xxxx_xxx-1
用例条件:
用户已经登录,具有审批的权限用户步骤和验证方法:
1、用户单击“库存流转”,进入库存流转页面验证:
页面出现库存流转提示字符串
2、用户在页面左侧树试图上单击“审批”,进入审批页面
验证:
页面上出现审批单:
列表提示字符串
单击审批按钮,
3、用户在页面给出的等待审批的申请单列表中选择最上方的一个,进入审批页面
验证:
给出选中审批单信息,页面上出现被选中审批单的编号
4、用户输入审批信息,单击通过按钮验证:
页面上出现审批通过提示字符串
(4)脚本和辅助工具开发活动。
5、测试执行与管理
建立测试环境;部署测试脚本和测试场景;执行测试和记录结果。
6、测试分析
根据测试的目的和目标给出测试结论。