性能测试 —— 认识 jmeter (性能测试流程 性能测试通过标准)

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

1 性能测试技能树
  性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势。性能测试工作实质上是利用工具去模拟大量用户来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决。

具体的技能树如下:

2 性能测试成功与失败要素

性能测试几大难点:

(1) 需求分析

(2) 场景设计

(3) 性能诊断调优

(4) 环境搭建和模拟

性能测试判断是否通过:

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834

 

 3 性能测试流程

业务学习:通过查看文档,手工操作系统来了解系统功能。
需求分析:分析非功能需求,确定性能测试范围,了解性能测试指标。
工作评估:工作量分解
设计模型:业务模型转化成测试模型。比如一个支付系统需要与银行的系统进行交互(充值或转出),由于银行不提供支持,这时会开发程序代替银行系统功能,保证性能测试能够正常开展。再比如登陆后新增人员,需要绑定测试,这也属于测试模型。模型需要关注的是如何实现,是否具有可操作性、可验证性。
计划编写:计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等。
脚本开发:录制或编写性能测试脚本
测试环境准备:包括服务器和负载机两部分,服务器是被测系统的运行平台,负载机是我们用来产生负载的机器,用来安装负载工具,运行测试脚本。
测试数据准备:根据数据模型来准备被测系统的主数据与业务数据(主数据是保证业务能够运行畅通的基础,比如菜单、用户等数据)
测试执行:性能测试成败关键
缺陷管理:对过程中发现的缺陷进行管理
性能分析:对暴露出来的问题进行分析,找出原因
性能调优:开发人员、性能测试工程师一起来解决性能问题
测试报告:测试工作的重要交付件,对测试结果进行报告,主要包括常见的性能指标说明(TPS、RT、CPU Using...),发现的问题。
性能测试主要交付件:

测试计划

测试脚本

测试程序

测试报告或阶段性性能报告

14. 评审:对性能报告中的内容进行评审,确认问题、评估上线风险。

4 性能测试通过标准
通过标准参考如下:

 

5 性能测试趋势
  性能测试将会在自动化的道路上越走越远,持续集成也将更好的集成性能测试部分。

6 Jmeter 整体简介
1 安装 jmeter
1.1 登陆官方网站,下载 jmeter
http://jmeter.apache.org/,下载 jmeter, 如图:

1.2 解压后, 运行  “bin/jmeter.bat”

jmeter 界面能正常打开,表示安装成功,如图:

PS:Jmeter 是支持中文的, 启动 Jmeter 后, 点击 Options -> Choose Language  来选择语言

1.3  JDK 环境变量配置

   计算机→属性→高级系统设置→高级→环境变量,如图:

3-1. 添加用户变量 JAVA_HOME , 变量内容填写 jdk 的目录, 如 C:\Program Files\Java\jre1.8.0_131

3-2. 添加系统变量 CLASSPATH, 变量值填写 .;% JAVA_HOME%\lib;% JAVA_HOME%\lib\tools.jar(注意最前面有点和分号:点表示当前路径,分号表示分隔符)

