jmeter的项目实践

 

最近负责一个商品管理的自动化测试,业务都是简单的增删改查,工具使用jmeter,

因为刚做测试,所以遇到很多的坑,其中的痛苦,和大家分享下,这样心里估计就不会孤单了.

首先项目需要获取一个access_token的对象,需要对其中的access_token值进行认证,并带上所需要的参数.这个token值的有效期是一天,所以我每天都要问经理要token值,赶上忙的时候,你要一直等着,而无法开始你的测试工作.

那天架构师跟我讲,有个地址你自己获取一下就行了,

那我新建一个获取token值的线程组,是普通的thread group. jmeter的项目实践

当时获取这个token值给了一个curl的指令,里面有用户名和密码,还有就是授权的类型.

好了跑起来了,先使用json解析获取出其中的access_token

jmeter的项目实践

jmeter的项目实践

那么问题来了,在目前的线程组,我获取到的这个access_token是可以获取到并使用的,但是如何跨越到我的测试线程组呢,所以这里又有一个跨线程取值的问题,

在jmeter中自定义函数中有个_P和_property函数都可以实现.

${__P(access_token,)}    ${_property (access_token)} 里面直接放属性名就可以拿到对应的属性值jmeter的项目实践

这里的配置是根据token值的要求来配置的authentication,包括后面的bearer 也是,看具体项目的要求.

然后跑起来了,但是有个问题就是我要跑两遍才可以获取到token值,第一个遍是不行的,也没太管,因为我能测试就可以了,过了三天以后,经理帮忙搂了一眼,他说这里是个问题,后来五分钟后他说,用setup thread group 就可以了,我去网上查了下,这是初始化东西的地方,如果请求前必须要带上token值,就可以用这个线程来获取到.

接口测试:

我接到的第一个任务就是调通每个接口,刚开始接触,我忘记了使用变量,这是给自己埋下的一个大坑,每次开发一清理数据,我又的重新修改,

后来,全部都改为变量,从新增商品开始,我定义好我需要的多个随机生成的商品名称,

jmeter的项目实践

jmeter的项目实践jmeter的项目实践

然后几十个接口,大概都是这么写的,开始测喽,先测的商品,没错,开心到起飞,再把升级打开,凑,飘红什么鬼.

然后看jmeter的日志,我要验证的名字和结果对不上,但是我取的要校验的值是对着的啊.

然后在请求上面打桩,当商品名称到了升级模块,名字的值就开始对不上了,原来这个鬼是User defined Variables 中定义的所有参数的值在Test Plan的执行过程中不能发生取值的改变,因些一般仅将Test Plan中不需要随迭代发生改变的参数(只取一次值的参数)设置在此处.

这个属性的取值只在当前请求有效,并且是只取一次的参数,所以是没办法给后面的接口作为参数使用的.所以只能自己写代码,在beanshell 中定义自己期望的值,这里是设计为一个精确匹配和模糊匹配,

jmeter的项目实践

记得要put进去,在验证的时候,才可以获取到期望的值,来和response 结果进行匹配.

 

这个过程其实主要是看数据的变化,在数据变化前要先走一下查询,变化之后在走一遍查询才可以.

再有就是今天下午遇到的问题,

因为有一个接口是删除附加商品的,但是附加商品是绑定在主商品之下的,我怎么确定我的附加商品在么,我想到的是名称,但是名称是可以重复的,所以只能看关联id 还在不在,

那么这个时候就要变更你的期望的返回值了,那么为了以后方便复用,万一以后还有更多的类似匹配,就可以不用改动了.

jmeter的项目实践

这是期望的值,可以根据你的数据,设计你想要的格式,

那么接下来要做的就是将期望的值和返回的结果值进行比对,

Check中是你希望匹配成功,如果匹配那么false,代表成功了,

Unchecked是你不希望匹配的,也就是如果你的关系ID被删除掉了,那么你是不希望匹配的

再就是有精准匹配自然也会有模糊匹配,所以模糊匹配和精准匹配是差不多的.

jmeter的项目实践

到今天为止,遇到了很多的坑,导致自己总是被绕晕,做以下总结:

1,像这种重复性的接口,只要把第一个想好,后面的就很好鼓捣了,所以多想而不是立马去做

2.遇到问题多思考,可以自己在beanshell中自己log你的结果,在控制台自己对基本的数据先比较,如果没有比较上,再看请求或者看返回的消息码是怎么样的,去和开发沟通,也可能是数据出了问题

3.关于代码,其实是少量的,说白了还是对数据的操作,写的代码自己做test验证,

这次的项目经理帮了我很多,很多的坑都是经理帮我调的,我发现要仔细,细心,并且熟练你的业务,而且准备的数据要互相不冲突但是又有关联关系.

jmeter的项目实践