接口测试的工作心得一

本人接触了接口有半年多,使用过不少工具,如JMeter,Restlet client、postman、fiddler,还有自己公司正在使用的

swagger UI(开发在上面调试),接口测试的主要目标是检查接口的有效性。包括三点:

1.服务器端的返回的数据查看,如果服务器返回错误代码,或者不给出任何返回值的接口,都是不具备一个完好的接口的特征

的,在检查服务器返回的数据的时候,要结合相应的测试用例,一般来说都是返回JSON字符串较多,最开始一般都带code,可

以通过code的正确与否,做出响应判断;JSON返回数据的校验,是否与接口文档保持一致,在没有文档的文档的前提下,充分

了解接口返回的各种情况,在传入正确参数,错误参数(也要相应的考虑等价类和边界值,特别是一些被限制了的接口,只允

许传入参数1和2,在传入3的时候得出的结果会让你想不到,小编的自己体会)。

2.后台的响应的日志记录,在你调用接口的时候,后台应该会有个记录显示,下图是小编测试的接口相关截图,由于是生产环境

数据全部清空了



在你每一次调用接口的时候,后台都会有一条记录,哪怕是在MYSQL或者redis或者RoBo3T里面,也要相应的查看结果,下图

为在RoBo3T里面的相应的结果,查看是否把信息录入后台(如果有误,丢失或者失败,就要查看原因,原因分为客户端,服务

端、接口入参是否能正确录入的情况)

接口测试的工作心得一_第1张图片

3.客户端的显示,在小编做的一个接口测试中,客户端会相应的收到一条消息,内容就是接口请求的content,查看是否乱码,

或者是否正确收到,结合请求的各种情况查看。相应的小编测试的一个接口,具有清空客户端消息条数的功能,这个就要结合发

送消息的接口再调用清空消息的接口,由于是延迟或者要刷新界面,客户端必须进去再出来或者重新开启,才会实现效果。当然

测试的过程中,不免会发现问题,比如批量推送的接口没有正确的清空条数,原来没写进去这个功能。还有记住一点,如果不确

定接口是否通,或者查看不到客户端显示,就要去问开发,到底在哪里可以看到,如果条件允许进入测试数据库服务器自己琢

磨,如果不信让开发帮助验证,没时间也要催他,毕竟是你的工作。


小编在做接口测试的时候,涉及了一个具有页码以及总页数的接口,由此可以利用小编在学的python的request库来进行接口测

试的响应调试,在开展测试活动之前,分析从哪些角度,1:单页的大小,如果size有默认的时候,查看默认和0的区别;2.total

的大小吗,如果有默认值的话也要和1相比,是不是符合;3:查看page的值,相应的和默认值以及0相比较;4,在做上述功能

测试的过程中小编还验证了是否有重复数据的校验,在某一页的最下方和下一页最开始一个可能会重复,由于是后台记录的接口

数据,不能完全保证是否一一对应无差,所以相应的写了脚本校验;

关于重复数据的校验,大体思路是这样的,先调用接口查看一共几页,在从接口的页面中一一遍历,把取得的关键字段存入列表

中,再利用列表.count[]方法检查是否有重复,如果有打印出该页数,相应的代码如下。

一:先调用一次接口

url = 'http://XXXXX.XXX.XXXXX.COM/XXXX/XXX'
para = {"size":2,
        "page":0}
header = {'content-type':'application/json; charset=utf-8'}
request = requests.post(url,params=para,headers=header)
print(request.text)#打印出结果查看
response = request.json()#打印出结果的json查看
total = response['content']['page']['total']#把总数在响应的json里面拿出来,用response[][][]
pageSize = response['content']['page']['pageSize']#打印大小

二:添加判断函数,是否到了最后一页,到了就出去循环

if total % 2 == 0:#由于是奇偶页分情况
    pagesum = total/pageSize
else:
    pagesum = (total+1)/pageSize
