zoukankan      html  css  js  c++  java
  • jmeter模拟spike测试(尖峰测试)

    概述

    尖峰测试(Spike testing)在性能测试中属于压力测试的一个子集。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。

    为了验证我们的网站在访问用户急剧增加的情况下,或者短时间内反复急剧增加工作负载时能否正常工作;以及程序能否从高负荷中恢复并正常工作时常常用到这种测试手法。

    Spike在英文中是钉子的意思,或者我们可以将其称之为冲击测试,反复冲击服务器。

    常见的场景有

    12306开始售票时用户急剧增加


    网站公布高考成绩、录取分数时,用户急剧增加


    网站投放商业促销广告和促销活动,如双11和618等活动开始时,用户急剧增加


    等等。。。。

     

    现在我们假设有这样一个场景

    我们的网站正在平稳运行的时候,突然有一波1000用户同时访问,我们称之为第一浪潮。访问了30s之后,第一浪潮在15s内逐渐退出系统。

    在第一浪潮退出系统的同时,第二波2000用户在极短时间内又突然涌入网站,我们称之为第二浪潮。在访问30s之后,第二浪潮在15s内也逐渐退出了系统。

    在第二浪潮退出系统的同时,第三波3000用户又突然涌入网站,我们称之为第三浪潮。在访问30s之后,第三浪潮在15s内也逐渐退出了系统。

    在第三浪潮退出系统的同时,第四波1000用户又突然涌入网站,我们称之为第四浪潮。在访问30s之后,第四浪潮在15s内也逐渐退出了系统。

    并发的用户就像浪花一波一波的不断涌入系统,拍打服务器,考验我们的系统能否顶住压力并平稳运行

     

    测试方案设计

    我们知道,jmeter中的基础线程组用来构成对服务器的压力。

    我们在添加定时器之后,可以模拟出某一瞬间的压力。

    但是这种线程组只能模拟出一个尖峰,如果我们想要模拟出那种浪潮式的场景,它不能满足我们的要求。

    jmeter提供了另一个线程组满足我们的测试需求

    Ultimate Thread Group(终极线程组)

     听起来是不是有点高端?下面我们来了解一下它的用法

     如图所示

    启动的线程数量(Start Threads Count),也就是访问的用户数

    延迟时间(Initial Delay,秒),也就是压力到达的时间

    线程启动时间(Startup Time,秒),也就是为了满足预期压力而加载线程所需要的时间

    压力满足之后持续运行的时间(Hold Load For,秒)

    释放掉压力需要的时间(Shutdown Time,秒)

    每一个Thread schedule 都是一个线程组。因此我们可以把这个终极线程组理解为多个基础线程组的压力叠加

    图中我们模拟出了四个spike场景

     在第一批1000用户访问完毕的时候,第二批2000用户的压力又开始增加,第二批2000用户压力释放之后,第三批3000用户的压力又开始增加。。。。

    下图是单位时间内活动的真实线程数,可以看出在中间两个批次压力下,线程根本来不及释放掉

    结合tps监听和聚合报告可以看出,spike场景测试下,有很多事物没有正确响应,错误率达到了20.78%

  • 相关阅读:
    java7底层源码
    google的collection
    2017年八大顶尖的技术趋势
    【译】STM32L4x6系列用户手册第四章
    FRDM-KL43开发板驱动段式液晶SLCD的实现方法
    如何根据丝印查找相关的产品型号
    Arduino Tian开发板:一个功能强大的天气预报中心
    在STM32F746G-DISCO开发板上使用Nabto + FreeRTOS的演示热泵应用
    为LPC1549 LPCXpresso评估板开发基于mbed的项目
    使用LPCXpresso开发板调试外部的电路板
  • 原文地址:https://www.cnblogs.com/Zfc-Cjk/p/11109019.html
Copyright © 2011-2022 走看看