性能测试-JMeter关联之正则表达式介绍

为什么要关联???

在客户端与服务器通信过程中,多个请求/响应间的数据会有相互依赖的关系。比如上一个请求返回的某些响应数据在后续的请求中需要用到。

下面是一些典型的例子:

1)比如第一次访问网站获取的session id在后续的请求都会将其传给网站;

2)服务器生成token返回给用户,在后续的请求中要带上token;

3)根据条件查询某记录,在查询结果集中选择记录进行操作(比如删除)

...

但是有些通信协议是无状态的,不存在上下文相关性。多个请求/响应之间的数据不能直接进行传递;

并且每次服务器返回的数据不是一成不变的,传递的数据不能通过硬编码(写死)保存来解决。

比如上面三种情况都会产生动态变化的数据:

1)session id的生命周期一般在关闭浏览器时就结束了,每次打开浏览器访问返回的session id并不相同;

2)token也有生命周期,一般也是随机,无状态的;

3)若查询条件参数化了或服务器返回的查询结果集改变了,后续的操作可能会失败。

在这些情况下,可以考虑将服务器返回的动态变化的数据保存到某个参数中,需要时再从中取出。

一、关联原理

举个例子,看电影,看电影过程有如下步骤:

  1.购票

  2.验票

  3.观影

每个步骤可以看做一个请求/响应。观众相当于客户端,影院方相当于服务器。

过程如下图所示:

观众购买的电影票可以看成服务器返回的响应数据,要验票通过才能入场观影。

观众购票相当于一个请求,验票是下一个请求,这需要将上一个请求返回的响应数据(电影票)放在下一个请求中发送给服务器处理。

假设这部电影非常精彩,想重新再看一次,因为电影票只能使用一次,观众必须重新购票,才能验票通过入场;使用第一次购买的电影票入场肯定会被拒之门外。

为了解决这个问题,可以考虑做如下假设:

每次将购买的电影票放入随身携带的LV钱包,并且在放入之前将使用过的票丢弃,以防止入场时掏错票;入场的时,从钱包中取出票来验票,这样就万无一失了。

将电影票放入钱包中,相当于将服务器返回的数据保存起来了,这里钱包就是保存关联数据的参数。

二、关联的定义

将服务器返回的数据包中满足条件的数据保存到一个参数中的过程。

怎样将服务器返回的数据保存起啦,JMeter中可以使用后置处理器来处理关联数据,常见的方法有:

1、正则表达式提取器

2、JSON提取器

需要关联数据的特征

怎样确定哪些数据是需要做关联的,可以从关联数据的特征来识别出这些数据。关联数据有如下三个特征:

1.服务器返回

需要关联的数据一定是从服务器返回的。

客户端输入的数据不需要进行关联,比如输入的用户名与密码。此特征是必选的。

2.数据会再次发送给服务器处理

保存上一个请求响应的数据,其目的是为了将其用于下一个请求中,否则保存起来没有意义。

此特征是可选特征,也就是说不再次发送也是可以保存数据进行关联的。

3.数据动态变化

上一个请求响应的数据若不会动态变化,完全可以写死在脚本中,不需要花力气额外保存再次取出。

正是由于每次返回的数据动态变化,我们需要根据某种规则将这些动态变化的数据找出来保存,

然会取出实际返回的数据。但此特征也是可选的。不动态变化一样可以保存进行关联,但意义不大。

三、正则表达式介绍

JMeter通过内嵌的Apache Jakarta ORO软件来解析处理正则表达式。

Jakarta-ORO是用于处理文本的一组Java类,是目前功能最全性能最好的正则表达式API之一,它提供兼容Perl5类型的正则表达式。

单行模式与多行模式

元字符

扩展正则表达式


原文地址:https://blog.51cto.com/14645850/2465777

时间: 2024-10-14 12:47:28

性能测试-JMeter关联之正则表达式介绍的相关文章

