jmeter安装 提交的数据需要解码怎么处理

apache-jmeter-2.6脚本参数化处理 - aovenus的专栏
- 博客频道 - CSDN.NET
apache-jmeter-2.6脚本参数化处理
【背景】:
利用apache-jmeter-2.6进行性能测试,对于录制的测试脚本中,只记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。这时,apache-jmeter-2.6和LoadRunner一样,也提供了可以进行参数化设置,以使用多个不同的值提交应用请求。
【操作步骤】:
1、以某系统登录为例,利用Badboy录制测试脚本后,可以利用apache-jmeter-2.6打开利用Badboy录制的测试脚本,查看登录用户名:
2、对登录用户名进行参数化,将录制的登录用户名修改为${username}
3、本次计划将登录名参数数据存放在CSV文件中,故点添加—&配置元件——&CSV Data Set Config,新增CSV Data SetConfig配置元件。
输入文件名Filename、参数名(Variable Names)等。
【注意】Variable Names必须和步骤2中设置的参数名(本例中为username)一致。
4、打开用户登录名参数化文件,输入参数化用户登录名数据并保存。
5、执行脚本。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:124790次
积分:2615
积分:2615
排名:第6329名
原创:141篇
转载:30篇
评论:16条
(1)(1)(1)(1)(6)(3)(5)(2)(1)(2)(9)(1)(2)(7)(10)(8)(4)(7)(8)(6)(4)(5)(6)(5)(1)(12)(14)(16)(1)(7)(3)(1)(2)(1)(4)(1)(1)(4)使用JMeter做压力测试-对数据库 - mikyviky的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园 - Powered by X-Space
使用JMeter做压力测试-对数据库
& 09:53:57
/ 个人分类:
作为一名开发人员,大多情况下都会认真的做好,但是却常常忽略了之后的压力测试,尤其是在面向大量用户同时使用的Web应用系统的开发过程,压力测试往往是不够充分的。近期我在一个求职招聘型的网站项目中就对压力测试的重要性体会颇深。  在项目中,我负责开发职位信息的搜索部分,但是由于缺乏压力测试,仓促将搜素部分的功能提交到生产环境,结果当并发量稍稍到达一定程度时,系统便已经不堪重负。无奈之下向网上资源查询解决方法,其中一个就是对现有的应用做足够到位的压力测试。  压力测试有着很丰富的内容,而这里,我只针对应用中所遇到的问题以及解决方法做一个简单的描述,希望对以后遇到同样问题的朋友能够起到些许帮助作用。  我自己做的例子使用的环境是:    测试工具:JMeter 2.3.1    数据库: 10G    环境:JDK 1.6.0_05(也可以使用JDK1.4及以上版本)  1.创建好的JMeter测试计划树形结构图如下:  2.在刚打开JMeter的时候,默认会存在两个节点,一个是" Plan",点击这个节点,在右边的属性页面中,命名为"我们的数据库测试计划"  在属性页的最下面,我们看到设置jar包所在路径的选项,默认存在一个选项"E:\software\develop\testunit\jMeter\jakarta-jmeter-2.3.1\lib",这个是我的机器中JMeter的lib目录,在这个例子中,Oracle的jdbc驱动也已经拷贝到该目录下。  3.新增一个"Thread Group",重命名为"使用变化的来做数据库压力测试"。其中,"Number of Threads"表示的是JMeter会同时创建多少个线程来进行压力测试,对于一个网站而言,也就是模拟一次存在多少个用户来访问该网站;而"Ramp-Up Period(in seconds)"表示JMeter每个多少秒发动并发;"Loop Count"则是指配置好的并发情形发生多少次。  4.在"Thead Group"下创建一个"User Defined Variables",即用户自定义变量,重命名为"我们定义的动态语句部分",这里我们使用它来生成动态SQL语句,让用户每次访问数据库的SQL语句都不一样,这样减少Oracle数据库对相同SQL语句的缓存对测试结果所带来的影响。&  变量定义的完整内容如下:Name Valuestr${__split(D610 or 笔记本|D610 or D620|D620|服务器,keyword,|)}many_sqlp_name like '%D610%' or p_name like '%AIX%'| p_name like '%笔记本%' or p_name like '%D610%'|p_name like '%D610%'| p_name like '%AIX%'smt${__split(${many_sql},smt,|)}  注:${__split(...)} 是JMeter中自带的拆分字符串为数组的函数,可以通过JMeter工具栏"Options"-&"Function Helper Dialog"来打开函数代码辅助工具生成我们所需的函数调用。  另外有个需要注意的问题是:在${__split(...)} 中,如果拆分字符串中的内容包含有符号",",一定得用符号"\"进行转义,否则可能被JMeter误认为是参数分隔符,会导致无法正确生成字符串数组。  5.接下来是配置JDBC连接设置&  6.创建一个具体的JDBC请求&  "Query Type"中选择的是预编译语句;  SQL语句当中,动态内容的代码行是"and contains(p.p_name, ?) & 0",这里的"?"就是预编译语句中的动态参数,在属性页下面的"Parameter Values"和"Parameter types"来指定,由于预编译语句在教程已有很多讲解,这里不再赘述。  注:这里有一个JMeter的函数"__V..."没有提到,将在后面说明另外一个JDBC调用测试的时候进行补充。  7.创建三个监听器,可以从三个不同的层面来观察响应结果  执行一下测试计划,我们来看看三个监听器所返回的结果是怎样的。&以上是表格方式查看响应结果的情况,可以看到通过表格可以查看某个范围内的响应时间和响应状态是否正常;&&&以上三幅截图则是来自树形监听器,树形监听器在几种监听器中应该是最细致的,可以查看响应状态、时间、以及执行的SQL语句,乃至返回的结果均能进行验证。至于上面的图形监听器,可以宏观的观察SQL语句在压力测试下响应的平滑度,并且有一定的统计信息,能够观察平均响应时间等。  现在我们来看另外一种方式编写我们的JDBC调用。就是使用JMeter提供的函数动态生成我们所需要不断变化的SQL语句部分。之所以需要这么做是为了方便我们观察执行的SQL语句内容。  在前面使用预编译的方式,传递动态参数的SQL语句执行的结果,大家已经看到过,在树形监听器中,我们观察到到执行过的SQL语句是:Sql代码&SELECT&* &&FROM&(SELECT&tmp.*,&ROWNUM&rn &&FROM&( &&select&p.p_id,&p.p_name,&c.cmp_name &&from&test_product&p,&test_company&c &&where&p.cmp_id&=&c.cmp_id &&and&contains(p.p_name,&?)&&&0 &&&&ORDER&BY&p.p_id&desc&&)&tmp &&WHERE&1&=&1&AND&ROWNUM&&=&100) &&WHERE&1&=&1&AND&rn&&=&1&&SELECT *
FROM (SELECT tmp.*, ROWNUM rn
select p.p_id, p.p_name, c.cmp_name
from test_product p, test_company c
where p.cmp_id = c.cmp_id
and contains(p.p_name, ?) & 0
--and (p.p_name like '%D%' or p.p_name like '%AIX%')
ORDER BY p.p_id desc
WHERE 1 = 1 AND ROWNUM &= 100)
WHERE 1 = 1 AND rn &= 1&&  这样导致我们无法看出参数"?"当中表示的具体值是什么,这对我们在某些情况下确定SQL语句的性能是相当不利的。所以我们这里需要使用JMeter的动态函数特性。  我们创建第二个"JDBC Request"节点,而后禁用"产品名 全文关键字 JDBC Request",将新创建的"JDBC Request"重命名为"产品名 like JDBC Request",将其中的SQL语句改写为:Sql代码&SELECT&* &&FROM&(SELECT&tmp.*,&ROWNUM&rn &&FROM&( &&select&p.p_id,&p.p_name,&c.cmp_name &&from&test_product&p,&test_company&c &&where&p.cmp_id&=&c.cmp_id &&AND&(&${__V(smt_${__Random(1,4,rnd)})}&) &&ORDER&BY&p.p_id&desc&&)&tmp &&WHERE&1&=&1&AND&ROWNUM&&=&100) &&WHERE&1&=&1&AND&rn&&=&1&&SELECT *
FROM (SELECT tmp.*, ROWNUM rn
select p.p_id, p.p_name, c.cmp_name
from test_product p, test_company c
where p.cmp_id = c.cmp_id
AND ( ${__V(smt_${__Random(1,4,rnd)})} )
ORDER BY p.p_id desc
WHERE 1 = 1 AND ROWNUM &= 100)
WHERE 1 = 1 AND rn &= 1&&  这里核心的部分就是代码行"AND ${__V(smt_${__Random(1,4,rnd)})} "。"${__Random(1,4,rnd)}"用来生成随机数,取值范围在1到4之间,而"__V(...)"函数帮助我们转义"smt_${__Random(1,4,rnd)}"生成的内容,很类似于JavaScript中的"eval"函数。  例如"${__Random(1,4,rnd)}"生成随机数为1,则"smt_${__Random(1,4,rnd)}"对应的内容为"smt_1","__V"将获取数组变量"smt"中的第一个元素,于是生成的SQL语句如下:  这里我们可以清楚的看到所执行的SQL语句。后记  本例中我们使用了JMeter附带的函数"__split"和"__V","__Random"等等,对于这些函数的描述可能不够完整,亦可能不够准确,更多详尽的解释,大家可以参考JMeter官方文档。developerWorks 社区
本文通过在性能测试中使用 JMeter 来模拟变化的并发用户负载,最终完成对 SOAP 服务的系统测试。如果您项目的系统测试预算 ( 很可能在时间上)有限,并且您的解决方案 JMeter 测试工具,那么本文中的经验可以帮助您计划自己的 Web Services 测试策略。
, 实习生, WSO2 Inc
孙春华, 现在在 IBM IP&S QA 部门实习 , 做 InfoSphere 系统测试,对各种开源的测试工具以及测试自动化技术比较感兴趣。
, 高级软件工程师, WSO2 Inc
杨佑鑫,目前主要从事 InfoSphere Information Server 系统测试相关工作。
, 软件工程师, WSO2 Inc
陆亮,2008 年 6 月加入 IBM, 是 IBM CDL 的软件工程师 , 目前主要从事 InfoSphere Information Server 系统测试相关工作
Appache JMeter 以及 SOAP 协议简述开源测试工具:Appache JMeterJMeter 是 Apache 基金会 Jakarta 上的一个纯 Java 开源项目,起初用于基于 Web 的压力测试(pressure test),后来其应用范围逐渐扩展到对文件传输 FTP, 大型数据库(JDBC 方式),脚本程序(CGI, Perl 等),Web Services,Java 应用系统等方面的测试。JMeter 本身主要用于性能测试,如系统压力等。除此之外,JMeter 能够对应用系统做功能测试和回归测试,并且能够通过使用带有断言的脚本程序来验证系统然后返回用户期望的结果。为了提高工具的应用灵活性,JMeter 允许使用正则表达式创建断言。正是由于它的灵活性和可扩展性,JMeter 逐渐成为流行的开源测试工具。消息传递协议:SOAPSOAP(Simple Object Access Protocol)称为简单对象访问协议,
是 W3C 定义的一种标准消息传递协议,而它通常被认为是 Web Services 的事实标准。SOAP 协议使用 XML 语言来描述,SOAP 消息格式是由 XML Schema 模式定义,因而通过使用 XML 命名空间使得 SOAP 具有很强的可扩展性。SOAP 是在去中心化(Decentralized)分布式(Distributed)环境中用来信息交换的一个轻量级协议。SOAP 本身并不定义像程序模型或实施声明等形式的语法,而只定义了一种简单机制:通过提供模块化的包装模型编码机制来传输应用信息。SOAP 基本结构:1) 信封 Envelope
Envelope 元素是 SOAP 中的根元素,并且定义为在 SOAP 消息中必须出现。Envelope 元素中可以包含多可选的 Header 元素,但同时必须要包含一个 Body 元素。2) 消息头 Header
Header 可能出现在 SOAP 消息中,是一个可选元素。如果出现在消息中,那么 Header 一定要是 SOAP 中的第一个元素。SOAP Header 在 Web Services 中的应用越来越广泛,例如在应用程序的安全性事物中使用标准的消息头文件,因而成为扩展 SOAP 协议的一个非常有效的方法。3)消息体 Body
Body 元素是 SOAP 中必须出现的一个元素,它要包含应用程序中的传输数据或者反馈消息。 应用程序中的传输数据可以是任意形式的 XML 数据。SOAP 消息接收者最终来处理 SOAP Body 体。JMeter 调用 SOAP 框架机制SOAP 使用 RPC(远程过程调用)和消息传递来建立通信服务,SOAP RPC 定义了用于表示远程过程调用和应答的协议。SOAP 协议本身仅仅定义了消息的交换结构,它可以和许多现存因特网协议结合在一起使用,其中包括超文本传输协议( HTTP),多用途网际邮件扩充协议(MIME),Java 消息服务(JMS)以及简单邮件传输协议(SMTP)等。目前与 SOAP 应用最为广泛的是 HTTP 协议和 JMS 协议,而与之相对应的两种应用就是 SOAP Over HTTP 和 SOAP Over JMS。根据 JMS 的规范,消息交换有 2 种方式:消息发布 / 订阅方式和点对点方式。由这两种交换方式所建立的消息收发系统都是异步的,即 JMS 客户机可以发送消息而不必等待回应。如果应用程序测试者或测试脚本开发者希望每一条消息都能够被处理并且消息总是能够被传送到指定的位置,那么应该使用点对点消息模型而不是消息发布 / 订阅模型。HTTP(超文本传送协议)是属于应用层的面向对象的协议,是万维网 (WWW) 的基础,由于其简单快速、灵活、无连接、无状态的方式,适用于分布式网络信息系统。SOAP Over HTTP 应用就是指的是遵守 SOAP 编码规则的 HTTP 请求 / 响应,我们可以用简单的公式来对此作一个描述:HTTP + XML = SOAP。JMeter 也同样提供了两种 Sampler 分别建立对这两种服务的调用:Web Services (SOAP) Request 和 JMS Point-to-Point。前者使用互联网中最为广泛的超文本传输协议( HTTP)而后者使用 JMS 协议,JMS 是 Java 平台面向消息中间件的技术规范,用它来提供创建、发送、接收、读取消息的服务。许多厂商目前都支持 JMS,包括 BEA 的 WebLogic JMS service,IBM 的 MQSeries 和 Progress 的 SonicMQ。图 1.JMeter 框架基于上述两种不同的协议对 SOAP 消息的一次简单调用机制流程准备测试环境当精心编写好测试脚本满怀信心的去运行测试计划时,发现所有的测试脚本都 failed 掉了,原因可能是你的测试环境中并没有完全准备好。下面给出了准备测试环境的详细步骤:1.环境变量设置:JMeter 运行在 JRE/JDK 之上,在所有开始之前要设置 JMeter 自动检测的环境变量 JAVA_HOME=#JAVA INSTALL DIRECTORY#.2.JMeter 安装:本文下面下载栏提供了 Apache JMeter 下载地址,首先要取得最新版本的 JMeter 测试工具,JMeter 最新版本包含了构建和运行绝大部分测试类型的文件,包括 Web (HTTP/HTTPS), FTP, JDBC, LDAP, Java, 和 JUnit 等。3.准备 jar 包:JMeter 虽然提供了对 SOAP Over HTTP 以及 SOAP Over JMS 测试的 Sampler,但是出于对 licence 的考虑它本身并没有提供 JMS 需要使用的 jar 包。因此,在运行测试之前需要将这些包复制到 JMeter 的 lib 目录下,下面列表对测试所需 jar 包作了详细说明。4.BeanShell 脚本处理:如果在测试用例中用到了 BeanShell 脚本,则需要将 BeanShell 包拷贝到 JMeter bin 目录下。BeanShell 是一种兼容 Java 语言的轻量级脚本语言,JMeter 脚本中可能会经常用它来做日志处理,正则表达式后处理(Post- Process)等。如果在测试用例中用到了 Mail Visualiser, Mail Reader 以及 Web Services (SOAP) sampler,则需要将 MAIL 包拷贝到 JMeter bin 目录下。如果在测试用例中用到了 JMS 相关的 sampler,则需要将 JMS 包拷贝到 JMeter bin 目录下。下面的列表列出了不同的测试用例所需要的 jar 包,以及其下载地址:bsh-2.0b4.jarhttp://www.beanshell.org/mail.jar /products/javamail/index.jspjms.jar/products/jms/docs.html调试脚本中非常有用的信息日志:jmeter.log 在脚本的调试和运行过程中,所以的日志信息都会记录在 jmeter.log 中,因此你会在这个文件中找到比较有用的信息。注意事项如果 JMeter 在执行测试脚本过程中应该修改 jmeter.bat 文件中的一些参数,参数大小可以根据测试计划合理确定:HEAP=-Xms256m – Xmx1024mNEW=-XX:NewSize=128m -XX:MaxNewSize=128mTENURING=-XX:MaxTenuringThreshold=2EVACUATION=-XX:MaxLiveObjectEvacuationRatio=20%PERM=-XX:PermSize=64m -XX:MaxPermSize=64mDEBUG=-verbose:gc -XX:+PrintTenuringDistribution此外,在搭建测试环境时还需要更多注意的地方:
JMeter 使用兼容 JKD1.4 或者更高版本
JMeter 无法识别 zip 格式的包文件,所以需要的包文件均要求以 .jar 结尾
JMeter 会自动在 JMETER_HOME/lib 和 ext 目录下寻找需要的类
对于使用 CSVDataSet, 那么不要勾选 "Memory Cache"否则数据无法迭代 使用 JMeter 连接 SOAP Over HTTP 服务JMeter 提供了 Web Service (SOAP) sampler,用以调用基于 HTTP 的 Web 服务。下面详细说明 SOAP Over HTTP 服务调用的各个属性。图 2.SOAP Over HTTP 服务调用的各个属性SOAP Over HTTP 服务调用的各个属性说明:WSDL URL:指定 WSDL 文件的目标地址 Web Methods:选择本次请求调用的方法 Protocol:指定使用的协议,默认为 HTTPServer Name Or IP:服务的地址(服务器名或 IP 地址)Path:调用方法所在的位置 Timeout:设置请求超时限制 SOAPAction:存在于 WSDL 文件中的调用方法,默认不必填写 Soap/XML-RPC Data:请求数据 下面是一次完整的 HTTP 请求与 HTTP 响应 SOAP 数据:HTTP Request
&soapenv:Envelope&
&soapenv:Body&
&q0:getEndDate&
&ip_id&12&/ip_id&
&/q0:getEndDate&
&/soapenv:Body&
&/soapenv:Envelope&
HTTP Response
&soapenv:Envelope&
&soapenv:Header/&
&soapenv:Body&
&p928:getEndDateResponse&
dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,
startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,
endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2005,MONTH=8,
WEEK_OF_YEAR=37,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=250,DAY_OF_WEEK=4,
DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,
MILLISECOND=0,ZONE_OFFSET=-,DST_OFFSET=3600000]
&/p928:getEndDateResponse&
&/soapenv:Body&
&/soapenv:Envelope&使用 JMeter 连接 SOAP Over HTTP 服务JMeter 提供了 Web Services (SOAP) sampler,用以调用基于 HTTP 的 Web 服务。下面详细说明 SOAP Over HTTP 服务调用的各个属性。图 3.SOAP Over HTTP 服务调用的各个属性SOAP Over JMS 服务调用的各个属性说明:QueueConnectionFactory:连接工厂的默认 JNDI 实体 JNDI name Request queue:JNDI 请求队列名字 JNDI name Receive queue:JNDI 接收队列名字 Timeout:请求超时设置 Communication style:通讯形式(包括仅仅请求和请求应答)Content:请求信封 JMS Properties:JMS 的一些属性设置(对于 IBM WAS 必须要有 targetService 属性)Initial Context Factory:JNDI 的初始会话工厂 Provider URL:服务提供地址 下面是一次完整的 JMS 请求与 JMS 响应 SOAP 数据:JMS Request
&soapenv:Envelope&
&soapenv:Body&
&tns0:getAuEmpPositionId&
&ev_id&6098&/ev_id&
&/tns0:getAuEmpPositionId&
&/soapenv:Body&
&/soapenv:Envelope&
JMS Response
&soapenv:Envelope&
&soapenv:Header/&
&soapenv:Body&
&p150:getAuEmpPositionIdResponse&
&getAuEmpPositionIdReturn xsi:nil="true"/&
&/p150:getAuEmpPositionIdResponse&
&/soapenv:Body&
&/soapenv:Envelope&设计高效的测试用例集压力测试或者系统测试不同于功能测试,测试的重点不在系统产品是不是满足设计需求。它所看重的是系统在大的用户量和负载情况下的可靠性以及系统响应 , 它目标是测试系统的执行效率,特别是在较短时间内系统负载快速增长时系统的相应速度。在实际的测试过程中,大量用户同时访问的系统节点也可能成为产品潜在的效率瓶颈。因此 , 压力测试和系统测试也往往是在功能测试之后进行。对于普通的软件系统 , 产品的瓶颈可能会在数据库服务器上,Web 服务器上,而对于 SOAP 服务系统测试,Web Services 服务器和 JMS 服务器是客户端请求的主要节点 , 同时,主要业务逻辑的处理也都分布在这些节点上,它们很有可能成为系统访问的瓶颈,如果这些节点出现问题,那么对整个系统的效率会有致命的影响,也是压力测试和系统测试要优先考虑的。改进测试策略、测试方法、测试过程,使用高效的测试用例集,从而保证产品质量。这个是主要目的,也是最直接的目的。一个高效的测试用例集应包含以及适应如下要素:
在什么时候确定要执行系统测试
如何去检测并解决系统性能和负载问题
收集监视服务器性能数据(I/O,CPU,MEM)
尽量减少因为个人配置和某些测试用例而造成系统出现错误和瓶颈
所有测试工作都得到有效协调并目标一致 当已经确定了所需的 JMeter Samplers,并且在此基础上设计出一个通用的测试计划,那么就可以构建我们的测试脚本了。本文的测试用例以及最终的测试计划也是建立在这些要素之上。测试计划(Test Plan)描述了测试运行过程中 JMeter 的执行顺序、过程以及步骤,一个完整的测试计划包括一个或者多个线程组 (Thread Groups)、循环控制器(Loop Controllers)、监听器 (Listener)、逻辑控制器(Logic Controller)、定时器(Timer)、断言(Assertions)、配置信息(Config Elements)等。在测试计划中添加一个用户定义变量配置元素(User Defined Variables), 可以在里面定义服务器地址,日志路径,超时限制等变量,提供脚本重用。同时添加两个用户组,一个是 SOAP Over HTTP Group,一个是 SOAP Over JMS Group。在每个用户组下面分别添加一个总的循环控制器(Loop Controller),用以控制脚本循环次数。在总循环控制器下面添加随机选择器(Random Selector)用以随机选择运行测试脚本。下图是我们整个的 Test Plan。图 4. 设计完成之后的 SOAP 测试计划启动 SOAP 服务测试当准备好我们的测试计划之后就可以启动执行压力测试了,为了记录测试结果和信息,要增加 Listener 来完成这个任务。JMeter 提供了可视化的界面以及统计报表来供我们选择。这里我们使用表格(Summary Report)的形式来查看和分析测试结果。你可以通过下面的步骤来给每个 Group 增加 Summary Report 监视器 :
1. 选中 Test Plan 中要添加 Listener 的 Group 节点,这里我们选择 SOAP Over JMS Group。
2. 右击选择 Add--&Listener--&Summary Report, 界面右边会相应的出现我们选择的 Listener 的设置信息。在经过一系列工作之后,已经完成了整个 Test Plan,现在可以选择 JMeter 菜单 run--&start 来启动我们的压力测试了。下图是运行过程中测试统计数据的实时跟新信息。为了增加请求负载和获得更有价值的数据,我们可以更改线程数、等待时间和循环次数。图 5. 基于吞吐量的测试结果报表(Summary Report)获得的经验总结:使用 JMeter 来作为测试工具对 SOAP 协议的服务进行压力和系统测试是一个很好选择,选择 JMeter 来进行 SOAP 测试具有以下显著的优点:首先 JMeter 提供了强大全面的 SOAP 请求 / 接收以及监视功能,允许你执行、捕获在客户端和服务器端的 SOAP 流量分析。其次,可以使用 JMeter 可以设计出高效、易维护的测试用例甚至测试计划。最后,我们可以选择 JMeter 提供的符合我们情况的结果 Listener,并且可以从这些 Listener 中很容易的分析出系统或者是服务存在的问题和瓶颈。总体上讲,我们在 JMeter 测试框架中构建的 SOAP 测试计划很好的完成了对 SOAP 协议的系统测试。下面详细列出了我们在本次测试过程中获得的技巧以及经验。测试工具的选择测试工具在软件和产品测试中是必不可少的,包括系统测试,压力测试,性能测试以及功能测试。它也会与要测试的产品,测试的领域以及测试的重点有很大的关系。因此,选择一款合适的测试工具对高效的完成测试是至关重要的。设计高效的测试计划一个高效的测试用例集可以快速的诊断出系统的性能瓶颈。 为此应该全面的分析了解要测试系统的架构与应用,尽量避免盲目或者重复的测试用例,最终来构建效率尽可能高的测试用例集。尽量全面的系统监控软件缺陷和系统性能瓶颈的诊断可能会需要各个方面的检测数据,它们对问题的解决会提供很大的帮助,因此测试过程中应该有全面的系统监控,包括服务器的各项数据(CPU,I/O,MEM), 后台数据库的各项数据,相应时间以及网络流量等。关注 SOAP 请求的超时(Timeout)基于 SOAP 协议的请求,无论是 SOAP Over HTTP 还是 SOAP Over JMS 都会有请求超时(Timeout),引起请求超时的原因可能是多方面的(服务器的响应速度,效率,网络带宽等),合理的分析以及设置请求超时能更准确的掌握产品的性能情况。
下载描述名字大小SOAP_Over_JMS.JMX15KBSOAP_Over_HTTP.JMX11KB
参考资料 到 W3C 官方网站阅读 。
到 Sun 公司 JMS 站点阅读 。
:您可以了解到 JMeter 的最新动态,同时可以下载到最新的软件版本。
在 上获得 JMeter 最新的源代码版本
:让您了解更多和 SOA 以及 Web 服务相关的内容,包括技术文章、教程以及特殊专题等。可以到 JMeter 官方网站下载
,体验强大的 DB2®,Lotus®,Rational®,Tivoli®和
WebSphere®软件。查看
的最新信息。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=SOA and web servicesArticleID=481690ArticleTitle=使用 JMeter 对 SOAP 应用进行压力或性能测试publish-date=

我要回帖

更多关于 jmeter教程 的文章

 

随机推荐