使用Jmeter至WebService压力测试

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

JMeter的作用

1.可以对HTTP和FTPserver进行压力和性能測试, 也可以对不论什么数据库进行相同的測试(通过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中的返回结果,我们须要在线程组以下新建一个察看结果树(右键线程组>加入>监听器>察看结果树),在响应数据一栏即能够看到响应返回的结果





注意:在Jmeter发送JSON字符串的格式进行測试的时候,我们传递JSON參数的时候不能给參数名称,而应该直接给值既能够。

否则传到后台的时候会包括一系列的非字符串样式--导致其乱码。无法正确解析为我们须要的对象。

{"name":"zhangsan","description":"its"}既能够,而无需jsonStr = {"name":"zhangsan","description":"its"}其传过来的json參数我们仅仅须要解析为我们后台相应的对象就可以。

/**

     * 将JSON字符串 转换为对象

     *

     * @author weiyuanhua

     * @date 2010-11-18 下午02:52:13

     * @param jsonStr

     *            JSON字符串

     * @param beanClass

     *            泛型对象

     * @param field

     *            对象中须要忽略的属性

     * @return

     */

    public static Object jsonToObject(String jsonStr, Class<?> beanClass,String... field) {

        JsonConfig jsonConfig = getJSONConfig(field);

        JSONObject jsonObject = JSONObject.fromObject(jsonStr, jsonConfig);

        return JSONObject.toBean(jsonObject, beanClass);

    }



private static JsonConfig getJSONConfig(String... field) {

        JsonConfig jsonConfig = new JsonConfig();

        if (field != null) {

            jsonConfig = new JsonConfig();

            String[] exclu = new String[field.length];

            for (int i = 0; i < field.length; i++) {

                exclu[i] = field[i];

            }

            jsonConfig.setExcludes(exclu);

        }

        return jsonConfig;

    }

使用Jmeter至WebService压力测试的更多相关文章

  1. JMeter接口测试和压力测试

    JMeter接口测试和压力测试 JMeter可以做接口测试和压力测试.其中接口测试的简单操作包括做http脚本(发get/post请求.加cookie.加header.加权限认证.上传文件).做web ...

  2. jmeter简单得压力测试

    Jmeter教程 简单的压力测试 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 阅读目录 什么是压力测试 ...

  3. (转)使用JMeter进行Web压力测试

    使用JMeter进行压力测试 说到压力测试,一般第一反应都是LoadRunner.这个软件也确实是自动化测试的一个事实标准.无奈这个软件太过庞大,以及不能在MacOS上使用.我由于项目的需要,需要对一 ...

  4. Jmeter入门(压力测试)

    Jmeter介绍 Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试). 而且用Jmeter 来测试 Restful API, 非常好用. ...

  5. Jmeter性能测试-分布式压力测试

    作为一个测试行业的菜鸟,由于投身于一个小公司,包揽所有的测试.刚开始的功能测试到接口测试,稳定性测试,兼容性测试等,一般由于是小项目所以对于性能有所忽略,也没怎么涉及,公司接了个大项目,后期对于性能上 ...

  6. Jmeter使用指南----压力测试工具

    来源: https://blog.csdn.net/u012111923/article/details/80705141 https://www.cnblogs.com/st-leslie/p/51 ...

  7. 【转】Jmeter做web压力测试时设置持续时间注意点

    头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...

  8. JMeter进入接口压力测试

    关键字: Jmeter.单接口.压力测试.插件监听.服务器端 摘要: 使用Jmeter对单个接口进行压力测试:监听并发量对接口响应时间.服务器资源占量.Jmeter本身只能获取到Tomcat的状态,所 ...

  9. jmeter APP接口压力测试

    第一步:获取开发文档,了解接口地址和参数名 第二步:jmeter中添加需要测试的接口 a.设计APP的接口框架: b.http请求默认值设置如下: c.接口中应需要用到sign字段,加密字符串与时间戳 ...

随机推荐

  1. 网络授时服务 NTP

    NTP  --- Network Time Protocol 网络授时服务,他解决的主要问题就是实现两台或者多台机器的时间同步问题,而传统的格林尼治时间不是标准的时间,因为地球自转的不是规则的. 网络 ...

  2. char、signed char 和 unsigned char 的区别

    ANSI C 提供了3种字符类型,分别是char.signed char.unsigned char.而不是像short.int一样只有两种(int默认就是signed int). 三者都占1个字节( ...

  3. 基于visual Studio2013解决C语言竞赛题之0906文件插入

       题目

  4. 在不同编译环境中如何使用sleep()函数

    今天在学习有关时间函数时,想让程序暂时挂起,一段时间后在继续执行! 用到了系统函数sleep(): 在vc下sleep函数是以毫秒为单位,如果想让其停留3秒,需要这样做  sleep(3*1000); ...

  5. Thawte SSL123 SSL证书-中国证书.com

    Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...

  6. linux系统挂掉问题的分析

    玩linux系统,经常遇到的一件事就是做了某个操作之后系统会突然挂掉,这要怎么办? 1. 首先我们要看log,看看是否会留下一些蛛丝马迹,比如PC/LR是否有留下来. PC是ARM的一个寄存器,即程序 ...

  7. 《Swift Programming Language 》——Swift中怎样使用继承(Inheritance)

    一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性.当一个类继承其他类时,继承类叫子类(subclass),被继承类叫超类(或父类,supercla ...

  8. 关于for循环中i=0与i=arr.length容易被忽视的bug

    for循环中的这两种写法 for(var i=0,len=arr.length;i<len;i++){ } 上面这种是最为常见也是初学者经常写的 而下面这种写法,在性能上则是比上面的更好,然而我 ...

  9. 设置MyEclipse中代码的换行长度

    1.打开Preferences -> Java -> Code Style -> Formatter. 2.选择Edit -> Line Wrapping  -> Max ...

  10. [置顶] Objective-C ,/,ios,/iphone开发基础:协议(protocol)

    protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 ...