1、在Apache 官网下载JMeter

官网地址:https://www.apache.org/

2、在Oracle官网下载jdk

官网地址:https://www.oracle.com/

3、设置环境变量

3.1变量(variables):

变量是一段有名字的存储空间,在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。变量是程序中数据的临时存放场所;在代码中可以只使用一个变量,也可以使用多个变量;变量中可以存放单词、数值、日期以及属性。

3.2环境变量(environment variables):

一般是指在操作系统中用来指定操作系统运行环境的一些参数;如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。

(例如Windows和Dos操作系统中的Path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到Path中指的路径去找,用户通过设置环境变量来更好的运行进程。)

3.3全局变量(Global):

全局变量是编程术语中的一种,源自变量之分;变量分为局部或全局,局部变量又可称为内部变量,由某个对象或某个函数所创建的变量,通常都是局部变量;只能被内部引用,而无法被其他对象或函数引用。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建;全局变量是可以被本程序所有对象或函数引用。

3.4局部变量(Global Variables):

是指在程序中只在特定过程或函数中可以访问的变量,局部变量是相对于全局变量而言的。

4、录制脚本

配置完成后进行脚本的录制,JMeter录制脚本的方式有三种:

1.JMeter自带的http代理服务器进行录制:首先配置线程组,在线程组中添加录制控制器,添加非控制原件http代理服务器,端口号默认8888,点击录制;打开浏览器,设置个人代理,本机个人代理127.0.0.1端口号8888,输入要录制网站的IP进行录制。录制完成后脚本保存在录制控制器之下;

2.使用第三方工具badboy进行录制,下载badboy打开后输入IP进行录制,录制完成后点击导出JMeter jmx文件,选择保存路径,输入文件名.jmx;打开JMeter添加文件名.jmx文件;

3.采用手写脚本的方式(手写的方式有一个好处是录制下来的脚本特别干净,弊端是如果对软件不太了解的情况下会有遗漏);首先添加配置原件http cookie管理器、http请求默认值、线程组、http请求。

4.1 http请求默认值

脚本中每个请求会有很多共同的地方,比如协议类型、服务器地址或IP、端口号和编码格式,所以会有很多的重复输入,http请求默认值会省去这些重复输入的项,将重复输入的项填写在http请求默认值中,供每一条请求获取,等同于全局变量。

4.2 http cookie管理器

http cookie管理器是让线程组运行的时候有cookie在取样器中产生,如果没有cookie的存在那么每条取样器都只是独立运行,不会产生关联,因为JMeter的工作原理是以协议的形式模拟事务,所以必须有cookie运行的请求才能模拟;http cookie管理器中有个必选项就是 每次运行反复清除cookie,如果循环运行不清除cookie,那么线程组循环运行的时候,会当成一个事务,而且还会侵占大量内存。

4.3 线程组

线程组:线程组是线程的起点,每个取样器都会属于一个线程,一个线程下可以有多个取样器,线程组是单线程多进程的形式。

4.4取样器

取样器有很多种,工作中用到的请求协议类型是http和https,所以添加http请求。

以*宝的【首页→登录→发送登录请求→返回首页→查看第二件商品】为例,模拟100个用户重复登录五分钟,添加断言技术和进行参数化:

  1. 打开JMeter添加http cookie管理器,选择每次运行重复清除cookie;
  2. 添加http请求默认值,协议类型:https 服务器地址或ip:*bao.com 端口号:443 编码格式utf-8;
  3. 添加线程组,设定线程数100  Rump-up:10 循环次数:永久 调度器:300秒;
  4. 添加五个取样器:http请求:

4.1第一个请求填写名称:首页、方法-get、路径/首页;

4.2第二个请求填写名称:登录、方法-get、路径/登录;

4.3第三个请求填写名称:发送登录请求、方法-post、路径/发送登录请求;参数:username_001,password_123456, act _act-login,back-act_*bao.com/首页,submit_为空,(用浏览器打开登录页面,按F12后发送登录请求快速抓包可以获取参数);

4.4第四个请求填写名称:返回首页、方法_get、路径/首页、添加响应断言,登录成功后会提示登录成功或欢迎回来,写入断言中,设置响应文本和包含;

4.5第五个请求名称填写:查看第二件商品、方法_get、路径;F12快速抓包获取资源的ID和路径填写即可。

5、参数化:

5.1.新建文本文档,写入username,password(注:每个用户密码为一行,用英文的逗号隔开)分别写入用户名和密码,保存为英文名称.csv文件;

5.2在JMeter图形界面中添加配置元件,csv文件设置管理,添加英文名称.csv,其他都是默认设置不需要改写;在第三条请求发送登录请求中设置参数,username ${username} password ${password};设置完成后保存脚本为英文名称.jmx文件。

6、断言:

添加响应断言,“apply to”选择“Main sample and sub-samples”(主请求和自请求);“测试字段”新选择“响应文本”;“模式匹配规则”选择“包括”;添加断言响应包含内容。

7、负载运行:

1.打开cmd命令运行窗口输入cd英文名称.jmx的保存路径回车;

2.打开JMeter所在磁盘;

