性能测试及其实施过程.docx
《性能测试及其实施过程.docx》由会员分享,可在线阅读,更多相关《性能测试及其实施过程.docx(12页珍藏版)》请在冰豆网上搜索。
性能测试及其实施过程
目录
1.什么是性能测试2
1.1.能评测2
1.2.性能调优2
2.性能测试的目的2
3.何时进行性能测试3
4.性能测试的关键步骤3
4.1.影响系统性能因素分析3
4.2.测试前需搜集的信息3
4.3.测试过程中的信息收集4
4.4.关键点性能诊断4
4.5.瓶颈分析4
4.6.调优方案的制定5
5.性能测试的实施步骤6
5.1.性能测试实施步骤概述6
5.2.性能测试实施步骤6
性能测试及其实施过程
---魏靖QQ:
381557174
Weijing518200@
前言:
最近我对性能测试过程有了全新的认识,也有了很大的收获,其中最大的收获是使我有了在进行性能测试之前对影响系统性能的因素进行分析的意识,这种意识的产生是我做性能测试工作从理论走向实践的第一步。
1.什么是性能测试
系统的性能是一个比较大的概念,覆盖面非常广泛,对于软件系统来说,包括执行效率、稳定性、安全性、兼容性、资源占用情况、可靠性和可扩展性等。
性能测试用来保证产品发布后系统的性能能够满足用户的需求。
性能测试在软件质量保证中起重要作用。
通常情况下存在性能调优和性能评测两种性能测试策略。
1.1.能评测
性能评测主要包括下面两项内容:
●在真实环境下,检查系统服务等级的满足情况,评价并报告整个系统的性能。
●对系统的未来容量做出预测和规划。
需要指出的是这里的“容量”是指系统性能的扩展情况。
性能评测是性能调优的基础,性能评测能为性能调优提供方向性依据。
1.2.性能调优
性能调优的步骤:
●查找形成系统瓶颈或者故障的根本原因;
●进行性能调整和优化;
●评估性能调整的结果;
需要注意的是通常为了实现目标性能调优的过程通常是上述几个步骤循环执行的过程。
2.性能测试的目的
性能测试的最终目的是为了最大限度的满足用户的需求,我们通常为了达到以下目标而进行性能测试:
●评价软件系统当前的性能。
(在真实环境下,检查系统服务等级的满足情况,评价并报告整个系统的性能。
)
●预测软件系统未来性能,即根据当前测试环境的配置情况下获得的性能参数,对未来软件系统在实际运行环境下的性能情况进行预测。
●寻找瓶颈,进行系统调优。
即通过性能测试找出影响系统整体性能的关键步骤或过程,为系统调优提供方向性依据。
3.何时进行性能测试
对测试人员来说,在产品的功能稳定下来后,就应该尽早开始对产品进行性能测试。
在此我所想强调的是进行性能测试的前提是功能的稳定,在软件功能不稳定或功能不确定的情况下进行性能测试实施是比较困难的,测试结论也不太可靠。
4.性能测试的关键步骤
4.1.影响系统性能因素分析
4.1.1.硬件
●服务器
●网络设备(交换机、防火墙、路由器、网络是否畅通、进出规则是什么?
)
●其他外围设备
4.1.2.软件
●内部应用软件(测试主体)
●第三方应用
●系统软件(中间件、数据库、web服务器)
4.1.3.系统其他配置或处理机制
●Session复制/同步机制
●会话保持机制
●F5分发、重定向机制
4.2.测试前需搜集的信息内部应用信息
●内部应用实现逻辑、算法、应用架构图
●接口方式、异常处理、网络协议
4.2.1.配置信息
4.2.1.1软件配置
4.2.1.1.1中间件配置
●Java虚拟机配置
●连接数配置
4.2.1.1.2数据库配置
●数据库连接数
●连接池
4.2.1.2硬件配置
4.2.2.网络设备
●服务器及网路拓扑图
●防火墙
●网络设备配置信息
4.3.测试过程中的信息收集
在性能测试过程中我们要注意对以下信息进行收集:
●客户端性能指标,如:
并发用户数、每分钟的交易数、响应时间、吞吐量等。
●非客户端的性能指标,如操作系统、数据库服务器、中间件、网络状况。
4.4.关键点性能诊断
●响应时间
●并发用户量
●吞吐量
●Cpu
●内存高速缓存
●磁盘及外设
●中间件服务器性能
●数据库服务器性能等
4.5.瓶颈分析
对系统瓶颈分析时我们通常从以下角度去分析:
●客户端
●网络
●服务器
●硬件
●软件
●应用软件
●web服务器
●数据库服务器
4.5.1.常用寻找瓶颈方法
4.5.1.1分解时序
时序分解就是通过分析一个处理过程中各个环节,找出处理过程中的异常环节
4.5.1.2范围界定
范围界定是通过逐步扩大或缩小测试范围,将对系统性能影响的因素锁定在一定的范围之内,在这个范围内进行瓶颈查找。
4.6.调优方案的制定
通常我们从以下角度去制定系统调优方案:
4.6.1.硬件平台
●服务器
●Cpu
●内存
●硬盘
4.6.2.网络状况
●带宽
●负载
●网络延迟
●传输故障
4.6.3.软件平台
●数据库
●中间件
4.6.4.应用级别
●线程级别
●会话级别
●代码级别
5.性能测试的实施步骤
5.1.性能测试实施步骤概述
概括来说性能测试的实施步骤是以下步骤循环执行的过程:
制定测试计划→测试需求分析→测试案例制定→测试环境配置(包括软硬件环境、测试工具等)→录制测试脚本→设计测试场景→执行测试→获取测试结果→测试结果评估和测试报告→制定测试计划→测试需求分析→……
5.2.性能测试实施步骤
5.2.1.测试计划的编写过程
5.2.1.1分析应用程序
应用程序分析可以确保使用的测试环境能够在测试中精确的反映应用程序的环境和配置。
通常我们要从以下几个方面对应用程序的分析:
5.2.1.1.1系统组件
●如客户机
●网络
●中间件和服务器等
建议绘制一份应用程序结构示意图。
5.2.1.1.2系统配置
●连接系统的用户数
●应用程序客户端以及服务器的配置情况(包括软件配置和硬件配置)
●数据库服务器和web服务器的类型(硬件、数据库类型、操作系统、文件服务器等)
●服务器与客户端之间的通信方式
●服务器和客户端之间的中间件配置和应用服务器
●可能影响响应时间的其他网络组件(如调制解调器等)
●通信设备的情况
5.2.1.1.3应用程序使用模型分析
●哪些用户使用该系统
●每种用户的数量及主要业务类型
●业务处理分布情况等
通过对应用程序使用模型的分析我们可以确定需要重点测试的功能。
5.2.1.2定义测试目标
简单的说也就是我们要获取哪些性能参数或指标。
5.2.1.3方案实施计划
5.2.1.3.1定义性能度量的范围
度量应用程序中不同点的响应时间,并根绝测试目标确定在哪里运行vuser(虚拟用户),已经运行哪些vuser.
5.2.1.3.2定义vuser测试需求分析活动
根据对vuser类型的分析以及他们的典型任务和测试目标来创建vuser脚本。
5.2.1.3.3选择vuser
使用多少gui用户来模拟每一种类型的典型用户连接等。
5.2.1.3.4选择测试软件和硬件
软件和硬件应该具有强大的性能和足够快的运行速度,以模拟所需数量的虚拟用户。
5.2.1.4测试检查目标计划
●度量最终用户的响应时间
●定义最优的硬件配置
●检查可靠性
●硬件或软件升级对系统的影响
●对新产品评估
●确定瓶颈
●度量系统容量
5.2.2.测试需求分析
●测试的对象是什么?
●系统配置如何?
●应用系统的使用模式是什么?
5.2.3.测试案例的制定
●测试策略:
对比测试环境和真实业务测试环境,真实业务操作环境又可能涉及局域网环境和机房的是环境等。
●测试案例:
一个测试案例通常包含的内容有,案例名称、并发用户数、网络环境、数据量、备注等。
●测试内容:
测试内容一般包括并发性能测试、疲劳强度测试、大数据量测试和系统资源监控等。
5.2.4.测试环境、测试工具、和测试数据准备
测试环境直接影响测试效果,所有的测试结果都是在一定的软硬件环境约束下的结果,测试环境不同,测试结果可能会有不同。
5.2.4.1测试环境的准备
5.2.4.1.1测试环境的基本原则
●要满足软件运行的最低要求,不一定选择将要部署的环境;
●选用与被测系统相一致的操作系统和软件平台;
●营造相对独立的测试环境,即不受其他因素的干扰;
●无毒环境;
5.2.4.1.2性能测试环境准备时需要的注意事项
●如果是完全真实的应用运行环境,要尽可能降低测试对现有业务的影响;
●如果建立近似的真实环境,首先要达到服务器、数据库、以及中间件的真实,并且要有一定的数据量,客户端可以次要考虑;
●必须考虑测试工具的硬件和软件配置要求;
●测试和环境中应该包括安装、备份、及恢复过程。
5.2.4.1.3测试环境配置
●操作系统的版本(包括各种服务及安装补丁版本);
●网络软件的版本;
●传输协议;
●服务器及工作站配置;
●测试工具配置;
5.2.4.1.4良好测试环境的标准
●保证达到测试执行的技术需求;
●保证得到稳定的、可重复的、正确的测试结果;
5.2.4.2测试工具的准备
5.2.4.3网络协议的选择
测试工具中的协议是指工具提供给我们的测试接口,也可以认为测试类型。
客户端于服务器之间的通信协议是选择测试协议的唯一标准。
※常见的错误认识:
B/S运行模式用的一定是http协议,C/S运行模式用的一定是Winsocket协议。
5.2.4.4测试数据的准备
实施性能测试时,需要运行系统相关的业务,这时需要一些数据支持才可以运行业务,这部分数据即为测试数据。
5.2.5.测试脚本的录制和编辑调试
录制脚本是要注意录制用户在客户端应用程序中执行的典型业务流程。
脚本越小运行效率越高,不建议录制包含多个业务处理过程的大脚本。
5.2.5.1测试脚本分配所遵循的几个原则
●脚本是越小越好,就像写code一样的,不要太长,尽量做到一个功能(Transaction)一个脚本。
如果有些功能是连续的,必须先做上一个,才能工作下一个,那就只好放在一起了。
●要结合用户实际使用情况,一般在一个系统中是多个用户使用多个功能,某些功能使用的频率更大一些,我们在录制脚本之前就要设计好,某个脚本会跑几个用户,一共需要多少个脚本,能满足性能测试的需求
有些人喜欢在LR中测试几乎所有的功能,其实这样不合适,我们把最常用的、使用频率最高的、最多人用的拿出来测试。
5.2.5.2对脚本的编辑过程中需要注意的几个概念
●事务:
事务(Transaction)是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这样就定义了一个transaction,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。
这个事务的运行时间在结果中会有反映。
插入事务操作可以在录制过程中进行,也可以在录制结束后进行。
LoadRunner运行在脚本中插入不限数量的事务。
比如一个单据,把从登录到保存成功退出整个作为一个脚本,对于需要关注的保存,输入的帮助定义为单独的事务,以取得响应时间,需要响应时间的设事务。
●集合点:
集合点是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner就会检查同时有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,LoadRunner命令1000人同时去提交数据,并发访问的目的。
注意:
集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action部分,vuser_init和vuser_end中不能插入集合点。
●检查点:
(Text/Image)检查点对于查询类的脚本,一定要添加检查点,以保证在测试时结果的正确性.因为LR只要检测到网页的响应,就认为是pass而并不管当前网页内容的正确性.在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Imag检查点,这些检查点验证网页上是否存在指定的Text或者Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。
●关联:
在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联。
如:
客户端发出获得登录页面的请求服务器端得到该请求后,返回登录页面,同时动态生成一个SessionId当用户输入用户名密码,请求登录时,该SessionId同时被发送到服务器端如果该SessionId在当前会话中有效,那么返回登录成功的页面,如果不正确则登录失败在第一次录制过程中loadrunner把这个值记录了下来,写到了脚本中,但再次回放时,客户端发出同样的请求,而服务器端再一次动态的生成了SessionId,此时客户端发出的请求就是错误的,为了获得这个动态的SessionId我们这里用到了关联。
●参数化:
函数中参数的值就是在录制过程中输入的实际值。
例如,你录制了一个Web应用程序的脚本。
脚本生成器生成了一个声明,该声明搜索名称为“软件测试”的图书的数据库。
当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“软件测试”,还需要其他的值如“项目管理”。
例如平常经常用到的,登陆界面输入用户名和密码,那么,你就可以用参数来取代这个常量。
结果就是你可以用指定的数据源的数值来取代参数值。
数据源可以是一个文件,也可以是内部产生的变量。
5.2.6.场景制定
5.2.6.1创建Vuser组
方案由Vuser组构成,Vuser模拟与应用程序进行交互的实际用户。
运行方案时Vuser会在服务器上生成负载,测试工具会监视服务器和事务性能。
5.2.6.2配置Vuser中的Vuser
其实就是为定义的Vuser组中的各个Vuser定义属性。
对于每个Vuser,可以分配不同的脚本和负载生成器计算机。
5.2.6.3配置Vuser运行时的设置
也就是对脚本运行时的情况进行设置。
5.2.6.4配置负载生成器
指出哪些负载生成器将在方案中运行Vuser。
5.2.6.5配置终端服务设置
5.2.7.测试执行
5.2.7.1运行场景
5.2.7.2在执行期间察看Vuser
5.2.8.获取测试结果
在场景执行期间,Vuser会在执行事务的同时生成结果数据。
要在测试执行期间监视场景性能可以使用联机监视工具。
并且可以用下列工具察看测试执行之后的结果摘要。
●Vuser日志文件
●Controller输出
●Aanlysis图
●报告
5.2.9.结果评估和测试报告
5.2.9.1交易处理性能评估
●并发用户数
●交易响应时间
●交易通过率
●吞吐量
●点击率
5.2.9.2资源占用性能评估
●服务器操作系统资源占用
●数据库资源占用情况
●中间件资源占用
5.2.9.3故障分析
●故障分析的重点内容:
●CPU问题
●内存和高速缓存
●磁盘(I/O)资源问题
●配置参数
●应用系统网络设置
5.2.9.4数据库服务器性能问题及原因分析
5.2.9.4.1单一类型事务响应时间过长
●数据库服务器负载过重
●糟糕的数据库设计
●事务粒度过大
●批任务对普通用户性能的影响
5.2.9.4.2并发处理能力差
应用系统在执行同以类型事务的多个实例时,不能获得与执行实例数量相当的吞吐量。
一般是由于互斥访问造成的。
5.2.9.4.3锁冲突严重
同一类型或不同类型事务在并发执行的情况下,由于资源互斥而相互影响,造成一个或多个事务无法正常执行的情况,包括资源锁定造成的数据库事务超时和死锁两个方面。
5.2.10.测试报告
测试的标志性阶段或者测试结束时需要出具测试报告,对整个测试进行总结,用来描述测试结果。
测试报告的格式可以不一样,但是需要包括以下关键内容:
●测试案例说明
●测试结果数据
●测试结果分析
●测试环境说明
●报告中用到的术语解释