如何在这个定时器中获取页面上的session

如何在这个定时器中获取页面上的session,第1张

可以将session存在缓存,像是这样 Map map= new HashMap(); mapput("session", >

cookie 是一个文件,存放在本地,chrome浏览器F12后的Application下可查看cookies。由服务器生成,故Response Headers中会存在Set-Cookie字段。

session 是为了保持服务器与客户端的会话状态,在用户登录后,服务器端生成一个sessionID传给客户端;之后的每次会话,客户端只需要传这个sessionID即可不用重新登录,保持在线状态。故服务器端需要保存所有在线的sessionID,从而影响服务器性能! sessionID是存在cookie中的。

token 是为了解决服务器压力,用户登录成功后,服务器端生产token(钥匙和锁)通过 cookie或请求头的方式 传给客户端,再次请求时带上token即可,无状态(服务端通过算法验证钥匙和锁是否正确)。

总之 ,就是两种鉴权方式,通过sessionID或者token,服务器来判断是否是某用户登录后的其他请求。

其他:

2、一个用户在一次会话(打开浏览器,访问服务器,直到浏览器关闭,称为一次会话,严格的说,一次会话应该是依赖 session 的生成机制)上就是一个session_id。

3、每次登录时,总会产生一个token或者sessionID,生成这个的目的是为了每次 *** 作其他接口的时候,会判断当前用户是否登录。

1)cookie的处理

准备:两个接口:一个登录、一个充值

登录接口

充值接口:会失败

 1、添加:>

是什么session, 是>

在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调用。

文中使用的正则表达式测试器(RegexTester)下载地址:>

一、首先来介绍一下J meter中正则表达式提取器的元素组成,下图所示:

这里写描述

下面是各参数值的含义:

参数

释义

引用名称    在>

正则表达式    用于将需要的数据提取出来  

模板    表示使用提取到的第几个值:$-1$:表示取所有值$0$:表示随机取值$1$:表示取第1个$2$:表示取第二个以此类推:$n$:表示取第n个  

匹配数字(0代表随机)    0 代表随机取值,1 代表全部取值  

缺省值    如果正则表达式没有搜找到值,则使用此缺省值  

二、下面是第一个比较简单的例子,就是正则表达式的匹配值只有一个取值,正则表达式测试如图:

这里写描述

这种最简单的情况在Jmeter正则表达式提取器和>

这里写描述

三、下面的例子是正则表达式的匹配值有两个取值,正则表达式测试如图:

这里写描述

这种情况在Jmeter正则表达式提取器和>

这里写描述

四、一种不是很常见的情况是有若干个匹配数据,使用正则表达式测试器测试的结果如下:

这里写描述

若希望取到17这个值,则对应的是第二列第二行($2$, ${javawd_g2}),如果是第三列第四行的数据,则对应的是($3$,${javawd_g4})

■ 为什么要关联

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

下面是一些典型的例子:

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

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

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

但是有些通信协议是无状态的,不存在上下文相关性。多个请求/响应之间的数据不能直接进行传递;并且每次服务器返回的数据不是一成不变的,传递的数据不能通过硬编码(写死)保存来解决。

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

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

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

3)若查询条件参数化了或服务器返回的查询结果集改变了,后续的 *** 作可能会失败。在这些情况下,可以考虑将服务器返回的动态变化的数据保存到某个参数中,需要时再从中取出。

■ 关联原理

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

1购票

2验票

3观影

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

过程如下图所示:

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

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

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

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

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

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

■ 关联的定义

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

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

1正则表达式提取器

2JSON提取器

■ 需要关联数据的特征

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

1服务器返回

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

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

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

保存上一个请求响应的数据,其目的是为了将其用于下一个请求中,否则保存起来没有意义。此特征是可选特征,也就是说不再次发送也是可以保存数据进行关联的。

3数据动态变化

上一个请求响应的数据若不会动态变化,完全可以写死在脚本中,不需要花力气额外保存再次取出。正是由于每次返回的数据动态变化,我们需要根据某种规则将这些动态变化的数据找出来保存,然后会取出实际返回的数据。但此特征也是可选的。不动态变化一样可以保存进行关联,但意义不大。

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

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

■ 单行模式与多行模式

■ 元字符

■ 扩展正则表达式

■ 配置项

Apply to:

与响应断言中用法一致,不再赘述。

Field to check:

○ Body

Response Body,比如>

以上就是关于如何在这个定时器中获取页面上的session全部的内容,包括:如何在这个定时器中获取页面上的session、怎么通过sessionid获取session、jmeter接口测试,处理cookie和token的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10154647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存