使用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. jmetter持续时间_【转】Jmeter做web压力测试时设置持续时间注意点

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

  2. 使用jmeter进行http压力测试(适合小白观看)

    今天2019年2月4日,除夕贴完对联等着过大年了! 今天来更新一篇博客,关于如何使用 jmeter 对web 进行压力测试,由于我的个人电脑是 deepin(Linux) 操作系统,因此这里就在Lin ...

  3. 告诉你怎么在Jmeter中进行压力测试

    一.什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试.负载测试.压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统 ...

  4. JMeter,LoadRunner,软件压力测试?

    目录 JMeter LoadRunner 软件压力测试?软件压力测试工具和流程有哪些 JMeter LoadRunner

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

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

  6. 全网最新最全的jmeter接口测试,压力测试

    目录 一.前言 二.接口测试 2.1Jmeter-http接口脚本 2.2Jmeter-webservice接口脚本 三.压力测试 3.1压测任务需求的确认 3.2压测设置 3.3压测结果查看 3.4 ...

  7. jmeter对oracle压力测试

    下载Oracle的jdbc数据库驱动包,注意Oracle数据库的版本,这里使用的是:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 ...

  8. 学习笔记-JMeter 进行接口压力测试

    一.压力测试场景设置 1.场景设定:进行接口压力测试时,有单场景也有混合场景.单场景就是对一个接口进行请求:混合场景需要对多个接口进行请求,在流程类业务场景会运用到 2.压测时间设定:通常时间为10- ...

  9. Jmeter负载和压力测试

    负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间. 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响. TPS和QPS的区别: tps可 ...

最新文章

  1. 云计算的认识和看法_【云计算】如何理解云计算才是正确的?
  2. 单例设计模式详解+源代码+JDK源码应用——Java设计模式系列学习笔记
  3. 大专经过计算机统考,成人大专计算机统考选择题汇总
  4. C# 2.0 锐利体验
  5. 在Mac电脑上如何对 Brotli格式进行压缩与提取
  6. Codeforces Round #162 (Div. 2) B. Roadside Trees (Simplified Edition)
  7. Silverlight 结合WCF Duplex Service聊天程序出炉
  8. mpvue微信小程序引入腾讯地图sdk
  9. 【STM32+STM32CubeMX】控制ws2812b灯珠
  10. Ubuntu server 20.4 配置静态ip
  11. 服务器 t610硬盘开关,戴尔服务器T610
  12. iOS10.3正式版发布:iOS10.3新功能有哪些? 韩俊强的博客
  13. 计算机组成原理百道必考大总结(下)
  14. 二叉树的顺序存储及基本操作
  15. chrome浏览器当鼠标碰到超链接的时候会窗口会抖动
  16. 【设计模式】单例模式是什么?如何实现单例模式?单例模式常见问题?
  17. 解决Unknown column ‘xxx‘ in ‘where clause‘问题!!(泪的教训!!)
  18. 【机器学习笔记37】模糊聚类分析(基于最大生成树)
  19. 微信语音怎么转发详细转发教程详解
  20. 您的下个中文网站可以使用的5个高质量中文Webfont

热门文章

  1. 封装进程内存相关操作函数
  2. 借条的注意事项,上面不能有这3个字
  3. 剑指offer python版 找出数组中重复的数字
  4. vs2010类文件添加版权版本作者信息
  5. 表单序列化提交中文乱码解决方案
  6. 双向链表(C++实现)
  7. 设计模式 - Strategy
  8. jQuery中增加新元素后没法响应原有的事件
  9. 【日志】2011.12.24
  10. 保持一颗好学之心(转)