当前位置: 首页 > news >正文

软件测试之jmeter性能测试让你打开一个全新的世界

一、Jmeter简介
1 概述
        jmeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最初开发的。 它主要对 Apache JServ(现在称为如 Apache Tomcat 项目)的性能进行测试。 Apache 后来重新设计 JMeter 增强的图形用户界面和添加功能测试能力。

以下是一些 JMeter 的特点:

        它是免费的。开放源码软件。

        它具有简单,直观的图形用户界面。

        JMeter 中负载和性能测试许多不同的服务器类型:网站 - - HTTP,HTTPS,SOAP,数据库通过 JDBC,LDAP,JMS,邮件 POP3

        它是独立于平台的工具。在 Linux / UNIX,JMeter 中 JMeter 中 shell 脚本点击可以调用。在         Windows 上,它可以调用启动 JMeter.bat 文件。

        它具有完整的 Swing 和轻量级组件支持(预编译的 JAR 使用包 javax.swing 中*)。

        JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。

        它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。

        它是高度可扩展的。

        也可用于执行应用程序的自动化测试和功能测试。

2 JMeter支持的协议
web —— HTTP,HTTPS 站点的 Web1.0的Web 2.0 (ajax, flex and flex-ws-amf)

Web Services: —— SOAP / XML-RPC

通过 JDBC 驱动程序的数据库

目录: —— LDAP

通过 JMS 面向消息的服务

Service: —— POP3, IMAP, SMTP

FTP 服务

3 Jmeter作用
它是免费的。开放源码软件。

它具有简单,直观的图形用户界面。

JMeter中负载和性能测试许多不同的服务器类型:网站 – HTTP,HTTPS,SOAP,数据库通过JDBC,LDAP,JMS,邮件 – POP3

它是独立于平台的工具。在Linux / UNIX,JMeter中JMeter中shell脚本点击可以调用。在Windows上,它可以调用启动jmeter.bat文件。

它具有完整的Swing和轻量级组件支持(预编译的JAR使用包javax.swing中*)。

JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。

它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。

它是高度可扩展的。

也可用于执行应用程序的自动化测试和功能测试

二、Jmeter实现性能测试
简介:

在用工具之前,首先我们来简单了解一下什么是性能测试?

性能测试是系统在一定的负载和压力的情况下,系统的响应时间,吞吐量,稳定性,课扩展性等性能指标。也就是我们要验证系统是否在这些指标范围,或者说验证这些指标是否符合用户或客户的需求。性能指标包含系统指标和资源指标,今天我们就以用户角度去看一下如何验证系统指标?(系统指标:与用户场景和需求相关的指标,关键的一些指标包含:响应时间,吞吐量,并发用户数等)

以下是按照中文版的jmeter进行编写的,jmeter的bin目下打开这个文件jmeter.properties,查找language,把这个属性前面的#去掉并修改值为:zh_CN,修改后的显示 language=zh_CN

第一步:配置jdk环境

如果想要使用Jmeter,那么所在机器必须配置jdk的环境变量

第二步:下载jmeter

下载路径: https://jmeter.apache.org/download_jmeter.cgi 可以下载最新版本的jmeter

第三步:启动Jmeter

一、打开bin目录,点击jmeter.bat 或cmd 输入 jmeter启动jmeter工具

二、选中测试计划右键new(添加)---》线程(用户)----》线程组,进行线程组的添加(在线用户数)

(1)名称和注释任意

(2)线程数(用户数),根据需求实际情况去添加

(3)Rum-up(秒)几秒执行完用户数

(4)循环次数这些用户执行多次

三、所有的请求都在线程组的基础上进行,那么如何发起一个http请求呢?(在此之前同学们需要了解一个http请求包含哪些内容,以及响应包含哪些内容)

选中线程组右键---》取样器---》http请求

(1)名称和注释最好与此次请求相关,有意义

(2)协议:http或https

(3)服务器名称或ip:(域名或ip地址)

(4)端口号:http是80,https 443 ,mysql 3306

(5)请求方法(根据请求行中的方法进行填写):post

(6)路径:资源的位置

(7)内容编码:UTF8(如果请求中不包含中文可不写)

(8)post请求是有请求体的,所以要填写参数:

 

具体如图:

 四、一个http还除了上述http请求中的请求行和请求体,还包含请求头,如何添加请求头呢?(有的请求头不是必填的,此部分可以省略)

如果请求头是对所有的http请求有效,那么选中线程组进行添加,请求头仅对本请求有效,那么选中http请求进行添加

选中线程组右键--添加--配置元件--http信息头管理器(把需要的数据如图填写进来就可以)

以上http请求数据已经准备好,可以发起这个请求了,但是我们要想看到请求的结果怎么办呢?需要添加一个察看结果树

五、如何添加察看结果树呢?可以选中线程组或选中请求添加,作用域不一样,选中线程组对应的作用域为这个线程组下的所有请求,而请求下的呢,仅作用域本请求,一般情况下选择线程组即可