while currentpage < pagesum:#判断是否到了最后一页
    #print(1)
    para = {"size":2,
            "page":currentpage}#是指当前页,只不过先要知道最后页
    request1 = requests.post(url,params=para,headers=header)
    response2 = request1.json()#开始一次次的调用接口
三:关键步骤遍历,只有通过遍历接口的返回值,才能取出来响应的数据
 #遍历列表的数据
    for value in response2['content']['data']:
        #print(type(value))
        #print(1)
        #不能使print(response2['content']['data']['userNick'])
        #print(value['userNick'])
        if userid==value['userId']:
            #raise Exception('找到了'+value['userNick'])
            print('当前的页数为',currentpage+1)
            print(value['userNick']+'的详细数据为',json.dumps(value,sort_keys=2,indent=True,ensure_ascii=False))
            #不能使用json.dumps(value,sort_keys=2,indent=True)因为json格式的字符串对于中文显示如果加上ensure_ascii=False那就可以使原有的语言文字
        userId.append(value['userId'])#利用方法存入列表中,定义一个空列表
    currentpage = currentpage+1
print('用户的个数为:',len(userId))
四:从取到的值判断是否有重复数据
for value2 in userId:
    #count(value)方法判断是否有重复
    if userId.count(value2)!=1:#利用count查看列表中过是否有重复数据
        print("测试失败,有重复数据出现")
        print('出现的次数',userId.count(value2))
        print('出现的索引位置',userId.index(value2))
        if userId.index(value2)<=1:
            print('重复的那一页为第一页')
        elif userId.index(value2)%2==0:
            print('重复出现的那一页为',(userId.index(value2)/2)+1)
        else:
            print('重复的那一页为',(userId.index(value2)+1)/2)
        #print('重复的那一页页数为',userId.index(value2)/17)
        break
下面是完整代码
# coding:utf-8
import requests
import json
currentpage = 0
userid = 'XXXXXX'
#匹配的用户ID将要执行下一步操作的
userId = []
#用来存在用户id的值的列表,判断是否重复,用userId.count(value)的方法
url = 'http://URLdizhi/dsd/selectdsadAll'
para = {"size":2,
        "page":0}
header = {'content-type':'application/json; charset=utf-8'}
request = requests.post(url,params=para,headers=header)
print(request.text)
response = request.json()
total = response['content']['page']['total']
pageSize = response['content']['page']['pageSize']
if total % 2 == 0:
    pagesum = total/pageSize
else:
    pagesum = (total+1)/pageSize
while currentpage < pagesum:
    #print(1)
    para = {"size":2,
            "page":currentpage}#是指当前页,只不过先要知道最后页
    request1 = requests.post(url,params=para,headers=header)
    response2 = request1.json()
    #遍历列表的数据
    for value in response2['content']['data']:
        #print(type(value))
        #print(1)
        #不能使print(response2['content']['data']['userNick'])
        #print(value['userNick'])
        if userid==value['userId']:
            #raise Exception('找到了'+value['userNick'])
            print('当前的页数为',currentpage+1)
            print(value['userNick']+'的详细数据为',json.dumps(value,sort_keys=2,indent=True,ensure_ascii=False))
            #不能使用json.dumps(value,sort_keys=2,indent=True)因为json格式的字符串对于中文显示如果加上ensure_ascii=False那就可以使原有的语言文字
        userId.append(value['userId'])
    currentpage = currentpage+1
print('用户的个数为:',len(userId))
for value2 in userId:
    #count(value)方法判断是否有重复
    if userId.count(value2)!=1:
        print("测试失败,有重复数据出现")
        print('出现的次数',userId.count(value2))
        print('出现的索引位置',userId.index(value2))
        if userId.index(value2)<=1:
            print('重复的那一页为第一页')
        elif userId.index(value2)%2==0:
            print('重复出现的那一页为',(userId.index(value2)/2)+1)
        else:
            print('重复的那一页为',(userId.index(value2)+1)/2)
        #print('重复的那一页页数为',userId.index(value2)/17)
        break




你可能感兴趣的:(接口)