接口测试-工作心得记录五(接口采样和验证列表重复数据)
背景:最近写接口测试的时候遇到一个比较特殊接口response,正好也用到采样的测试思想,就想拿出来写写。
接口采样
上一个app版本上了一个获取简历筛选的接口,服务端返回没有分页直接吐给客户端,json结构如下:
{
“code”:0,
“name”:“success”
“message”:"",
"data":[
{
"postid":"",
"posttitle":"",
},......
]
}
这个很正常json结构体,目前我接口测试校验两个。1.正常返回。2.json结构体的key。response['data']是list类型。当list过长时,书写hope_response时编辑器特别卡,无法运行并且我估计check方法也会出现异常,造成脚本很不稳定。好维护稳定一直是我书写接口测试的目标。既然不成不全校验,那怎么办嘞,我也是想了好久,后来想到可以用采样的方法,既然response['data']是一个列表,那么我就随机出来一个索引index,response['data'][index]数据结构和我书写hope_response结构保持一致就认为正确的。思路有了写就成了。先上抓包的response,这样形象点,如图:
图有限没有全部截图出来,线上数据有可能会出现更多的情况,而且除了response['data']列表过长之外,还有就是因为该接口返回有职位的报名信息,如果线上账号不时有数据变更,比如说用户报名我发布的职位,或者我添加报名,都会造成check方法报错,总要去维护查找case,很不实用,所以采样测试思想很重要。
测试case如下:
先写一个空的responre['data']把获取的索引拼上去,就可以了。上面这个就是
接口重复数据验证
接口返回数据重复的问题,上面说的是服务端一次性全部返回的问题,这个呢就是分页后有可能会出现重复数据的问题。分页有份两种情况一种是接口有返回一共多少页这个不用说了遍历就行了,另一种就是没有说有多少页,接下来说得就是这种情况。
- 首先看一下接口请求,因为有数据重复的问题,服务端处理办法是请求时当参数request['page']=1时对应的request['first_apply_id']=0,如图:
当request['page']>1时,要带上第一页的第一个的applyid,即request['first_appy_id']=applyid,如图:
- 接口返回,response['data']也是列表,想要验证apply_id是否有重复,我的想法是直接遍历response['data']取apply_id放到空列表中校验即可,直观点上一张接口返回的图片,如图:
- 页数。这个问题我真的想了好久,后来想到,因为接口一页固定返回10条数据,如果是10条数据我就page+1继续请求下一页,就算最后一页刚好10条也没有关系,下一页也是空嘛,如果不到10条就停止循环,思路就是这样,直接上我写code,如图:
- 判断重复。这个就很写了,list有一个方法就是list.count()可以计算出列表中每个元素在列表出现的次数,当次数!=1是就说明有重复。如图:
思路就是这样,最后上了我整条case的书写,希望可以帮助到别的小伙伴:
最近在研究locust接口并发,看看能不能接口目前已有的接口写点东西,有点心得回头分享一下。