一、参数化--只针对入参
1,可能需要用到参数化的场景
1)数据库做了唯一约束。 unique
2)业务层做唯一性校验。比如 单点登录 比如qq只能在一个台Windows上登录
3)避免查询操作时,由于查询已经在缓存中的东西(查询相同的数据),响应时间变小,导致性能测试结果失真
2,参数化的方式
1)可使用jmeter提供的一些 函数 比如,time/uuid等来产生一些理论上不会重复的数据
但可能要注意几点:入参是否有位数限制/最好在入参前加固定前缀(便于之后的check)--lml${__time(,)}
2)可使用 用户参数,多个用户+多个变量
3)csv data set config
什么情况下必须使用?
比如查询的请求,测试数据不能自己随便造,必须依靠数据库中的数据。
二、关联
1,定义
将某个请求的response中的某个动态变化的值,把它保存成一个变量,供后面需要用到该变量值的请求使用
response中-动态变化-别人会使用
2,为什么使用关联
服务器 或者数据库 会校验该值的正确性和逻辑性
3,哪些值需要关联
1)数据库设计思想
范式设计 反范式涉及
2)关系型数据库 和 非关系型数据库的特点
3)哪些值要关联
跟数据库交互-读写操作
insert 需要关联的是 建立关系的那几个字段--这条数据属于谁,谁操作的(信息一般会登录后存储在cookie中),啥时候干的(这个数据库校验不了,顶多业务层校验)
insert into table (字段1,字段2,..) value (变量1,变量2,...)
update 需要关联的是 where后面的条件id(谁操作的uid,啥时候干的update_time,操作的哪条数据 xxid)
update table set xxx=??? where xxid=?? and/or
delete 需要关联的是 where后面的条件id(谁操作的uid,啥时候干的update_time,操作的哪条数据 xxid)
delete from table where xxid=?? and/or
select 需要关联的是 where后面的条件
select xxx,xxx from table where xxid=?? and/or
其他情况-典型使用场景
时间戳 ---变化的,数据库不能校验
验证码(图片/手机短信/邮箱验证码)---变化的,来源于对应的比如发短信的服务
APP中的token (包含了用户和时间等信息),浏览器中的session ---变化的,不存在于数据库中
-特征
奇奇怪怪。没有任何规律。相反数据库中要关联的字段有规律 key一般为int类型xxid
4、从哪里取要关联的值--哪个请求返回 要关联的值 综上 一般都是 要找id
1)离该请求最近的查询操作--会返回需要的字段id
2)插入操作insert后会跟一个select操作(比如注册完返回uid,新增一条帖子返回tid)