3.输入命令JMeter -n (非图形化界面)-t 英文名称.jmx(输入文件,脚本) -l英文名称.jtl(输出文件 JMeter text log缩写)回车;

4.开始运行:随机生成两个文件JMeter.log和JMeter.jtl;

5.等待五分钟运行结束后后打开JMeter添加监听器:聚合报告或图形报告,分析参数请求数量、平均响应时间、最大值、最小值、错误量、每秒请求数、吞吐量;

6.如果有报错,JMeter.log中查找。

软件测试工程师进阶技能工具篇——jmeter性能测试实战相关推荐

  1. 软件测试工程师进阶之路|分析测试现状、测试知识、测试思想

    注:本文来源: 方水泉  <  软件测试工程师进阶之路|分析测试现状.测试知识.测试思想  > 目前,很多机构天天吹嘘测试多么好,工资多么高,但从我多年的从业经历来看,测试这条路的瓶颈非常 ...

  2. 软件测试工程师如何编写一篇杀手级简历?

    你可以写一篇出众的软件测试简历并且这篇测试用例能够为你带来面试电话么?如果没有,请继续阅读.我敢肯定,读完这篇文章,你将能够写出一个完美的杀手级别的软件测试和质量保证的简历,这将为你带来面试电话. 你 ...

  3. 【原创】软件测试工程师基础技能+

    软件测试工程师,工作之余应该看些什么.学些什么? 通常情况下一位软件测试工程师需要具备哪些必须的技能? 最佳隐形技能 ★★开发语言知识背景 对被测试对象使用的语言有一定的了解,这样有助于测试工作的开展 ...

  4. 软件测试工程师必备技能:谈谈软件项目中的评审

    前言:你一定听说过这样的一句话:每天不是在开会,就是在开会的路上.这句话其实是对会议多的一种调侃,同时也有一些反感.可以大家想没想过,为什么我们会对一些会议反感?仔细想一想,这些会议是不是都是高效的? ...

  5. 【性能测试】Jmeter性能测试实战

    文章目录 一.数据驱动性能测试 1.1 数据驱动的理念 2. 特点 3. 好处 4. 要求 5. 数据驱动的使用场景 1.2 jmeter中的数据驱动 二.数据库性能测试 开发性能测试脚本及执行 三. ...

  6. 软件测试工程师必备技能——Linux基础知识

    1.Linux理论知识 Linux是一套免费试用和自由传播的unix操作系统:是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和 ...

  7. Jmeter性能测试实战教程系列-搭建分布式性能测试环境(五)

    Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误.为了让jmeter工具 ...

  8. [JMeter性能测试实战]之先从搭建测试环境开始

    前言 写给想学性能测试而又不知道如何着手的测试同学,同时这也作为本人内训的教材,分享性能测试的套路及经验. 不要被性能测试的外衣所迷惑,会写代码做性能测试的人不一定比使用工具做性能测试的人厉害,关键是 ...

  9. JMeter性能测试实战之QPS检测过程解析

    目录结构 一.测试需求 二.测试步骤1.添加线程组2.添加HTTP请求3.设置QPS限制4.添加监视器5.运行脚本6.聚合报告分析 一.测试需求 需求:测试20个用户访问Baidu首页(https:/ ...

最新文章

  1. beautifulsoup解析动态页面div未展开_两个资讯爬虫解析库的用法与对比
  2. SAP GraphQL console UI的实现原理
  3. centos6.5安装python3.6
  4. 学MFC的九九八十一难
  5. POJ-1191 棋盘分割 动态规划
  6. docker非常详细的介绍
  7. linux服务器学习笔记:如何使用密钥认证机制远程登录linux?
  8. java api 版本控制_API 版本控制的几种方式
  9. Android ImageButton使用详解(系列教程四)
  10. CSDN账号被盗了吗?
  11. 2048和多地址入口_七天网站成绩查询官网登录入口地址:http://www.7net.cc/
  12. Java实战之管家婆记账系统(1)——项目简述
  13. linux通过80端口系统入侵,【转】21和80端口的入侵
  14. 2019腾讯广告算法大赛
  15. Linux家目录被误删除恢复
  16. CUDA矩阵转置(共享内存 tile)
  17. 安全优雅的RESTful API签名实现方案(手机端)
  18. C# winform excel根据当前选中内容,自动插入/编辑批注
  19. vue 中的 attribute 和 property
  20. 综合运用(烤地瓜,搬家具)

热门文章

  1. Hibernate学习总结
  2. android udp广播 权限,安卓UDP广播/多播注意事项
  3. webstorem git报错error: index uses extension, fatal: index file corrupt
  4. VirtualBox6.0中CentOS7网络配置
  5. 是什么一直束缚你在社会底层?普通人改变命运的方法(现实版)
  6. android页面中的按钮文字太长如何换行
  7. bfs 迷宫打印所有路径 java_BFS 简单迷宫及路径打印
  8. MySQL版本5.7.99?
  9. 2023最新iApp画质助手安卓源码+功能还是挺多的
  10. How to Reduce Ground Bounce: Mitigating Noise with PCB Design Best Practices