3-3. 添加系统变量 PATH, 变量值填写 % JAVA_HOME%\bin;% JAVA_HOME%\jre\bin;(注意原来 Path 的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

3-4. 检验是否配置成功 运行 cmd 输入 java -version (java 和 -version 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功,如图:

2 启动 jmeter

・Jmeter 的 Home 目录下包含 bin、docs、extras、lib、printable_docs 这 5 个文件夹。

・我们需要重点知道的是 bin、lib 和 docs 目录。

2.1 bin 文件

・Bin 目录下存放的是可执行的程序、配置文件和日志文件。

在 windows 下,找到 bin 文件下的 jmeter.bat 文件,双击就打开 jmeter。

在 linux 下,找到 bin 文件下的 jmeter.sh 文件。

 jmeter 界面能正常打开,表示安装成功,如图:

PS:Jmeter 是支持中文的, 启动 Jmeter 后, 点击 Options -> Choose Language  来选择语言

2.2 lib 目录

Jmeter 是 java 写的,在 lib 下面包含 ext、junit 目录、jar 包。

Jar 包在脚本或者 jmeter 运行时所需要的 jar 包,比如使用 JDBC 测试数据库时,就需要对应的 jdbc 驱动的 jar 包放入 lib 目录。

Ext 目录下存放的是 jmeter 运行时的各个组件的 jar 包,也可以存放自定义组件和插件的 jar 包。

3 jmeter 组成

取样器:进行脚本逻辑控制

线程组:场景设置

监视器:监控我们的脚本运行,取得性能指标

3.1 线程组

名称:可以给线程组设置一个个性化的命名

注释:可以对线程组添加备注以标记

在取样器错误后要执行的动作:就是在错误之后要如何执行,可选继续执行后续的、停止执行等。

线程数:就是需要设置多少线程执行测试。

Ramp-up Period (in Seconds):用于告知 JMeter 要在多长时间内建立全部的线程。多长时间内需要把上面的线程数均匀启动完。 默认值是 0。如果未指定 ramp-up period ,也就是说 ramp-up period 为零, JMeter 将立即建立所有线程。假设 ramp-up period 设置成 T 秒, 全部线程数设置成 N 个, JMeter 将每隔 T/N 秒建立一个线程。

循环次数:就是决定一个线程要跑多少次测试。

Delay Thread creation until needed:直到需要时延迟线程的创建

调度器:选中之后可以配置启动时间,立即或者预定的时间

 3.2 取样器:模拟用户操作

取样器用来模拟用户操作,向服务器(被测试系统)发出 HTTP 请求、WebService 请求或 Java 请求。

取样器路径:【测试计划】->【线程组】->【Sample】

3.3 监听器:记录测试结果

Jmeter 的测试结果需要添加监听器来收集。监听器任务用于添加结果监听、展示结果。

路径:【测试计划】->【监听器】

【取样器】、【断言】、【监听器】组合在一起们可以完成发送请求、验证结果及记录结果。

3.4 断言:验证结果的正确性

断言是用来验证结果的正确性。

断言就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配。

断言路径:【测试计划】->【断言】

3.5 前置处理器:准备环境或参数

前置处理器用于环境或参数的准备工作,比如对数据库进行操作前,需要先建立连接。

路径:【测试计划】->【前置处理器】

3.6 配置元件:参数化

配置元件用于模拟大量用户操作我们往往需要做参数化或者可以用来记录服务器的返回数据。

路径:【测试计划】->【配置元件】

3.7 后置处理器:处理服务器的返回结果
后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个 web 应用程序,我们登录后会返回一个 SessionID, 登陆后的业务操作过程中会作为验证条件,验证用户是否合法登录。Jmeter 的关联通过后置处理器来完成。

路径:【测试计划】->【后置处理器】

【前置处理器】、【配置元件】、【后置处理器】都是为取样器提供数据支持的,取样器关注业务逻辑。

3.8 控制器:一次控制,多次查看

比如说用在登陆一次邮件,查看多封邮件。

路径:【测试计划】->【线程组】->【逻辑控制器】

3.9 定时器:集合

定时器模拟同一时刻发送,集合的功能。

路径:【测试计划】->【线程组】->【定时器】

4 jmeter 脚本的两种录制方式

有 2 种方式的录制方式:

一、使用 badboy 进行录制

二、使用代理方式进行录制

4.1 脚本录制的流程与思路

 4.2 Badboy 演示与录制

打开百度,输入 badboy,进入官网,下载对应的版本,网址如下:http://www.badboy.com.au/

如图:

 下载完成后,进行安装,安装成功后,在程序中找到 badboy,点击打开 badboy,表示安装成功,如图:

Badboy 功能区如下:

4.3 jmeter 代理录制

HTTP 代理方式进行录制的原理:解析网络数据包,按 Http 协议包装成 Http Request,Http Response 等对象。

HTTP 请求默认值(添加录制控制器)

HTTP 代理服务器(设置端口、IP 地址)

浏览器设置:

4.4 手动编写
根据对应的协议类型选择合适的取样器(sampler), 手动编写对应的请求,实现模拟数据发送的效果。

前提:了解协议、了解抓包工具、了解性能测试工具。

附录
1、自动重定向和跟随重定向的区别
自动重定向:当重定向时,自动跳转时,只针对 GET 和 Head 请求,自动重定向可以自动跳转到最终目标页面,但是 jmeter 不记录重定向过程内容【在查看结果树中只能看到重定向后的响应内容】

跟随重定向:当重定向时,自动重定向可以自动跳转到最终目标页面,但是 jmeter 记录重定向过程内容【在查看结果树中既能看到重定向后的响应内容,也能看到重定向前的响应内容】

 2、如何解决 JMeter 设置线程组循环不起作用?
使用 badboy 录制的脚本,导出到 jmeter 中的,会出现一个问题就是,设置线程组循环会失效。只有设置 step1 的循环控制器才起作用。

问题的根本原因: jmeter 中的循环控制器和 badboy 录制的脚本的 step1 循环控制器是不相同的。

解决方法:

 1、badboy 录制的脚本,循环要在 step 中设置。

 2、jmeter 代理录制的脚本,循环在循环控制器中设置。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker-harbor的私有仓库

仓库 保存镜像 私有,自定义用户的形式登录仓库,拉取或者上传镜像(内部管理的用户) harbor:VMware公司开发的,开源的企业级的docker registry项目 帮助用户快速的搭建一个企业级的docker仓库的服务 支持中文 harbor…

磁盘空间分析工具你知道几个!8个易学易用的磁盘分析工具,让你对硬盘知根知底

以下是我对可用磁盘空间分析工具(有时称为存储分析器)的首选列表。在我的电脑上试用了其中几个应用程序后,我可以确认这里列出的应用程序是100%免费使用的,并且在弄清楚是什么填满了硬盘、闪存驱动器或外部驱动器中做了很多工作,其中一些甚至允许你直接从程序中删除文件。…

曹操出行集成:无代码API连接广告推广与用户运营

曹操出行集成的必要性 随着科技的不断进步,无代码API集成已经成为企业提升效率、优化营销策略的重要手段。对于新能源汽车共享服务领导者曹操出行而言,将其服务集成至企业营销系统中,不仅可以提升客户体验,还能加强品牌的市场竞争…

智慧工地防盗新手段:TSINGSEE青犀工地智能监控防盗系统方案

工地监控大家都很了解,主要是利用视频监控摄像头全方位无死角地对工地场所进行监控,并在汇聚平台(如:安防监控系统EasyCVR平台)上进行统一汇聚与分发。不过随着科技的发展,智能视频监控在工地监管方面又有了…

2023iEnglish学习成长营结营 助力自主阅读习惯养成

iEnglish智能英语学习解决方案日前消息,2023年最新一期的365天和1000天“iEnglish学习成长营”顺利结营。据悉,截至今年12月,完成365天和1000天每天坚持不低于30分钟的英语原版阅读人数分别累计突破15万人和2万人。而当前,21天、100天、365天以及1000天四种不同目标和意义的iEn…

Service Intelligence重磅来袭!AI驱动服务云更智能

11月中旬,Salesforce宣布推出了Service Intelligence ,这是一款适用于Service Cloud的全新分析应用程序,旨在提高座席工作效率、削减成本并提高客户满意度。 Service Intelligence由Salesforce的实时超大规模数据引擎Data Cloud提供支持&am…

【设计模式--行为型--状态模式】

设计模式--行为型--状态模式 状态模式定义结构案例优缺点使用场景 状态模式 定义 对有状态的对象,把复杂的判断逻辑提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 结构 环境角色(Context)&#xff…

定位某个类是在哪个JAR的什么版本开始出现的

背景 我们在依赖第三方JAR时,同时也会间接的依赖第三方JAR引用的依赖,而当我们项目中某个依赖的版本与第三方JAR依赖的版本不一致时,可能会导致第三方JAR的在运行时无法找到某些方法或类,从而无法正常使用。 如我正在开发的一个…

华为配置策略路由(基于IP地址)示例

组网需求 如图1所示,汇聚层Switch做三层转发设备,接入层设备LSW做用户网关,接入层LSW和汇聚层Switch之间路由可达。汇聚层Switch通过两条链路连接到两个核心路由器上,一条是高速链路,网关为10.1.20.1/24;另…

YOLOv8使用SAHI切片辅助推理:《SAHI切片辅助推理解析》推理教程(附推理源代码)

💡该教程为改进RT-DETR指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 YOLOv8使用SAHI切片辅助推理:《SAHI切片辅助推理解析》推理教程(附推理源代码…

家委会的职责

家委会,起着至关重要的作用。然而,而很多人对家委会的职责并不清楚。 家委会是家长与学校之间的沟通桥梁。家委会成员需要积极与学校沟通,了解学校的各项政策和规定,并及时向家长传达。同时,家委会也需要收集家长的意见…

构建外卖小程序:技术实践与代码示例

外卖小程序的开发涉及前后端的多个技术领域,从用户界面设计到数据库管理,都需要巧妙的技术方案。在本文中,我们将以微信小程序平台为例,通过简单的代码示例,介绍如何搭建一个基本的外卖小程序。 1. 准备工作 首先&a…

量子计算挑战赛启动!空中客车公司和宝马集团联手发起

(图片来源:网络) 空中客车公司(Airbus)和宝马集团(BMW)共同发起了一项名为“探索量子迁移率”的全球量子计算挑战赛,旨在解决航空和汽车领域仍未克服的紧迫难题。 此次挑战赛汇聚了…

微信小程序uniapp记住密码

记住密码功能 在请求登录接口成功后,我们需要判断用户是否勾选记住密码,如果是,则将记住密码状态、账号信息存入本地。 下次登录时,获取本地的记住密码状态,如果为true则获取本地存储的账号信息,将信息回填…

Google为什么它还没有开发出ChatGPT,如何反超,小公司创新的产品如何反超巨头 行业巨头如何防止被小公司或创新型公司的产品超越

Google虽然收购了Geoffrey Hinton及其在多伦多大学的两名研究生组成的公司DNNresearch Inc.,但为什么它还没有开发出类似ChatGPT的产品,可能有以下几个原因: 不同的研发方向:Google在人工智能领域的研发方向可能与OpenAI&#xff…

【Linux】fork()函数详解

什么是fork? fork()函数通过系统调用并创建 一个与原来进程几乎完全相同的进程 此进程叫做子进程,两个进程做一样的事 但初始参数或者传入的变量不同,两个 进程便可以做不同的事 fork的返回值 在父进程中&#xff0…

iptables基础 iptables-save iptables-persistent持久化

介绍 iptables由上而下,由Tables,Chains,Rules组成。 一、iptables的表tables与链chains iptables有Filter, NAT, Mangle, Raw四种内建表: 1. Filter表 Filter是iptables的默认表,它有以下三种内建链(chains)&…

Kafka基础理论与常用命令详解(超详细)

文章目录 前言一、Kafka概述1. Kafka简介2. Kafka架构2.1 Broker(代理服务器)2.2 Topic(主题)2.3 Producer(生产者)2.4 Consumer(消费者)2.5 Consumer Group(消费者组&am…

synchronized加锁对象是什么、synchronized底层原理

一、synchronized加锁对象是什么 为了方便参考,以下是调用加了synchronized方法的代码: public class Test02_Synchronized {public static void main(String[] args) {init();}public static void init() {OutPut outPut new OutPut();new Thread(()…

Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯

目录 IMX6ULL 的 GPIO 操作方法 GPIO 操作相关名词 IMX6ULL 的 GPIO 模块结构 GPIO 模块内部 读 GPIO​编辑 写 GPIO​编辑 LED 点灯驱动程序 字符设备驱动程序框架 编写驱动程序的步骤: 先编写驱动程序代码: 再编写测试程序代码:…