首页 > 知识点讲解
       负载压力测试技巧
知识路径: > 测试技术的分类 > 应用负载压力测试 > 
相关知识点:150个      
               参数池技术
               录制业务流程时,测试工具生成一个由函数构成的Vuser脚本。函数中参数的值是录制期间使用的实际值。例如,假设在操作Web应用程序时录制了一个Vuser脚本。VuGen生成下列语句,在库的数据库中搜索标题“UNIX”,使用多个Vuser和迭代来重播该脚本时,如果不想重复使用相同的值“UNIX”,那么可以用参数来替换该常量值。
               
               上例中可以用参数“Book_Title”来替换常量值“UNIX”,然后,生成的Vuser使用指定的数据源中的值来替换参数。该数据源可以是一个文件或者内部生成的变量。
               对Vuser脚本进行参数化有两个好处:
               . 减小脚本的大小。
               . 提供了使用不同的值测试脚本的能力。例如,如果要在数据库中搜索几个标题,只须写一次提交函数,在函数中使用参数,而不是指示Vuser搜索一个特定的标题。重播期间,VuGen用不同的值替换该参数。
               参数化涉及下列两个任务:
               . 用参数替换Vuser脚本中的常量值;
               . 为参数设置属性和数据源。
               下面谈谈数据源的问题。可以选择一个文件作为参数值的源,一个常见的使用参数的方法是指示Vuser从外部文件中取值。可以执行下列步骤。
               . 选择或者创建数据文件;
               . 设置参数的属性。
               还可以从现有数据库中导入数据,用于参数化。可以用下列两种方法中的一种导入数据。
               . 新建查询;
               . 指定SQL语句。
               将事务插入到Vuser脚本
               可以定义事务以度量服务器的性能。每个事务度量服务器响应指定的Vuser请求所用的时间。这些请求可以是简单任务(例如等待对单个查询的响应),也可以是复杂任务(例如提交多个查询和生成报告)。要度量事务,需要插入Vuser函数以标记任务的开始和结束。在脚本内,可以标记的事务不受数量限制,每个事务的名称都不同。在方案执行期间,主控台将度量执行每个事务所用的时间。场景运行后,可使用测试工具的图和报告来分析各个事务的服务器性能。
               将集合点插入到Vuser脚本
               要在系统上模拟较重的用户负载,需要同步各个Vuser以便在同一时刻执行任务。通过创建集合点,可以确保多个Vuser同时执行操作。当某个Vuser到达该集合点时,主控台会将其保留,直到参与该集合的全部Vuser都到达。当满足集合条件时,主控台将释放Vuser。
               可通过将集合点插入到Vuser脚本来指定会合位置。在Vuser执行脚本并遇到集合点时,脚本将暂停执行,Vuser将等待主控台允许继续执行命令。
               手工关联
               这一小节我们主要解决动态数据所导致的问题,即利用测试工具的脚本函数如何关联动态且不可人工预知的值。
               系统的输出值需要为后续操作提供输入,这些值只对当前会话有效。举例说明如下。
               . 系统产生的SessionID;
               . 每次访问Web页面的动态URL;
               . 表单提交期间录制的Field(有时会隐藏)。
               解决办法如下。
               . 从一个操作步骤中捕捉输出值;
               . 该值用于另一个步骤的输入。
               关联数据先是由服务器发给客户端,之后客户端又会将该数据返回服务器。例如SessionID,它是脚本中的一段代码,为录制的会话服务,但却不能用于回放的会话。
               下面提供几种关联数据的方法。
               . 手工关联;
               . 录制结束后自动关联;
               . 录制过程中自动关联。
               在Vuser脚本中关联动态数据的步骤如下。
               . 确定需要捕捉的值。
               ①创建两个虚拟用户。这两个用户的录制步骤保持一致。如果说捕捉的动态数据依赖于某个输入值,那么就改变这个输入值;如果独立于任何输入值,那么就采用相同的数据。
               ②对比脚本。利用Wdiff.exe工具对比,它遍历脚本的每一行,并且亮显不同点。.找到所捕捉值的左右边界标识符。
               . 决定应该使用哪个边界。
               . 将函数web_reg_save_param加入脚本,在加入之前,必需要先捕捉到值。
               . 在函数中加入参数名称、左边界标识符、右边界标识符及函数事件。
               . 在每次脚本运行时参数化动态数据。
               . 校验执行结果。
               IP数据池
               运行方案时,每台负载生成器计算机上的Vuser都使用该计算机的IP地址。也可以在负载生成器计算机上定义多个IP地址,以模拟用户使用不同计算机的真实情况。应用程序服务器使用IP地址来标识客户端。应用程序服务器经常缓存来自同一台计算机上的客户端信息。网络路由器则缓存源信息和目标信息,以提高处理能力。如果许多用户使用同一个IP地址,服务器和路由器都会进行优化处理。由于同一台负载生成器计算机上的Vuser具有相同的IP地址,服务器和路由器将进行优化处理,因而无法反映真实的情况。
               测试工具的多IP地址功能可以使用许多IP地址来标识在一台计算机上运行的多个Vuser。这样,服务器和路由器认为Vuser来自不同的计算机,因此使测试环境更加真实。
               在Windows平台上,每块网卡上可以模拟的最大IP地址数为35个,Solaris(2.5.1版)最多为255个,而Solaris(2.6或更高版本)最多则为8192个。
               多IP地址功能适用于下列协议。
               . 客户端服务器:DNS、Windows Sockets。
               . 自定义:Java Vuser、Javascript Vuser、VB Vuser、VB Script Vuser。
               . 电子商务:FTP、Palm、SOAP、Web(HTTP/HTML)协议、WinSock\WebDual协议。
               . bom:Oracle NCA、Siebel-Web。
               . 邮件服务:Internet Messaging(IMAP)、MS Exchange(MAPI)、POP3、SMTP。
               . 流数据:Real。
               . 无线:i-Mode、VoiceXML、WAP。
               以下过程说明了如何向负载生成器中添加新的IP地址。
               . 运行负载生成器上的“IP向导”添加指定数量的IP地址。为UNIX负载生成器计算机手动配置新的IP地址。
               . 重新启动计算机。
               . 如有必要,用新地址来更新服务器的路由表。
               . 在控制台中启用这项功能。
               Web站点经验点滴
               对Web站点的测试,从测试工具的角度来讲,给读者介绍下面几点经验。读者通过阅读本小节的内容应能达到触类旁通,将这些经验应用到其他的测试领域。
               . 在执行客户端并发性能测试的过程中,需要同时监控数据库服务器、Web服务器以及网络资源等使用情况,以便对系统的性能做全面评估。
               . 录制的脚本需要编辑,有时需要手工编写脚本。
               . 尽可能去录制脚本,然后在其基础上编辑脚本。
               . 手工编写脚本需要注意既能够模拟负载压力,又符合脚本的后台处理方式。
               . 设置数据池,实现变量替换常量。为了真实模拟负载,数据池是经常使用的有效手段。
               . 混合业务批量执行。
               单独的业务并发操作,有可能会忽略例如资源争用、锁冲突等问题,在Web站点负载压力测试方案中,一定要考虑将多种业务混合执行,并发性能测试。
               . 模拟用户数的递增。
               我们知道在真实情况下,高峰期负载压力的到来是循序渐进的过程,同样的道理,高峰期的结束也有一个过程。在工具中我们使用虚拟用户数的递增与递减来模拟这种情况。
               . 合理设置交易之间的时间间隔。
               交易之间的时间间隔代表了负载程度的高低,为了模拟不同的负载,经常需要调整此时间间隔。
               . 模拟IP地址变量的技术。
               并发访问需求量不大的系统,每个不同的虚拟用户使用不同的IP地址访问服务器是非常有必要的。
               . 超时(timeout)的设置。
               这项设置与系统Web服务器、数据库服务器、中间件服务器等超时设置有关,建议工具的设置值大于等于系统服务器的设置值。
               . 并发用户连续执行交易数的设置。
               每个虚拟用户在并发时,串行循环执行的交易数建议设置为3~5个。
               . 错误跟踪。
               测试期间的报错是故障定位的主要依据,应该分清错误的来源,包括服务器端错误、客户端错误以及网络错误。
               . 利用动态数据处理技术。
               对某些动态值,每次执行它都在变化,如果不加处理,往往导致负载测试失败。
               . 尽量将执行负载测试的机器合理分布。
               将负载生成器布置在不同的网段,有利于模拟来自不同用户群的负载。
               . 并发用户数量极限点。
               压力测试的目的是测试系统能够支持的最大并发用户数。
               . 负载生成器的资源使用率也有必要监控。
               负载生成器的资源使用超出范围,导致模拟客户端并发请求失败。
               . 设置并发集合点。
               在脚本中设置并发集合点,可以将录制的完整操作过程分解为一个个小的并发交易。
               . 工具参数的配置。
               工具参数的配置非常灵活且有效,在下面的章节中将详细论述。
               脚本调试技术
               下面介绍几个脚本调试的例子,读者可在此基础上进一步提高调试脚本的技术。
                      TUXEDO
                      这一类中间件,脚本处理的重点包括:
                      . 管理TUXEDO缓存。
                      . 在TUXEDO命令之间传输数据。
                      Winsock
                      Winsock脚本调试的重点是在脚本中如何用变量来代替定值,即处理Winsock应用程序数据流。我们来看下面的示例脚本。可参见http://yuanhaisong.myip.org/sqa/webtest.htm。
                      原始脚本如下:
                      
                      
                      修改后的脚本如下:
                      
                      
                      SQL Server
                      这一类数据库,脚本处理的重点如下。
                      . 从存储过程中捕获一个值。
                      . 利用检索到的值作为一个参数传递给存储过程。
                      我们来看下面的实例脚本。
                      存储过程定义如下:
                      
                      脚本代码如下:
                      
                      第一步:加入必要的变量说明。
                      
                      
                      第二步:调用存储过程。
                      调用存储过程,然后修改其返回值。
                      
                      原始脚本代码:
                      
                      修改后的代码(使用字符串值):
                      
                      
               测试工具配置技巧
               在测试工具中有很多配置参数,不同的配置有可能会导致测试失败,也有可能产生不同的测试结果。根据实际负载压力需求正确地配置参数,就可以保证达到真实地模拟负载,并得出正确的测试结果。测试实施过程中,配置测试工具参数的方法可以参考工具的用户手册,配置参数的技巧就要靠测试工程师的经验和技术积累了。下面举例说明配置参数。
               . Form Field Comments(Yes/No):在脚本中是否给Form Field部分加注释;
               . Anchors as Comments(Yes/No):在脚本中是否给Anchors部分加注释;
               . Client Maps Comments(Yes/No):在脚本中是否给Client Maps部分加注释;
               . Debug Comments(Yes/No):在脚本中是否给Debug部分加注释;
               . Doc Title Verification(Yes/No):脚本录制过程中是否校验文档Title;
               . Baud Rate Emulation(Yes/No):在脚本回放过程中是否模拟不同的带宽进行回放,如果需要,标明回放的带宽数值;
               . Encode DBCS Characters(Yes/No):是否将DBCS字符编码;
               . Cache(Yes/No):在脚本回放过程中,是否模拟缓存;
               . Dynamic Redirect(Yes/No):在脚本回放过程中,是否支持动态重定向;
               . Dynamic Cookies(Yes/No):在脚本回放过程中,是否支持动态Cookies;
               . Process Subrequests(Yes/No):在脚本回放过程中,是否支持进程子请求;
               . Persistent Connections(Yes/No):在脚本回放过程中,连接是否持久保持;
               . Max Concurrent Connection:在脚本回放过程中,最大当前连接数,默认值为4;
               . Max Connection Retries:在脚本回放过程中,最大当前连接重试数,默认值为4;
               . Server Response Timeout:在脚本回放过程中,服务器响应超时限制,默认值为120;
               . HTTP Version Detection:录制时采用的HTTP版本,默认值为Auto,既可以为1.0版本,也可为2.0版本,测试工具自动处理;
               . ActiveData(Yes/No):在脚本回放过程中,是否支持动态数据;
               . IPSpoofing(Yes/No):在脚本回放过程中,是否支持每个虚拟用户使用不同的IP实现并发;
               . Streaming Media(Yes/No):是否支持流媒体;
               . Hostnames as IP Addresses(Yes/No):是否支持使用IP地址标识主机;
               . Strip All Cookies From Requests(Yes/No):在脚本回放过程中,请求中是否包括Cookies;
               . Traffic Filters(Yes/No):在脚本回放过程中,是否需要流量过滤。
               上述参数,例如“Strip All Cookies From Requests”,决定测试过程的成败,比如有些系统将Session ID,或者用户的登录信息放在Cookies中,如果不加载Cookies,那么自然导致测试失败。又如“Server Response Timeout”,此值如果设置不合适,可能会使负载压力测试过程报错,并且这个错误是由测试工具本身导致的。“Persistent Connections”这项参数根据我们的测试需求来确定,如果我们侧重测试系统并发用户数,那么就不应该选择这项参数,而是采用间断连接;如果我们侧重测试系统交易响应时间,那么选择这项指标会使系统响应发挥最好。“Baud Rate Emulation”帮助测试工程师实现在不同的网络带宽下实施负载压力测试等。
 
 相关知识点:
