使用Jmeter对WebService进行压力测试

使用Jmeter对WebService进行压力测试
  现实项目中我们使用了Jmeter对webservice进行了压力测试,Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试。

JMeter的作用

1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。

二:关于Jmeter的相关环境变量的配置类似于Java的配置,参考网上资料

三:Jmeter针对Http协议的webservice测试实例。
    1:首先在测试计划中新建一个线程组



   
其中,线程属性中线程数和循环次数表示一次执行测试的时候真正运行的次数,也即访问webservice的次数.

2:线程组下面新建一个HTTP请求(关于访问接口服务的相关地址配置和一些参数的配置)和HTTP信息管理器(发送webservice服务时候的公共请求头),聚合报告(测试报告).







四:配置好一切之后,点击启动执行测试
=============we test webservice by http head start===========
name=clark
=============we test webservice by http head end===========

备注====================================以下为关于webservice服务的配置集成到spring中

applicationContext_webservice.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config />
    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <jaxrs:server id="restContainer" address="/">
        <jaxrs:serviceBeans><!-- 这里配置你的webservice bean定义。参考 org.iboxpay.payment.merchant.ws.MerchantWebService -->
            <!-- <ref bean="orderWebService" /> <ref bean="merchantWebService" /> -->
            <ref bean="clearUserWebService" />
            <ref bean="merchantWebService"/>
    <!-- <ref bean="balanceWebService" /> -->
        </jaxrs:serviceBeans>
        <jaxrs:extensionMappings>
            <entry key="json" value="application/json" />
            <entry key="xml" value="application/xml" />
        </jaxrs:extensionMappings>
        <jaxrs:providers>
            <!-- <ref bean="jsonExMapper" /> -->
            <ref bean="jaxbProvider" />
            <ref bean="jsonProvider" />
        </jaxrs:providers>

    </jaxrs:server>
    <bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider" />
    <!-- ********************使用jackson作为序列化器*********************** -->
    <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />

</beans>

web.xml文件中CXF插件配置webservice
<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

Java中web service服务的配置
package com.iboxpay.clear.webservice;


import javax.annotation.Resource;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Service;

import com.iboxpay.clear.service.SysResourceService;

@Path("/clearPro")
@Service("clearUserWebService")
public class ClearWebService {
    
    @Resource
    private SysResourceService sysResourceService;
    
    @Path("/dispath")
    @POST
    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
    @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
    public String dispath(String jsonStr) {
        System.out.println("=============we test webservice by http head start===========");
        System.out.println(jsonStr);
        System.out.println("=============we test webservice by http head end===========");
        return "can you";
    }

}


如果需要查看执行测试之后在Jmeter中的返回结果,我们需要在线程组下面新建一个察看结果树(右键线程组>添加>监听器>察看结果树),在响应数据一栏即可以看到响应返回的结果

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。