• 0
  • 0
分享

Jmeter脚本编写一般分为五个步骤:

  1. 添加线程组

  2. 添加http请求

  3. 在http请求中写入接入url、路径、请求方式和参数

  4. 添加查看结果树

  5. 调用接口、查看返回值

设置HTTP请求默认值

在有多个请求时,每个请求都需要选择http协议,填写服务器名称或者服务器ip地址,比较重复和麻烦,所以可以定义一个http请求默认值,设置所有的请求默认使用http协议,默认服务器名称或服务器ip地址。

在线程组–添加–配置元件–HTTP请求默认值,然后进行配置,并把该元件放置到请求前面。

协议:http

服务器名称或ip:httpbin.org

断言设置

针对每个请求的响应进行断言,设置步骤:选中一个请求–添加–断言–响应断言

参数设置

Jmeter支持通过Query String Parameters或者requests body请求体来传递参数。

Query String Parameters
Request body

在post请求中参数一般在body中传递,参数的格式需要在http信息头管理器中设置

添加步骤:选定请求——添加——配置元件——HTTP 信息头管理器,然后在管理器里面添加参数类型 Content-Type : application/json

变量

Jmeter支持以下类型的变量:

  • 用户自定义变量

  • 函数生成变量

  • BeanShell变量

  • 数据文件变量

用户自定义变量

设置步骤选中请求–添加–前置处理器–用户参数,设置变量名称变量值

在请求时引用变量如下所示:变量引用格式为:${user},可以在query string parameters参数中引用

函数生成变量

创建步骤:点击菜单栏选项——函数助手对话框——下拉选择

__Random()函数

BeanShell变量 

BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法

创建 BeanShell PreProcessor ,在脚本窗口输入以下代码引用${user}变量

//定义 jmeter 变量
vars.put(user,"51zxw")
//从 jmeter 中获取变量
vars.get(String key);
log:写入信息到 jmeber.log 文件
log.info(“hello 51zxw!” );

CSV数据文件变量

CSV数据文件变量是指从外部csv文件读取数据出来作为变量

设置步骤:选择请求–添加–配置元件–CSV数据文件设置,创建csv文件user_data.csv,文件内容51zxw,8888

csv数据文件设置如下:

 文件编码:UTF-8

 变量名称:user,password

 忽略首行:False

 分隔符:,

 是否允许带引号:False

 遇到文件结束符再次循环:True

 遇到文件结束符是否停止线程:False

 …

在post请求中引用数据变量如下: u s e r , {user}, user,{password}

  • CSV参数化:

user_data.csv内容如下:

51zxw,8888
51zxw1,6666
51zxw2,4444
51zxw3,5555

修改csv数据文件设置配置如下:

 文件编码:UTF-8

 变量名称:user,password

 忽略首行:False

 分隔符:,

 是否允许带引号:False

 遇到文件结束符再次循环:False

 遇到文件结束符是否停止线程:True

 …

修改线程数为4,进行测试

正则匹配

接口测试过程中经常需要接口之间的关联调用,比如上一个接口的返回值作为下一个接口的请求参数,这时就需要用到正则匹配对上一个接口的响应数据进行正则匹配提取指定的数

设置步骤:选中请求–添加–后置处理器–正则表达式提取器

正则表达式配置表

  • 引用名称:请求要引用的变量名称,如填写 result_num,则可用 result num 引用它 。

  • 正则表达式:匹配需要的内容 。

  • 模板:用 {result_num}引用它。

  • 正则表达式:匹配需要的内容。

  • 模板:用 result num引用它。

  • 正则表达式:匹配需要的内容。

  • 模板:用num$引用起来,如果在正则表达式中有多个匹配数据,num 表示匹配到的第几个值给变量。

如:

1 表示匹配到的第 1 个值存储在变量中。

  • 匹配数字: 0 代表随机取值, 1 代表全部取值,

  • 缺省值:如果参数没有取得到值,那默认给一个值让它取。

案例中正则表达式说明,如num: 31,“num”: “(.*?)”

  • ()括起来的部分就是要提取的。

  • .匹配任何字符串。

  • +一次或多次。

  • ?在找到第一个匹配项后停止。

用例数据分离

将测试用例数据存放在csv文件中,然后通过csv文件配置来读取用例中的数据,执行测试。

添加一个 循环控制器 步骤为:线程组–添加–逻辑控制器–循环控制器。循环控制器的作用可以控制整个用例的循环次数。默认值是1,可修改为4。

用例设计:

caseSeqapiTypeapiSeqapiNamepriorityurlmethodsparameterexpected
C001Http methodsV0.9.2 GET Requests 51zxwH/getGETuser=51zxw151zxw1
C002Http methodsV0.9.2POST Requests 51zxw H /postPOSTuser=51zxw251zxw2
C003Http methodsV0.9.2GET Requests zxw2018H /getGETuser=51zxw351zxw3
C004Http methodsV0.9.2POST Request zxw666H/post POSTuser=51zxw451zxw4

用例名称变量含义:

  • ${caseSeq}:用例编号

  • ${apiType}:api 类型

  • ${apiSeq} : api 版本号

  • ${apiName}: api 名称

  • ${priority}:优先级

  • ${url}:api 路径

  • ${methods}:请求方法

  • ${parameter}: 请求参数

  • ${expectValue}:期望值,用于断言

