概述

jmeterGUI模式下,性能测试的结果往往误差很大,因为GUI本身就会消耗一部分资源。所以我们常常用命令行去跑性能脚本,得出结果

同时,jmeter在命令行下还可以生成多维度的测试报告,里面包含了常用的性能指标和监听器图表。

操作步骤

详见:JMeter(十四)-自动生成测试报告

注:如果想动态的执行线程数,我们需要在GUI模式下把线程组和持续时间设置成全局属性

${__P(threadNum,)} 获取线程组属性
${__P(cycle,)} 获取迭代次数属性
${__P(time,)} 获取时间属性

动态执行的命令如下:

jmeter -JthreadNum=100 -Jtime=180 -n -t  命令行动态设置线程数/时间(秒)

下图表示100线程并发运行180s

用户登录-考勤-退出并发测试-结果分析

针对Jmeter(四十七)_负载测试统计超时率这篇文章,我们用命令行重新生成测试报告并分析一下结果

目标值:

测试结果:

1. 响应时间、业务成功率、并发量

根据JMeter命令行生成的html样式测试报告结果分析,统计数据如下:

从图中初步分析:

1)响应时间:登录并发测试场景中,并发量=100时,本次以max采样数据统计,总体请求的平均响应时间≈1s,没有超时。登录,考勤打卡、退出系统这些过程达到预期目标
2)业务成功率:并发量=100时,业务成功率=100%(测试脚本中设置有断言,可结合检查断言效果),符合预期目标
3)并发量:线程组设置100个线程,运行过程中未出现任何异常,满足100个线程并发操作的需求

APDEX性能指数

Apdex:APDEX性能指数(Application Performance Index),是一个国际通用标准,Apdex是用户对应用程序性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,把最终的用户体验和应用性能作为一个完整的指标进行统一度量

下图表示通用用户满意度区域,0表示没有满意的用户,1代表所有用户都满意。实际业务系统开发过程中,1是团队所追求的目标

对于opms业务,100个用户并发登录的APDEX指标如下所示。从图中分析,整体Apdex值和单个步骤的Apdex值都比较大,表示用户满意度比较大,侧面说明此时服务器响应速度较快。

接下来我们将线程数修正为200,持续时间5分钟,观察html报告

从图中分析得出:

1)响应时间:登录并发测试场景中,并发量=200时,本次以max采样数据统计,退出系统的业务响应时间未达到预期目标
2)业务成功率:并发量=200时,退出系统的业务成功率=99.3%(测试脚本中设置有断言,可结合检查断言效果),不符合预期目标
3)并发量:线程组设置200个线程,退出系统的出现系统异常,有12个请求没有接收到响应。

登录和退出的Apdex值相对较低,表示用户满意度不高,侧面说明此时服务器响应速度略慢。

Jmeter(四十八)_动态线程分析HTML测试报告的更多相关文章

  1. Jmeter(四十九)_常用的性能测试监听器

    概述 jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表. 常用监听器 1:Transactions per Second 监听动 ...

  2. Jmeter(四十八) - 从入门到精通高级篇 - Jmeter监控服务器性能(详解教程)

    1.简介 JMeter是一款压力.接口等等的测试工具,Jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,用来监控服务器资源使用情况,不过需要安装一些插件.JMeter正常自 ...

  3. Jmeter(四十二)_控制器下遍历一组参数

    概述 在接口自动化的过程中,经常遇到需要遍历的参数组.jmeter在中,foreach控制器可以实现遍历参数,但是只能有一个入参.一旦遇到数组,foreach控制器表示我也无能为力... 为了解决这个 ...

  4. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. J2EE进阶(十八)基于留言板分析SSH工作流程

    J2EE进阶(十八)基于留言板分析SSH工作流程   留言板采用SSH(Struts1.2 + Spring3.0 + Hibernate3.0)架构.   工作流程(以用户登录为例):   首先是用 ...

  6. SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)

    0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...

  7. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  8. 孤荷凌寒自学python第四十天python 的线程锁RLock

     孤荷凌寒自学python第四十天python的线程锁RLock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 因为研究同时在多线程中读写同一个文本文件引发冲突,所以使用Lock锁尝试同步, ...

  9. 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

随机推荐

  1. Java自学-面向对象 类和对象

    Java中的类和对象 引入面向对象的基本概念 假设,我们要设计一个LOL这样的游戏,使用面向对象的思想来设计,应该怎么做? 步骤 1 : 设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必 ...

  2. python基础--py2与py3编码

    python2 与 python3的编码和解码 注意:小心,容易弄混 目录: 1.python2d 的encode & decode 2.python3的encode & decode ...

  3. Buffer、核心API、npm

      Buffer基本操作 Buffer对象是Node处理二进制数据的一个接口.它是Node原生提供的全局对象,可以直接使用,不需要require(‘buffer’). 实例化 Buffer.from( ...

  4. SPRINGBOOT注解最全详解(

    #     SPRINGBOOT注解最全详解(整合超详细版本)          使用注解的优势:               1.采用纯java代码,不在需要配置繁杂的xml文件           ...

  5. C语言中指针和数组

    C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之 ...

  6. Httpd服务入门知识-使用mod_deflate模块压缩页面优化传输速度

    Httpd服务入门知识-使用mod_deflate模块压缩页面优化传输速度 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mod_deflate模块概述 mod_deflate ...

  7. CString写的web server

    socket通信机制 文件加载机制 手抄代码 test\\2017

  8. egg 阻止 sql 注入,相关文章

    egg 阻止 sql 注入,相关文章 网址 注意!!我们极其不建议开发者拼接 sql 语句,这样很容易引起 sql 注入!!如果必须要自己拼接 sql 语句,请使用 mysql.escape 方法. ...

  9. SpringBoot配置ThreadPoolTaskExecutor

    package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframe ...

  10. js回调与异步加载的用法

    以前还是菜鸟的时候(虽然现在依然很菜 -_-|| )对异步加载与回调函数的技术无比向往,但也一直没有使用过,这次因为页面逻辑太过复杂,一堆请求逻辑,如果还是用顺序请求,页面的速度... 领导又要挠头了 ...