选中线程组右键--添加--监听器---察看结果树

准备好以上数据后就可以进行调试了,在结果树中查看我们请求的数据添加的是否正确和响应结果是否正确

 六、如何运行和结果显示如图

执行失败为红色显示,成功为绿色显示

(1)取样器结果:显示的是Sample的请求和响应的总体情况(包含如下内容)

Thread Name(线程名称): 登录 1-3

Sample Start(开始时间): 2020-03-19 16:37:03 CST

Load time(加载时间): 33

Connect Time(连接时间): 1

Latency(延迟): 33

Size in bytes(字节): 153

Sent bytes(发送字节数):327

Headers size in bytes: 128

Body size in bytes: 25

Sample Count: 1

Error Count: 0

Data type ("text"|"bin"|""): text

Response code: 200

Response message:

HTTPSampleResult fields:

ContentType: application/json;charset=UTF-8

DataEncoding: UTF-8

(2)请求:请求体和请求头

(3)响应数据:响应体和响应头

在调试的过程中,如果我们发起的请求失败,可以在此查看是请求数据有问题还是服务器本身的问题

七、性能测试不能针对一个用户进行反复的登录吧,不符合常理和逻辑,那如何实现多个用户进行登录呢?

方法一:参数化

(1)csv参数化:选中线程组--右键添加--配置元件--csv数据文件设置(如图)

(2)使用变量(如图)

 

方法二:函数助手

 

1)Tools ---函数助手对话框或工具栏中的书

(2)复制后,打开请求中需要使用变量的位置,在此处粘贴

用以上两种方法之一就可以进行多用户的注册或登录了

可以运行一下查看结果

八、查看结果的常用方式

(1)聚合报告:把所有的请求数据和系统指标结果汇总成表格查看

选中线程组右键---监听器--聚合报告

样本数量:3

平均值(平均的响应时间):12毫秒

中位数(50%的响应时间):12毫秒

90%百分位(90%的响应时间):15毫秒

95%百分位(95%的响应时间):15毫秒

99%百分位(99%的响应时间):15毫秒

最小值(用时最少的):10毫秒

最大值(用时最多的响应时间):15毫秒

异常(本次请求中有没有请求失败或者响应失败的数据有多少个):0

吞吐量(每秒中处理事务的个数):4.4个

接收/kB(每秒接收的字节数):0.65KB

发送/kB(每秒发送的字节数):1.4KB

(2)用表格查看结果:

选中线程组右键---监听器--用表格查看结果(如图)

可以查看单个请求的情况

(3)还可以汇总成图表的

选中线程组右键---监听器--图形结果

以上给大家分享了几种常用的查看结果的方式,在监听器下还有好多,有兴趣的小伙伴可以进行尝试使用,方法都是一样的

九、还可以生成测试报告

(1)win+R 输入cmd进入dos命令行模式下

(2)输入:jmeter -n -t D:\work\login.jmx -l result.jtl -e -o D:\work\test ,点击回车

-n:以非GUI形式运行

-t:指定脚本的路径

-l:运行后的结果的文件名

-e:在脚本结束后生成html报告

-o:保存HTML报告的地址

注意:1.-l 后面跟的文件名是起的名字,该文件名不能为已经存在的名字

2. -o 后面跟的文件夹的路径,最后指定的文件夹不能有数据,可以自己新起一个任意不存在的文件夹名

(3)D:\work\test目录下查看index.html 文件就是生成的 测试报告

相关文章:

软件测试之jmeter性能测试让你打开一个全新的世界