添加一个循环控制器 步骤为:线程组——添加——逻辑控制器——循环控制器。 循环控制器的作用可以控制整

个用例循环执行的次数。默认值是 1 根据用例数量可以修改为 4

HTTP Cookie管理器

如果你有一个HTTP请求,其返回结果里面包含一个cookie,那么使用JMeterCookie管理器将会自动将该cookie保存起来,而且以后所有对该网站的请求都使用同一个cookie。每个Jmeter都有自己独立的cookie保存区域。

添加cookie管理器:选中线程组–添加–配置元件–HTTP Cookie管理器

权限设置

添加HTTP授权管理器:选中请求–添加配置元件–HTTP授权管理器

basic-auth

diagest-auth

测试报告

聚合报告

比较精简

设置步骤:选中线程组–添加–监听器–聚合报告

HTML报告

JMeter引入了Dashboard Report,用于生成HTML页面格式图形化报告的扩展模块。

生成步骤:

打开 cmd 进入 jmeter 目录 bin 目录

执行命令:

jmeter -n -t httpbin_test.jmx -l httpbin.jtl -e -o C:\Users\Shuqing\Desktop\report

命令的参数 :

  • -n :以非 GUI 形式运行 Jmeter

  • -t : jmeter 脚本路径

  • -l : result.jtl 运行结果保存路径(.jtl)此文件必须不存在。

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

  • -o :用于存放 html 报告的目录,不加该参数默认生成到 bin\report-output


作者:小静砸

原文链接https://blog.csdn.net/Come_on_csdn/article/details/108457945

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   任何的测试工作都可以从测试人员、覆盖范围、潜在问题(bug)、测试活动和测试评估五个维度进行描述。  测试人员:谁要做测试?  覆盖范围:什么东西需要测试?  潜在的问题:为什么进行测试(测试的风险是什么)?  测试活动:你如何测试?  测试评估:如何判断测试是通过还是失败?  测试任务通常分配在一个维度上,但你需要在所有五个维度上完成工作。  例如,有人可能会要求你做功能测试(彻底测试每个功能),这是告诉你要测试什么。  但由谁来进行测试,寻找什么类型的bug,如何测试每个功能,以及如何决定程序是通过还是失败都需要在测试任务启动时考虑。  本文主要从这五个维度对测试这门活动/技术进行分类...
            13 13 2045
            分享
          • 又是一年跳槽季,最近有不少小伙伴跑来咨询:想找软件测试工作,应该要怎么进行技术面试准备?工作不到2年,想跳槽看下机会,有无软件测试的面试题呢?金三银四,大家找工作的需求比较高,所以该文章就“如何进行技术面试准备”来聊一聊。清楚应聘企业的岗位职责要求首先呢,所谓知己知彼百战不殆,我们先得弄清楚应聘企业对于求职者的技能要求是什么,然后有针对性地去做复习准备。以下以1-3年工作经验,薪资期望10-15k举例,其他自动化测试、性能测试等岗位同理。随意打开一家网上招聘平台,例如boss直聘,选择对应城市,输入岗位-软件测试工程师,选择自己符合的工作年限,选择自己期望的薪资要求,点击搜索。图片.png然后...
            14 14 2688
            分享
          •   最近,项目上出于系统性稳定性、减少测试工作量考虑,打算在 Web 前端引入 BDD。由于上一个项目写了一定的 Cucumber 代码(BDD 测试框架之一),这个框架选型的责任便落到了我的肩膀上了。  在我们进行框架选型的时候,着重考虑了一个因素:测试实现脚本是由开发人员编写的,因此最好寻找 JavaScript 支持的框架。在搜索了一天后,选择了三个框架 Cucumber、Robot、Gauge。以下是上述的三个框架入选的原因:  Cucumber,团队的开发人员有一些有相关的开发经验、支持 JavaScript。  Robot Framework,测试人员接受过相关的培训、不支持 Ja...
            0 0 563
            分享
          •   我们有时候做Postman接口测试时,需要操作数据库,比如:查询、新增、更新、删除数据等。这时就需要连接数据库,以MySQL数据库为例子,根据自己的总结,分享一下Postman连接数据库,以及对数据库中数据的操作步骤。  Postman要连接MySQL数据库,需要先安装xMySQL,并启动xMySQL服务,然后才可以调用。  安装xMySQL  在安装xMySQL之前,要先完成一些预置条件。  完成nodejs的安装  下载并安装nodejs:https://nodejs.org/dist/v12.16.3/node-v12.16.3-x64.msi ,下载nodejs后一键安装。  安装...
            0 2 3214
            分享
          •  常见的软件测试用例设计方法,个人认为主要是下面这6种:  1)流程图法(也叫场景法)  2)等价类划分法  3)边界值分析  4)判定表  5)正交法  6)错误推测法  这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。  所以本文行文结构如下:  1、每种用例方法定义、应用场景、使用步骤、案例讲解  2、每种用例方法应用场景的区别  3、深入学习资料分享  一、流程图法(也叫场景法)  1、使用场景  所谓流程图法,就是专门针对软件业务流程测试的方法。  2、什么是业务流程?  业务流程,是指客户在使用软件的过程中,为了达成自身的所想要的目的,按照指定的顺...
            0 1 4878
            分享
      • 51testing软件测试圈微信