Jmeter关联,正则表达式提取器使用1

 一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需要提取如下响应文本中的 "<title>百度一下,你就知道</title>" 里面的 "百度一下,你就知道": 2.设置正则表达式提取器: 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (

接口测试工具-jmeter的使用与介绍

一.jmeter的介绍 Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便.运行jmeter时,必须安装jdk.Jmeter是一个跨平台的软件,可以在windows,linux,macos都可以使用.Jmeter可以进行接口测试也可能进行性能测试. 二.Jmeter接口脚本 1.添加线程组 2.添加http请求 3.在http请求中写入接口url,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值 三.jmeter的使用 1.jmete

使用jmeter进行性能测试-Jmeter教程及技巧汇总 (转)

为什么使用jmeter, 它免费开源, 不断发展, 功能逐渐强大. 可以做功能,负载, 性能测试.一套脚本可以同时用于功能和性能测试.Jmeter 有着众多的插件开发者, 支持多种的测试协议. 一 .Jmeter 使用入门教程(快速入门) 如果您熟悉英语, 可以选择阅读tutorialpoint的教程.  或浏览汉化中的[史上最完整Jmeter教程]. 您也可以继续浏览站长收集的如下资料.  1. Jmeter 快速入门教程(一)  什么是jmeter 及 google plugin介绍 (强大

Jmeter 结构、原理介绍

Jmeter结构.原理介绍 一.Jmeter 简介 1.是基于java语言的开源的应用软件. 2.可以进行接口测试.性能测试.接口及性能的自动化测试. 二.Jmeter体系结构 元件:可以理解为每一个菜单.如THHP请求.响应断言.元件组:可以理解为同一类型菜单的集合.如取样器.断言 1.取样器(Sampler):模拟用户的请求操作.如HTTP请求.WebService请求.Java请求等. 2.断言(检查点):验证结果的正确性.如响应断言. 3.监听器:收集测试结果信息.如查看结果树.聚合报告

Jmeter关联

 一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需要提取如下响应文本中的 "<title>百度一下,你就知道</title>" 里面的 "百度一下,你就知道": 2.设置正则表达式提取器: 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (

Jmeter --- 关联

 一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需要提取如下响应文本中的 “<title>百度一下,你就知道</title>” 里面的 “百度一下,你就知道”: 2.设置正则表达式提取器: 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (2)正则表达式: ():括起来的部分就是

正则表达式介绍

1 正则表达式介绍 在JavaScript中,正则表达式是一个用来 匹配 的 并包含 元字符或普通字符 的字符串对象. 在JavaScript中,正则表达式是对象. 使用正则表达式的目的:提高效率 1.1 正则表达式的作用 1 匹配 2 提取 3 替换 1.2 识别正则表达式 "123" "abc" "just do IT" 1.3 元字符 在正则表达式中具有特殊意义的专用字符 符号 含义 基本元字符   . 匹配除换行符外的任意单个字符 (x)

正则表达式介绍及grep的使用

一.正则表达式介绍 1.什么是正则表达式 正则表达式就是处理字符串的方法,它是以行为单位,通过一些特殊符号的辅助,以及相应的工具来快速搜索某指定的字符串.日常中支持正则表达式的常用工具有vi.grep.awk.sed等. 2.正则表达式用途 1)可以帮组系统管理员快速处理分析日常登录信息,相关服务的运行日志等: 2)方便文档编辑 3.正则表达式分类 1)基本正则表达式 2)扩展正则表达式 二.基本正则表达式 1.字符匹配 .:匹配任意单个字符 []:匹配指定集合中的任意单个字符 [^]:匹配指定

Jmeter(三)关联之正则表达式提取器

我们在用Jmeter做接口或者性能测试时,经常会碰到第二个请求提交的的参数要从第一个请求返回的参数中获取,而这些参数值并不是固定的,是动态变化的,这种场景就要用到关联 Jmeter提供了一种叫做正则提取器的组件来提取数据. 场景: 通过下面这个接口可以获取到某个城市的天气 http://www.weather.com.cn/data/cityinfo/101280601.html 但这里面有一个城市代码(101280601)我们并不知道,它需要通过另一个接口查询出某个城市的代码,然后再填充到上面