软件评测师:Web性能测试种类与全面测试模型
WEB性能测试种类
压力测试:确定一个系统的瓶颈或者不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。
负载测试:在被测系统上不断增加压力 ,直到性能指标达到极限,响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供依据。
大数据量测试:针对某些系统存储、传输、统计查询等业务进行大数据量的测试。 配置测试:通过测试找到系统各资源的最优分配原则。
可靠性测试:可以施加cpu资源保持70%-90%使用率的压力,连续对系统加压运行8小时,然后根据结果分析系统是否稳定。即加载一定压力的情况下,使系统运行一段时间。 并发测试:多以发现一些算法设计上的问题。
性能测试以用户并发测试为主的测试。
性能测试主要是为了发现软件问题和硬件瓶颈。
对于性能方面给系统留有30%左右的扩展空间即可。
Web全面性能测试模型
预期指标的性能测试
主要指需求分析和设计阶段提出的一些性能指标。
针对每个指标都要编写一个或者多个测试用例来验证系统是否达到要求。
预期指标的性能测试用例通常以单用户为主,如果涉及并发用户内容,则归并到并发用户测试用例中进行设计。
并发性能测试
选择具有代表性、关键的业务来设计用例,并且用户的设计应该面向“模块” 用户并发性能测试分为:独立核心模块并发性能测试,组合模块并发性能测试
独立核心模块并发:完全一样功能的并发测试;完全一样操作的并发测试;相同/不同的子功能并发。
针对独立核心模块用户并发性能的测试用例设计,可发现一些核心算法或者功能方面的问题,如一些多线程、同步并发算法在单用户模式下测试是很难发现问题的,通过模拟多用户的并发操作,更容易验证其是否正确和稳定。
核心模块测试一般属于基本的性能测试,它较多地关注模拟的“功能”,一般不会对服务器进行测试。
组合模块并发:具有耦合关系的核心模块进行组合并发测试;彼此独立的、内部具有耦合关系的核心模块组的并发测试;基于用户场景的并发测试。
组合模块测试一般发现接口方面的功能问题,并尽早发现综合性能问题。
在实际中,各种类型的用户都会对应一组模块,相当于不同的业务组在并发访问系统,要充分考虑实际场景,如话费管理系统中的每月10日左右的收费高峰等场景。
在编写组合模块用户并发性能测试用例时,不但要考虑用户使用场景,还要注意并发点的运用,并发点是指一定数量的用户开始执行同一功能或者操作的时间点,一组测试场景通常包含多个并发点,从而实现了核心模块同一功能或者操作的真正并发。
独立业务性能测试
独立业务实际是指一些核心业务模块对应的业务。这些模块通常具有功能比较复杂,使用比较频繁,属于核心业务等特点。主要测试这类模块和性能相关的一些算法、还要测试这类模块对并发用户的响应情况。
用户并发测试是核心业务模块的重点测试内容。
组合业务性能测试
是最接近用户实际使用情况的测试,也是性能测试的核心内容。
组合并发的突出特点是根据用户使用系统的情况分成不同的用户组进行并发,每组的用户比例要根据实际情况来进行匹配。
用户并发测试是组合业务性能测试的核心内容。“组合”并发的突出特点是根据用户使用系统的情况分成不同的用户组进行并发,每组的用户比例要根据实际情况来进行匹配。 网络性能测试
为准确展未带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。主要是测试应用系统的用户数目与网络带宽的关系。
调整性能最好的办法就是软硬相结合。
大数据量测试
主要是针对对数据库有特殊要求的系统进行的测试,主要分为三种:
1.实时大数据量:模拟用户工作时的实时大数据量,主要目的是测试用户较多或者某些业务产生较大数据量时,系统能否稳定地运行。
2.极限状态下的测试:主要是测试系统使用一段时间即系统累积一定量的数据时,能否正常地运行业务
3.前面两种的结合:测试系统已经累积较大数据量时,一些实时产生较大数据量的模块能否稳定地工作。
大数据量测试用例的设计:1,历史数据引起的大数据量测试和2运行时大数据量测试 首先确定系统数据的最长迁移周期和选择一些前面的核心模块或者组合模块的并发用户测试用例作为其主要内容即可.
服务器性能测试
性能测试的主要目的是在软件功能良好的前提下,发现系统瓶颈并解决,而软件和服务器是产生瓶颈的两大来源,因此在进行用户并发性能测试,疲劳强度与大数据量性能测试时,完成对服务器性能的监控,并对服务器性能进行评估。
服务器性能测试用例设计就是确定要采集的性能计数器,并将其与前面的测试关联起来。
设计性能测试用例注意的原则:
可以满足预期性能指标测试用例要求的,就没有必要设计更多的内容,因为用例越多,执行的成本也越高。
一定要服从整体性能测试策略,千万不能仅从技术角度来考虑设计“全面”的测试用例,“全面”应该以是否满足自己的测试要求作为标准。
适当裁剪原则
只有根据实际项目的特点制定合理的性能测试策略、编写适当的性能测试用例,并在测试实施中灵活地变通才可以做好性能测试工作。
测试计划:主要包含测试范围、测试环境、测试方案简介、风险分析等,测试计划要进行评审后方可生效。
测试报告:主要包含测试过程记录、测试分析结果、系统调整建议等。
测试经验总结:不断总结工作经验是建立学习型团队的基础,实践-总结-再实践 。
第二篇:Web性能测试论文
Web性能测试方法及其应用
冯行武 G2009225426
摘要:针对Web应用软件的特征,提出了一种基于目标的性能测试方法,其关注的主要内容包括与Web应用相关的负载测试和压力测试两个方面。不但对这两个方面的测试方法进行了全面的分析和探讨,还强调了测试过程管理的重要作用,最后给出了这种方法在Web应用性能测试实践中的一个具体应用。
关键词: 性能测试; 负载测试; 压力测试; 软件测试
目前,随着电子商务和电子政务等Web应用的兴起,基于B/S结构的软件日益强劲发展,正在成为未来软件模式的趋势。然而,当一个Web应用被开发并展现在用户、供应商或合作伙伴的面前时,尤其是即将被部署到实际运行环境之前,用户往往会疑问:这套Web应用能否承受大量并发用户的同时访问?系统对用户的请求响应情况如何?在长时间的使用下系统是否运行稳定?系统的整体性能状况如何?如果存在性能瓶颈,那么是什么约束了系统的性能?而这些正是Web性能测试解决的问题,如何有效进行Web性能测试,目前并没有一个系统和完整的回答。此外,由于紧凑的开发计划和复杂的系统架构,Web应用的测试经常是被忽视的,即使进行了测试,其关注点也主要放在功能测试上。但是,近年来Web性能测试越来越引起重视,成为Web系统必不可少的重要测试内容。
本文的研究就是基于这种需求,从已进行过的Web性能测试实践中总结一套基于目标的Web性能测试方法,该方法已在大量的软件测试项目实践中被证明是有效的和可操作的。其具体测试实施方面包括负载测试和压力测试。
1概述
1.1基本概念
一般来说,性能测试包括负载测试和压力测试两个方面: 负载测试是为了确定在各种级别负载下系统的性能而进行的测试,其目标是测试当负载逐渐增加时,系统组成部分的相应输出项,如响应、连接失败率、CPU负载、内存使用等如何决定系统的性能。压力测试是为了确定Web应用系统的瓶颈或者所能承受的极限性能点而进行的测试,其目标是获得系统所提供的最大服务级别的测试。
1.2 Web性能测试的目标
Web性能测试的目标是什么?它不仅是用测试工具去运行一些测试脚本来证明产品是否可以达到性能指标,更关键是要发现产品性能上的缺陷,并解决定位问题,这才是软件性能测试的真正目的。其目标可分为以下两种级别:
(1)性能测试总体目标。找出Web应用系统可能存在的性能瓶颈或者软件缺陷,确认其是否可以达到用户的使用需求。收集测试结果并分析产生缺陷原因,提交总结报告,让软件开发方对Web应用进行性能改进。
(2)性能测试具体目标。此目标又可以分为:
①确定Web应用系统的总体性能参数,包括所支持的最大并发用户数、事务处理成功率、请求相应的往返延迟等。②确定在各个级别的负载及压力测试下服务器输出的具体性能参数。
这些测试目标驱动了整个测试过程的进行,因而在Web性能测试中起着至为关键的核心作用,因此在软件性能测试之前一定要有一份《软件性能测试需求规格说明书》,用于定义详细的测试目标,这是检查软件性能是否符合要求的基本依据。
1.3 基于目标的Web性能测试
系统的负载测试需要采用负载工具进行,真实模拟大量用户访问Web应用系统来测试系统的表现,包括测试静态HTML页面的响应时间,甚至测试动态网页的响应时间等,看是否满足预期的设计指标要求,为服务器的性能优化和调整提供数据依据, 负载测试不会以使系统崩溃为目的,因此负载测试的期望值一般以满足使用需求为主,不需要太夸张的数值。
系统的压力测试也需要使用压力测试工具,主要是对Web服务器进行压力测试。测试可以帮助找到一些大的问题,如死机、崩损、内存泄漏等。因为有些存在内存泄漏问题的程序在运行一两次时可能不会出现问题,但是如果运行了成千上万次后,内存泄漏得越来越多,就会导致系统崩溃。
2 Web应用性能测试环境建立
目前比较流行的负载测试和压力测试工具有LoadRunner、WebLoad、QALoad、JMetert等,本文就WebLoad的性能测试过程进行讨论。
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。
2.1工作原理
webload提供巡航控制器cruise control的功能,利用巡航控制器,可以预定义web应用程序应该满足的性能指标,然后测试系统是否满足这些需求指标;cruise control能够自动把负载加到web应用程序,并将在此负荷下能够访问程序的客户数量生成报告。
图一 Webload的应用框架
2.2软件安装
双击应用程序,点Next|Yes|Next。
选择安装路径D:\Program Files\RadView\WebLOAD|Next|Next
正在安装
安装完毕
2.3 Webload人通信设置
配置SNMP协议使多个压力机之间互相通信:
在windows里进入[控制面板]->[添加删除程序]->[添加删除windows组件]选择[管理和监控工具],[下一步]后选择windows安装文件路径,[完成]。
2.4 TestTalk安装
TestTalk在测试会话里监测压力机间的信息传递,如果通信不成功则报错TestTalk自动安装,测试执行时在后台自动运行,注意不要将它关闭。
3 Web应用性能测试流程
3.1 web录制脚本
Webload提供便捷的脚本录制工具,测试人员可以用这个工具来捕捉Web访问行为,这些行为被录制成标准的JavaScript脚本,测试人员可以修改脚本这中的参数来达到预期的测试目的。
3.1.1 创建一个项目:运行WebLoad,首先创建一个项目。
创建项目
3.1.2 开始录制:单击工具条中的按键开始录制脚本,录制脚本的时候会打开一个浏览器窗口,只有在这个窗口内录制的内容才会生成脚本,在这个窗口中输入被测软件的地址:http://www.baidu.com,在IDE中的Script窗口将会生成相应的脚本。
录制生成的脚本
更改数量级到500,再次访问这个地址,从录制脚本的变化,我们可以看出WebLoad自动捕捉了中间的访问间隔Sleep(9356)。
改变访问对象后录制脚本的变化
3.1.3 创建事务:展开左侧的“Load”工具组,拖放“beginTransaction”到第一个URL之前,起名为:“Transaction1”;拖放“EndTransaction”,选择“Transaction1”完成事务的创建。
创建事务后脚本的变化
3. 2 运行测试
3.2.1打开刚才的项目,单击“run test”,对刚才录制的脚本开始进行测试。在执行窗口中可以看两次访问已经被执行了。
事务的执行结果
3.2.2在“Logic View”中可以牛二珠运行善,最后一行显示已经运行通过。
3.2.3 在“Browser View”中可以牛二中大恒基暂不的网页,以及网页的DOM树结构de“HTMLVEW”中可以看到网页的HTML代码;在“HTTP Headers View”中可以看到HTTP的头信息。
访问成功后网页的结构
3.3 进行压力测试
3.3.1 运行WebLoad console,创建一个新模板。压力测试可以只执行单一Agenda测试,也只可以运行多个Agenda一起测试,在本例中选择“Single Agenda”,选择最初保存的Agenda。
创建压力测试模板,执行单一Agenda测试
3.3.2 单击“easurements Manager”添加压力测试的监控器,监控器的不同会导致在压力测试过程中不同的显示输出结果;然后,单击“Add Data Source”添加数据源,本例中选择Windows平台;最后,选择监控主机。
3.3.3 选择要监控的性能指标,本例中我们关心的是系统处理时间。
3.3.4 为本次测试选择主机,其中localhost是我们刚创建的测试主机,用它来进行测试。
3.3.5 配置主机在某个时间点进行测试。首先, 单击“Load Profiler”更改压力属性;然后选择总共测试时间为5分钟,开始测试的虚拟机数为1,最终虚拟机数为5;最后,单击“Replace”更新属性。测试属性配置完成后,单击开始测试。
配置主机测试方案
3.3.6 在测试结果中,横坐标为并发用户数量,纵坐标为数值。窗口中默认有4种性能指标:加载大小、每秒单击率、周期时间和吞吐量。单击,可查看数据结果。
查看测试结果
从统计数字上可以看出,平均加载时间为0.1秒,周期时间为4.8秒,有1个周期等等。
4 Web工具小结
WebLoad中的参数使用非常灵活,能满足实际应用测试的需要。在Web应用测试过程中,不同客户剖端的行为是不同的,因此需要将行为变量化。WebLoad提供了智能拷贝和参数化行为的方法,以模拟出不同行为的多个客户端同时在线的场景。
WebLoad的另一个重要组件是WebLoad Console。WebLoad IDE侧重于脚本的录制及编辑调试等功能,而WebLoad Console侧重于加载生成的脚本。包括:定义Load客户端的策略,例如线性提高、随机变化加载虚拟客户端的数量;设定Load时间,而且可以生成随时间和Load数量的报告,帮助我们找出系统瓶颈;在测试时可以动态加载监视对象,例如响应时间、CPU处理时间、内存占用率等等。
WebLoad的Mix of Agendas可以在一个测试方案中添加多个测试脚本,这样便能模拟多个客户端的使用。例如:我们可以模拟10个客户端在登录,10个客户端在浏览网页,10个客户端在添加商品到购物车,然后每种功能的客户端还在不断地增长,这样的测试方案可以尽量地接近真实的环境。
WebLoad不公可以进行性能测试,而且可以进行功能测试。功能测试的原理是查找相应的HTMLk的信息来判断测试脚本是否成功。例如:如果用户登录失败,我们通过查找,如果发现失败在HTMLr响应文本中,我们就认为测试用例失败了。另外这对HTML的学习也是有帮助的。
最后,WebLoad 与JMeter相比具有如下优点:
1、 JMeter只提供了可视化编辑方式,跟提供的编辑方式相比,WebLoad在创建测试JavaScript脚本方面更加灵活。
2、 JMeter只适用于Java程序,因此不能在测试脚本中调用COM对象。
3、 JMeter比WebLoad支持的服务器监控协议要少。
4、 JMeter不支持对HTTPS网站进行脚本录制。
5、 WebLoad的分析和报告能力要超过JMeter。
5 总结
Web应用的多样性决定了Web性能测试方法的多样性,但无论其表现,所有的测试活动都一定有其目的性,也只有让性能测试围绕其目标展开才能使投入的测试资源产生最大的效益。本文围绕所提出的基于目标的性能测试而展开,同时强调了测试管理的作用,并给出了一个邮件系统测试的实例。本文提出的性能测试方法已经在许多项目实践中得到了良好的应用,但Web性能测试模型的总结和深入研究还有待进一步进行,这也是我们下一步的主要工作计划。