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

news2024/11/27 12:52:35

一、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 文件就是生成的 测试报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA入门使用

IDEA概述 ​ IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。 集成环境: ​ 把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。 为什么要…

Java基础-判断和循环

1 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 ​ 判…

ChatGPT 如何不使用代理,国内直连

ChatGPT 如何不使用代理,国内直连 本来是自己在 cloudfare 上面搭建了域名解析,但是最近发现了其他的方案 域名代理 最开始是参考这个文章进行的配置,一直用的很好 使用 Cloudflare Workers 让 OpenAI API 绕过避免被封禁 最近由于 Open…

《微服务实战》 第八章 Spring Cloud 之 Hystrix

前言 多个微服务之间调用的时候,假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的"扇出"。 如果扇出的链路上某个微服务的调用响应的时间过长或者不可用,对微服A的调用就会占用越来越…

创新特征金字塔融合,ResNeXt引领YOLOv5高效率目标检测

目录 一、介绍1、YOLOv5简介2、ResNeXt简介3、目标检测简介 二、YOLOv5及其局限性1、YOLOv5的架构与原理2、YOLOv5的优势3、YOLOv5的局限性 三、ResNeXt与特征金字塔融合1、ResNeXt的基本原理2、ResNeXt的优势3、特征金字塔的基本原理4、特征金字塔的优势5、ResNeXt与特征金字塔…

JavaEE(系列3) -- 多线程(线程的中断与线程等待)

新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…

Nexus下载与安装详解

目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,在以往框架,有了3.x一定不会再更新2.x了,会继续向上延续3.x,4.x,而Nexus对于这两个版本是并行的关系。也就是2.x在更新迭代,3.x也在更新迭代&#xff0…

K8s基础12——etcd数据备份与恢复、集群版本升级、网络策略

文章目录 一、etcd备份与恢复1.1 kubeadm部署方式1.1.1 备份1.1.2 恢复 1.2 单etcd二进制部署方式1.2.1 部署1.2.2 备份1.2.3 恢复1.2.4 K8s集群二进制部署方式恢复 二、集群版本升级2.1 升级master节点2.2 升级node节点 三、网络策略3.1 核心字段释义3.2 测试案例案例1&#x…

20 KVM管理虚拟机-虚拟机生命周期示例

文章目录 20 KVM管理虚拟机-虚拟机生命周期示例20.1 创建虚拟机20.2 启动虚拟机20.3 重启虚拟机20.4 关闭虚拟机20.5 销毁虚拟机 20 KVM管理虚拟机-虚拟机生命周期示例 本节给出虚拟机生命周期管理相关命令的示例。 20.1 创建虚拟机 虚拟机XML配置文件为openEulerVM.xml # …

shellCode免杀技巧

目录 一、免杀简述 二、免杀方法 1.shellcode反转bypass 2.shellcode异或bypass 3.远程加载shellcode bypass 4.进程注入 5.未导出api bypass 6.掩日(进程注入工具) 其他的 本文章仅提供学习,切勿将其用于不法手段! 一、…

《编码——隐匿在计算机软硬件背后的语言》精炼——第17章(自动操作)

夫道成于学而藏于书,学进于振而废于穷。 文章目录 完善加法器加入代码的加法器扩大加数范围自由调用地址的加法器合并代码RAM和数据RAMJump指令硬件实现条件Jump指令零转移的硬件实现条件Jump指令的例子 总结 完善加法器 我们在第14章介绍了一个可以进行连加的加法…

在线域名批量查询工具-未注册域名批量查询软件

在线域名批量查询工具 在线域名批量查询工具是一种通过互联网进行批量查询域名相关信息和指标的工具。以下是其主要特点: 在线查询:在线域名批量查询工具可以直接在浏览器中进行查询,无需下载和安装任何软件。 批量查询:该工具…

内网渗透--frp代理设置与proxychains代理设置

标题内网渗透–frp代理设置与proxychains代理设置 内网服务器内网IP地址外网IP地址内网web服务器(windows 7)192.168.52.143192.168.213.138内网域控服务器192.168.52.138 外网服务器外网IP地址外网V8网卡外网kali192.168.213.132外网windows攻击机192…

开通小程序账号

文章目录 一、开通小程序账号1.1 登录微信公众平台注册小程序管理员账号1.2 激活邮箱1.3 信息登记 二、获取开发设置2.1 获取APP ID2.2 获取AppSecret 一、开通小程序账号 微信小程序已经成为移动应用开发的热门平台之一,许多开发者都想要开发自己的小程序。但是首先我们需要注…

Pandas中的逻辑运算符(与或非)及Python代码示例

Pandas是Python中一个非常流行的用于数据处理和分析的库,它提供了大量的函数和操作符,以便用户可以方便地对数据进行操纵。其中逻辑运算符是在Pandas中经常使用的一些操作符之一,因为它们使我们可以对数据进行逻辑上的比较和筛选。本篇博客将…

【Dart】=> [01] Dart基础-下载安装环境配置

目录 windows下载安装地址1. 下载dart-sdk并且解压到某盘符目录下2. 找到bin目录,复制bin目录完整路径3. 打开我的电脑,右键菜单,点击属性4. 找到高级系统设置,点击5. 点击环境变量![在这里插入图片描述](https://img-blog.csdnim…

串口监控的几种方式

目录 方法1. 使用usb转TTL模块硬件监控; 方法2. 使用JLINK的SWD接口的串口收发脚进行硬件监控; 方法3. 使用虚拟串口进行软件监控; 方法1. 使用usb转TTL模块硬件监控; 方法2. 使用JLINK的SWD接口的串口收发脚进行硬件监控&…

第十二章 使用Bind提供域名解析服务

文章目录 第十二章 使用Bind提供域名解析服务一、DNS域名解析服务1、DNS简介2、服务器类型3、13台根DNS服务器的具体信息 二、安装Bind服务程序1、Bind简介2、Bind安装3、关键配置文件4、修改主配置文件5、正向解析实验(1)、编辑区域配置文件&#xff08…

必须了解的内存屏障

目录 一,内存屏障1,概念2,内存屏障的效果3,cpu中的内存屏障 二,JVM中提供的四类内存屏障指令三,volatile 特性1,保证内存可见性定义2,禁止指令重排序3,不保证原子性 一&a…

Http与Https 比较

目录 1、HTTP(HyperText Transfer Protocol:超文本传输协议) 2、HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议) 3、HTTP 与 HTTPS 区别 4、HTTPS 的工作原理 1、HTTP(HyperTex…