一、Jmeter简介 1 概述 jmeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最初开发的。 它主要对 Apache JServ(现在称为如 Apache Tomcat…...

Redis数据结构——动态字符串、Dict、ZipList

一、Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度…...

ipad可以用别的品牌的手写笔吗?便宜的ipad电容笔

而对于那些把ipad当做学习工具的人而言,苹果Pencil就成了必备品。但因为苹果Pencil太贵了,学生们买不起。因此,最好的选择还是平替电容笔。作为一个ipad的忠实用户,同时也是一个数字热爱着,这两年来,我一直…...

【数据库】关于SQL SERVER的排序规则的问题分析

在安装报表系统,运行sql语句时候提示“无法解决 equal to 操作的排序规则冲突。”,费了半天时间才搞定,原来是因为sql语句中没有加全collate Chinese_PRC_CI_AI_WS ! 用排序规则特点计算汉字笔划和取得拼音首字母 SQL SERVER的…...

算法修炼之练气篇——练气十三层

博主:命运之光 专栏:算法修炼之练气篇 目录 题目 1023: [编程入门]选择排序 题目描述 输入格式 输出格式 样例输入 样例输出 题目 1065: 二级C语言-最小绝对值 题目描述 输入格式 输出格式 样例输入 样例输出 题目 1021: [编程入门]迭代法求…...

ChatGPT:AI不取代程序员,只取代的不掌握AI的程序员

作者:成都兰亭集势信息技术有限公司技术总监张雄 可能大家会有如下的问题,我就使用chatGPT这个AI工具的API来问一下。 问:chatGPT会替换掉程序员吗?如果能,预计好久? 答:作为一名 AI 语言模型&a…...

数字革命下的产品:百数十年变迁的启示与思考。

随着数字化时代的到来,软件开发成为各行各业不可或缺的一部分。然而,传统的软件开发方法需要长时间的开发周期,高昂的成本和大量的人力资源。因此,低代码开发平台应运而生。低代码开发平台通过简化开发人员的工作和加速软件开发流…...

部门新来一00后,给我卷崩溃了...

2022年已经结束结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金三银四的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的…...

使用Spring Boot和Docker构建可伸缩的微服务架构,应对增长的业务需求

使用Spring Boot和Docker构建可伸缩的微服务架构,应对增长的业务需求 一、简介1. 微服务架构的定义2. Spring Boot和Docker的概述 二、Spring Boot1. Spring Boot的介绍2. Spring Boot的优势3. Spring Boot的组件4. Spring Boot的应用 三、Docker1. Docker的介绍2. …...

计算机组成原理基础练习题第四章

1.下述说法中()是正确的。 A、半导体RAM信息可读可写,且断电后仍能保持记忆 B、半导体RAM是易失性RAM,而静态RAM中的存储信息是不易失的 C、半导体RAM是易失性RAM,而静态RAM只有在电源不掉电时,所存信息是不易失的 D、以上选项都不对 解析&#xf…...

浅谈Gradle构建工具

一、序言 常见的项目构建工具有Ant、Maven、Gradle,以往项目常见采用Maven进构建,但随着技术的发展,越来越多的项目采用Gradle进行构建,例如 Spring-boot。Gradle站在了Ant和Maven构建工具的肩膀上,使用强大的表达式语…...

如何获取和制作免费的icon图标素材

icon 图标在界面设计中虽然占比不大,但却是不可缺少的设计元素之一。设计师通过 icon 图标,将抽象的概念通俗化,降低用户理解某个操作的难度。而设计师也会通过改变 icon 图标的样式来展现整体界面的视觉效果。icon 图标的风格有很多&#xf…...

【MySQL】MySQL索引--聚簇索引和非聚簇索引的区别

文章目录 前言1.聚簇索引和非聚簇索引的概念2.两者详细介绍2.1 聚簇索引2.2 非聚簇索引 3. 两者的区别3.1 数据存储方式3.2 二级索引查询 前言 1.聚簇索引和非聚簇索引的概念 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引两种。“聚簇”的意思是数据行被按照…...

如何使用 SVG.js 中的一些相关方法来创建、设置和操作 image 元素

SVG.js 是一个基于 JavaScript 的 SVG 库,提供了许多常用的 SVG 元素和方法,方便开发者进行 SVG 图形的创建和操作。其中,image 元素是 SVG.js 中较为常用的元素之一,本文将详细介绍 SVG.js 中与 image 元素相关的方法。 一、创建…...

展会进行时!5月16-18日箱讯与您相约中国航交会

宁波国际会展中心7、8号馆 第五届中国(宁波)国际航运物流交易会 暨2023全球物流企业合作博览会 火爆进行中 箱讯与您相约 8号馆 C033K-C036展位 期待您的光临! 2023年5月16-18日,第五届中国(宁波)国际…...

CMake:递归检查并拷贝所有需要的DLL文件

文章目录 1. 目的2. 设计整体思路多层依赖的处理获取 DLL 所在目录探测剩余的 DLL 文件 3. 代码实现判断 stack 是否为空判断 stack 是否为空获取所有 target检测并拷贝 DLL 4. 使用 1. 目的 在基于 CMake 构建的 C/C 工程中,拷贝当前工程需要的每个DLL文件到 Visu…...

python常见问题及解决方案

Python是一种高级编程语言,具有易于学习、易于阅读和易于维护的特点。然而,即使是最有经验的Python开发人员也可能会遇到一些常见的错误。在本文中,我们将讨论一些常见的Python运行时错误,并提供解决这些错误的办法。 语法错误 …...

JUC之Synchronized与Lock

Synchronized 称之为”同步锁 作用: 保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果 用法: 1.修饰方法:方法锁,锁的对象是当前对象 2.修饰静态方法:类锁…...

动态规划理论基础

文章目录 定义动态规划与分治问题的区别两种方式实现动态规划方法一:带备忘录的自顶向下法方法二:自底向上法 本质核心解题步骤常见题型划分 定义 动态规划方法通常用来求解最优化问题(optimization problem)。这类问题可以有很多可行解,每个…...

Redis的数据类型

参考文档:https://www.runoob.com/redis/redis-tutorial.html redis当中一共支持五种数据类型,分别是: string字符串 list列表 set集合 hash表 zset有序集合 1、对字符串string的操作 下表列出了常用的 redis 字符串命令 1 设置值 获取…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...