快乐学习
前程无忧、中华英才非你莫属!

Jmeter入门到精通-9

性能测试实战

     

    因为FTP测试相对简单,就不演示了,就一个get,post,获取文件,上传文件的性能进行监控就可以了! 


    数据库服务器性能测试,也不想演示了,因为测试MySQL的性能,用JMeter测,感觉不专业!这里小编推荐可以用数据库专用的压测工具,sysbeach 可以对数据库进行基准测试,以掌握数据库的性能情况。


     这个sysbeanch 是DBA人员经常使用的压测工具。很快能获得 TPS/QPS,POSIX线程性能, OLTP基准测试,调度程序性能,  磁盘io性能。但是很多测试人员的linux 和运维工具没有相关使用经验,还是用JMeter 演示一下怎么测试数据库吧!炒鸡煎蛋~,只要学过点java的童鞋,知道怎么配置jdbc的url完全就可以了~




 测试MySQL

  


 首先在测试计划中加载MySQL的jdbc驱动。







 JDBC Connection Configuration




Max Number of Connections

  池中允许的最大连接数。在大多数情况下,将其设置为零(0)。这意味着每个线程都将获得自己的池,其中只有一个连接,即连接不会在线程之间共享。

  如果您真的想使用共享池(为什么?),那么请将最大计数设置为与线程数相同,以确保线程不会彼此等待。



Max Wait (ms)


如果在尝试检索连接的过程中超过超时期限,则抛出错误



Time Between Eviction Runs (ms)

空闲对象逐出线程的运行之间的睡眠时间(以毫秒为单位)



Auto Commit


打开或关闭连接的自动提交 



Test While Idle  

测试池的空闲连接



Transaction  isolation    

事务级别,这块JMeter 没有相关文档解释他,学过数据库应该知道,脏读,不可重复读,等等。



数据库基础差的:建议看www.ztloo.com (同乐学堂)用PC端登陆,右侧MySQL 专题板块。




Soft Min Evictable Idle Time(ms)


在空闲对象清除者有资格驱逐连接之前,连接可能在该池中处于空闲状态的最短时间量,以及额外的条件,即至少minIdle连接仍保留在池中




Validation Query


用于确定数据库是否仍在响应的简单查询





Jmeter分布式性能测试


 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,这时可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试。



1、关闭防火墙

2、确定一台Controller 的主控制器,其他机器都作为agent。



调度机(Controller):主要负责性能测试脚本的分发,及各个执行机(Slave)的测试结果收集汇总,报告产出。

执行机(Slave):主要负责执行性能测试脚本及断言等(命令行模式执行,无界面),并将执行结果反馈给调度机(Controller),若断言执行成功则不返回请求响应数据及详细断言信息。


  

一、Jmeter分布式执行原理:

  1、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。

  2、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。

  3、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。

 

二、代理机(Agent)配置:

1、Agent机上需要安装JDK、Jmeter,并且配置好环境变量。

2、打开“运行”,输入"cmd",打开运行面板,输入“ipconfig”,找到IP地址,例如是:192.168.8.149

 

 

 

3、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,1099是端口号,可以随意自定义。

 

4、打开jmeter-server.bat文件,就设置完成了,等待控制机(Controller)启动。

 

三、控制机(Controller)配置:

1、Controller机上需要安装JDK、Jmeter,并且配置好环境变量。

2、打开“运行”,输入"cmd",打开运行面板,输入“ipconfig”,找到IP地址,例如是:192.168.8.174


  

3、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。

 

4、打开jmeter-server.bat文件,设置完成了。

 

四、开始添加线程组和请求来运行查看结果:

1、打开jmeter.bat文件,添加线程组,编辑线程数,这里设置100个线程数,循环2次,就是一台机器发送100*2=200个请求。

 

2、添加HTTP请求,这里以访问淘宝为例。

 

3、添加察看结果数和聚合报告,点击运行,可以选择远程启动或者远程全部启动,如果是点击远程启动,可以选择任意一台电脑来运行,如果是点击远程全部启动就会运行控制机和所有的代理机。

 

4、这里以点击远程全部启动为例。运行结束后,查看聚合报告,每台电脑设置的线程数为200,这里一共是两台电脑,所以是200*2=400个线程数。






