正则表达式
概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
特点
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
正则表达式语法
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
例如:
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
runoob,可以匹配 runob、runoob、runoooooob 等, 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
常见字符
由于这些字符比较多,我就直接截图了.正式内容多以后用的时候再补.
1.非打印字符
2.特殊字符
3.限定符
4.定位符
Jmeter 正则表达式提取器
正则表达式提取器是提取响应报文某些字符.因此是在请求里面添加.由于是响应里提取字段,又规内在后置处理器中.
Jmeter里的正则表达式提取器的作用是提取响应报文的某个字段存在变量中可供一个线程组下面的请求body data/paremeters引用变量名作为值.
配合debug sampler 进行调试!
使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler
debug sampler 数据显示在响应数据中.
正式表达式提取器 界面解析
-
账户余额:(.*?)分"
括号可以看做定位,左边字段是左边界,右边字段是右边界。
我们截取含有需要判断的部分 账户余额:6290分" 作为响应报文中需要判断的字段,把需要判断的6290改为(.*?),就得到我们的正则表达式。
即:把需要提取的字符串前后都复制下来,保证其他部分是不变的,然后需要提取的字符串用(.*?)代替.
添加 正则表达式的基本操作
核心是在请求里面添加,正则表达式提取器放在请求里面的
因此 请求-----后置处理器----正则表达式提取器
举个例子:做一个查询流水---充值的流程 充值的请求里面引用查询流水的正则里面的变量名.
1.前端操作水流接口和充值接口进行抓包.fiddler打标记导出jmx格式的文件,再导入到Jmeter里面.
2.对查询流水添加后置处理器--正则表达式提取器
-
"accountName":"xiaoxiao1", -----------------把xiaoxiao1 换成(.*?)---"accountName":"(.*?)",
?表示非贪婪```
3.充值里面请求accountName 的值 引用上面正则的变量 格式${变量名}
4.添加debug sampler 调试 观察
5.跑一下
HTTP Cookie管理器
发送请求,经常要校验cookies信息,使用的cookie管理器,会默认把服务端返回的cookie数据记录下来 。如果没有cookie管理器,测试时要登录之后的操作就无法进行。
cookie和token
- cookie是tomcat自定义的.token是程序员写代码自定义的
cookie和session的区别
一、cookie:
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据.
二、session:
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。
三、cookie和session结合使用:
web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:
1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式.
cookie和token的五点区别
①:token和cookie一样都是首次登陆时,由服务器下发,都是当交互时进行验证的功能,作用都是为无状态的HTTP提供的持久机制。
②:token存在哪儿都行,localstorage或者cookie。
③:token和cookie举例,token就是说你告诉我你是谁就可以。
cookie 举例:服务员看你的身份证,给你一个编号,以后,进行任何操作,都出示编号后服务员去看查你是谁。
token 举例:直接给服务员看自己身份证
④:对于token而言,服务器不需要去查看你是谁,不需要保存你的会话。当用户logout的时候cookie和服务器的session都会注销;但是当logout时候token只是注销浏览器信息,不查库。
⑤:token优势在于,token由于服务器端不存储会话,所以可扩展性强,token还可用于APP中。
总结:
Token 完全由应用管理,所以它可以避开同源策略
Token 可以避免 CSRF 攻击
Token 可以是无状态的,可以在多个服务间共享
如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token,如果之上自己的那就无所谓了。
举例
1.打开登录注册页面
2.注册跳转到登录页面
3.打开fiddler抓包:用正确的用户名登录,并且输入姓名查询
-
cookie和token
导出添加到jmeter看前面几天的简书有详细说明.
4.填好信息,启动cookie,设置好断言跑一下观察!
5.关闭cookie跑一下 查询挂了
6.在登录请求里面添加后置处理器---正则表达式提取器
7.设置正则表达式提取器
7.1
7.2
8.在查询--http信息管理头里面添加 cookie =$({token})
9.跑一下看看
10.如果等一会又挂了怎么办.复制Set-Cookie:后面的值到正则里面缺省值里面就OK!
*cookie和token一定要会用
待续.......CSV 和if 控制器一起写吧!