在执行期间查看Vuser
数据库服务器性能问题及原因分析..
以可度量的指标制定目标
负载压力测试工具的局限性
中间件资源占用监控
数据库资源监控
负载压力测试需求分析原理
配置终端服务设置
大数据量测试
交易处理性能指标
测试执行
开发阶段创建一个负载压力性能测..
获取测试结果
资源占用性能评估
UCML(User Community Modeling ..
测试环境配置
查看硬件或软件升级
自己动手编写测试工具
疲劳强度测试
确定系统组件
检查测试目标
测试策略
任务分布
应用在服务器上性能的测试
定义性能度量的范围
服务器操作系统资源监控
Oracle的并行执行特性
疲劳强度测试
综合数据量测试
多线程服务器
优化调整设置
独立数据量测试
定义测试目标
评估新产品
大数据量测试类型

定义最优的硬件配置
交易处理性能评估
索引
Oracle
度量系统容量
UNIX操作系统
验收阶段在多等级范围内测试并调..
WebSphere
TUXEDO
性能调优
测试报告
并发处理能力差
测试需求内容
分析应用程序
准备过程中与用户交流
产品生命周期中负载压力测试计划..
选择Vuser
负载压力测试基础概念
计划方案实施
测试计划
负载压力测试中的盲点
需求分析方法
测试工具准备
故障分析
测试内容
任务分布图方法
配置WAN仿真设置
Windows操作系统
测试数据准备
测试案例制定
应用在客户端性能的测试
交易混合图方法
Sysbase
DB2
度量最终用户响应时间
日常业务疲劳强度模拟
负载压力测试解决方案
负载压力测试策略
用户概况图方法
配置Vuser组中的Vuser
测试需求分析
为什么要准备测试数据
确定瓶颈
运行场景
描述系统配置
测试环境的基本原则
应用在网络上性能的测试
结果评估与测试报告
配置Vuser运行时的设置
配置脚本
定位锁冲突,修改锁冲突发生严重..
配置负载生成器
进行必要的数据分布
测试环境、工具、数据准备
测试脚本录制、编写与调试
SQL Server
性能测试
在需求分析中充分关注负载压力性..
负载压力测试工具选择
监视场景
负载压力测试的测试环境
确定测试的时间
负载压力测试概述
分析使用模型
负载压力测试目的
监视并记录性能相关数据
负载压力典型问题分析
Oracle与提高性能有关的特性
服务器操作系统资源占用
故障分析重点内容
中间件服务器监控
选择测试硬件和软件
运行阶段持续监控系统负载压力性..
从设计中得到负载压力性能指标
定位资源占用较大的事务并做出必..
负载压力基础概念
负载压力测试指标
压力测试
测试协议选择
定义Vuser活动
大数据量测试
案例二:通用应用系统性能评测环..
分区
负载压力测试实施
主流负载压力测试工具介绍
并发性能测试
散列簇
大数据量管理
IIS
测试环境准备
80~20原理测试强度估算
Web服务器监控
创建Vuser组
Apache
负载压力测试实施步骤
测试案例
检查可靠性
同时读取多块数据
案例一:Web服务器通用性能测试系..
自动生成大数据量
并发性能测试
场景制定
经验探讨
高峰业务疲劳强度模拟
良好的测试环境标准
WebLogic
Web网站故障分析举例
性能评测
依靠工具准备测试数据的方法
测试数据概念
数据库资源占用监控指标包括
负载测试
锁冲突严重
单一类型事务响应时间过长
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有