注意:

  1、JMeter版本保持一致

  2、JDK版本保持一致,否则可能出现各种其他的问题








WEBService接口测试



什么叫webservice?


Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准通用标记语言下的一个子集)标准描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序       




Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。


XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。


Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。


WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。


UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。





     


        


具体开发JAVA开发WebSerivce 略。主要是演示怎么测它!




SOAP, REST and XML-RPC报文格式收集


SOAP Request

GET /stock HTTP/1.1
Host: www.kbcafe.com

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
  xmlns:m="http://www.kbcafe.com/stock">
  <soap:Header>
    <m:DeveloperKey>1234</t>
  </soap:Header>
  <soap:Body>
    <m:GetStockPrice>
      <m:StockName>HUMC</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>



SOAP Response 
HTTP/1.1 200 OK

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
  xmlns:m="http://www.kbcafe.com/stock">
  <soap:Body>
    <m:GetStockPriceResponse>
      <m:Price>27.66</m:Price>
    </m:GetStockPriceResponse>
  </soap:Body>
</soap:Envelope>
  


REST Request

GET /stock?StockName=HUMC HTTP/1.1
Host: www.kbcafe.com

REST Response
HTTP/1.1 200 OK

<?xml version="1.0"?>
<m:Price xmlns:m="http://www.kbcafe.com/stock">27.66</m:Price>


XML-RPC Request
POST /stock HTTP/1.1
Host: www.kbcafe.com

<?xml version="1.0"?>
<methodCall>
   <methodName>stock.GetStockPrice</methodName>
   <params>
      <param>
         <value><string>HUMC</string></value>
      </param>
   </params>
</methodCall>


XML-RPC Response
HTTP/1.1 200 OK

<?xml version="1.0"?>
<methodCall>
   <methodName>stock.GetStockPrice</methodName>
   <params>
      <param>
         <value><double>27.66</double></value>
      </param>
   </params>
</methodCall>



Jmeter也可以对WebService接口测试。本次测试的接口是:

getSupportCityString


获得支持的城市/地区名称和与之对应的ID

输入参数:theRegionCode = 省市、国家ID或名称,返回数据:一维字符串数组。

示例:

SOAP 1.2

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /WebServices/WeatherWS.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<getSupportCityString xmlns="http://WebXml.com.cn/">
<theRegionCode>string</theRegionCode>
</getSupportCityString>
</soap12:Body>
</soap12:Envelope>



HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<getSupportCityStringResponse xmlns="http://WebXml.com.cn/">
<getSupportCityStringResult>
<string>string</string>
<string>string</string>
</getSupportCityStringResult>
</getSupportCityStringResponse>
</soap12:Body>
</soap12:Envelope>


Step1:

添加线程组,并添加SOAP/XML-RPC Request Sampler。


Step2:

在URL中填写测试地址: http://ws.webxml.com.cn/WebServices/WeatherWS.asmx

在Soap/XML-RPC Data中输入:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<getSupportCityString xmlns="http://WebXml.com.cn/">
<theRegionCode>string</theRegionCode>
</getSupportCityString>
</soap12:Body>
</soap12:Envelope>



在发送的信息中,要填写真正的参数替换占位符<theRegionCode>string</theRegionCode>

为TestPlan添加用户定义的变量

最终发送的数据为

<theRegionCode>${RegionCode}</theRegionCode>


Step3:

在监听器中插入查看结果树。

发送请求后会发现响应数据错误,提示“服务器未能识别 HTTP 头 SOAPAction 的值: ”


这是因为服务器不知道以何种类型来解析请求数据,才导致没有正确的数据返回。

所以在发送请求之前,还有一个重要的步骤,就是添加HTTP信息头管理器


再次发送数据,可以成功获取城市代码。







来源:https://www.cnblogs.com/whitewasher/p/6946207.html

          https://www.cnblogs.com/fengpingfan/p/5583954.html

         https://blog.csdn.net/yangwenxue_admin/article/details/51059125

         https://blog.csdn.net/zhangchaoy/article/details/57412085

打赏

未经允许不得转载:同乐学堂 » Jmeter入门到精通-9

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:226134712
error: Sorry,暂时内容不可复制!