百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

JMeter主要组件介绍(二)

wxin55 2024-11-20 22:43 12 浏览 0 评论

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JMeter主要组件介绍(二)”。

  8. CSV Data Set Config

  这个组件用于测试流程的参数化,参数化文件采用类似于CSV文件。通过菜单“Add->Config Element->CSV Data Set Config”添加,如图3-137所示。

  l Filename:为参数化的文件名。

  l File encoding:文件的编码格式,通常情况下请输入utf-8(不管文件格式是不是为utf-8,只要在这里书写utf-8,读取到的参数为utf-8的编码格式)。

  l Variable Name(comma-delimited) :变量名称,输入分割符号,分割符号需要与Delimiter保持一致。

  l Ignore first line (only using if Variable Name is not empty) :是否忽略第一行。

  l Delimiter (use ‘\t’ for tab) :分隔符(‘\t’表示TAB键)。

  l Allow quoted data? :允许引号数据吗?

  l Recycle on EOF:到了文件尾处,是否循环读取参数。因为CSV Data Set Config一次读入一行,分割后存入若干变量交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入。

  l Stop thread on EOF:到了文件尾处,是否停止线程。

  l Sharing mode:共享模式,包括。

  •    All threads:所有线程。
  •    Current thread group:当前线程组。
  •    Current thread:当前线程。

  下面对Sharing mode做以下更详细介绍。如果测试计划中有线程组A、线程组B,A组内有线程A1、A2… An,线程组B内有线程B1、B2…Bn,CSV Data Set Config放在线程组A的下级组织树,不管怎么设置Sharing mode,都只针对线程组A且取之情况一样:线程A1取第一行,线程A2取第二行。CSV Data Set Config放在测试计划下级组织树(与线程组并列),情况如下。

  l All threads:测试计划中所有线程,线程组A、线程组B共用一个CSV文件,所取数据与线程实际执行顺序有关(先执行先取)。补充一点:线程组之间是并行执行,各线程实际执行时间根据Ramp-UP Period而来。若线程A、线程B均设置Ramp-Up Period:2,取之情况是:线程A1取第1行,线程B1取第2行,线程A2取第3行,线程B2取第4行。

  l Current thread group:取之情况是:线程A1取第1行,线程A2取第2行,线程B1取第1行,线程B2取第2行。(线程组之间互不影响)

  l Current thread:当前线程。A1取第一行、A2取第一行;B1取第一行,B2取第一行(均取第一行)。

  下面是一个csv配置文件,文件内容为用户登录的用户名和密码参数文件,通过,隔开。

  linda,abcdefg

  cindy,123456

  jerry,654321

  susan,qwert

  peter,zxcvb

  设置完毕参数,在JMeter中获得参数的方法是${参数名},返回参数当前的值。

  9. JDBC Connection Configuration

  JDBC Connection Configuration可以通过JDBC访问数据库,通过添加菜单“Add->Config Elements-> JDBC Connection Configuration”添加,如图3-138所示。

  使用JDBC Connection Configuration需要使用JDBC的jar包,按照3.2.3-1所述,建议把这个jar包放在%JMeter_HOME%\lib\ext\目录下。

  l Variable Name for created pool:填写入一个变量名,需要和用到的JDBC request 中,或者JDBC PreProcessor,或者JDBC PostProcessor中的变量名一致;这样,一个测试计划中可以绑定多个DB源。

  l Connection Pool Configration:关于数据库连接池的配置,一般情况中,使用默认即可。

  l Connection validate by pool:一般默认,Validation Query通常情况下选择 select 1。

  l Database Connection Configration:设置数据库连接。

  (1)MySQL设置方法

  MySQL的设置方法见图3-139所示。

  (2)SQL Server设置方法

  SQL Server的设置方法见图3-140所示。

  (3)Oracle设置方法

  Oracle的设置方法见图3-141所示。

  10. JDBC Request

  这个Sampler可以向数据库发送一个基于SQL语句的JDBC请求,并获取返回的数据库数据进行操作。它经常需要和JDBC Connection Configuration配置原件一起使用。通过菜单“Add->Sample->JDBC Request”,如图3-142所示。

  l Variable Name of pool declare in JDBC Connection Configuration:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致。

  l Query:SQL语句。

  l Parameter values:参数值。

  l Parameter types:参数类型,可参考:Java doc for java.sql.Types,如integer、varchar。

  l Variable names:保存SQL语句返回结果的变量名。

  l Result variable name:创建一个对象变量,保存所有返回的结果。

  l Query timeout:查询超时时间。

  l Handle result set:定义如何处理由callable statements语句返回的结果。

  l Query Type有几种,常用。

  •    Prepared Select Statement:查询。
  •    Prepared Update Statement:插入、修改、删除。

  l Variable names:如果设置了这个值,会保存SQL语句返回的数据和返回数据的总行数。

  11. Response Assertion

  发送完毕HTTP请求,接下来就是接受HTTP响应了,通过接受HTTP响应可以判断测试的结果是否正确。

  在JMeter中,断言分为以下十三种,它们分别是。

  l Response Assertion:响应断言(判断返回内容中的内容)。

  l JSON Assertion:检查json请求的断言。

  l Size Assertion:判断返回内容大小。

  l JSR223 Assertion:对sampler中的JSR223 sampler而使用的断言。

  l XPATH Assertion:用来确定XML文档中某部分位置的语言,对返回信息为XPATH的数据类型进行断言。

  l Compare Assertion:比较断言,针对断言进行字符串更换。

  l Duration Assertion(持续时间断言):判断服务器响应时间。

  l HTML Assertion:检查返回内容的格式是否符合。

  l MD5hex Assertion:针对参数类型为MD5加密的进行判断,MD5是一种消息摘要算法。

  l SMIME Assertion:针对使用多用途网际邮件扩充协议的信息进行断言。

  l XML Assertion:判断返回结果是否和xml的格式即<>成对出现。

  l XMl Schema Assertion:xml概要断言。

  l Beanshell Assertion:针对sampler中的Bean Shell sampler而使用的断言 。

  其中Response Assertion是一个比较重要的断言,通过菜单“Add->Assertion->Response Assertion”添加。图3-143显示的即为Response Assertion界面。

  l 在Apply to部分中。

  •    Main sample and sub-sample:作用于主main sample和子sub-sample。
  •    Main sample only:只作用于main sample。
  •    Sub-samples only:只作用于sub-sample。
  •    JMeter Variable:作用于JMeter变量。

  l 在Field部分中。

  •    Text Response:包含服务器的响应文本(body),不包括HTTP头。
  •    Response Code:响应码,如200。
  •    Response Message:响应短语,如OK。
  •    Response Headers:响应头。
  •    Request Headers:请求头。
  •    URL Sampled:URL。
  •    Document(text):通过Apache Tika追踪的各种类型文档的文本,比如PDF、JPG,由于自身消耗资源比较大,一般不使用。
  •    Ignore Status: JMeter忽略Response Code和Response Message。
  •    Request Data:包含请求的文本(body),不包含HTTP头。

  l 匹配模式包括。

  •    Contains:包含,如果文本包含正则表达式模式,则返回TRUE(大小写不敏感)。
  •    Matches:匹配,如果整个文本与正则表达式匹配,则返回TRUE(大小写不敏感)。
  •    Equals:相等,如果整个文本与指定的字符串相等,则返回TRUE(不支持正则表达式且大小写敏感)。
  •    SubString:如果文本包含指定的字符串,则返回TRUE(不支持正则表达式且大小写敏感)。
  •    Not:用来反转检查结果,即不包含,不匹配返回TRUE。
  •    Or:或,当多个条件的时候,条件之间的关系是“或”,默认情况为“与”的关系。

今天关于“JMeter主要组件介绍(二)”就学习到这里了,每个工作日小编都会更新一个小知识,希望大家多多关注我们,一起来学习喔!

相关推荐

ES6中 Promise的使用场景?(es6promise用法例子)

一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...

JavaScript 对 Promise 并发的处理方法

Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...

Promise的九大方法(promise的实例方法)

1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...

360前端一面~面试题解析(360前端开发面试题)

1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...

前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?

Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...

最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式

看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...

前端分享-Promise可以中途取消啦(promise可以取消吗)

传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...

手写 Promise(手写输入法 中文)

前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...

什么是 Promise.allSettled()!新手老手都要会?

Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...

前端面试-关于Promise解析与高频面试题示范

Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...

宇宙厂:为什么前端离不开 Promise.withResolvers() ?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...

Promise 新增了一个超实用的 API!

在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...

一次搞懂 Promise 异步处理(promise 异步顺序执行)

PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...

Promise 核心机制详解(promise机制的实现原理)

一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...

javascript——Promise(js实现promise)

1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...

取消回复欢迎 发表评论: