接口测试流程
需求讨论—需求评审—场景设计—用例设计—数据准备—执行
设计测试用例的目的
- 理清思路,避免漏测
- 提高测试效率
- 跟进测试进度
- 告诉领导做过
- 跟进重复性工作
接口测试用例设计依据
- 功能是否正常,
- 接口是否按照接口文档开发
- 接口是否有依赖业务【支付功能之前是否已经登录成功】
- 异常测试
- 参数异常(key):关键字参数(将参数名改为程序中的关键字)、参数为空、多&少参数,错误参数;
- 数据异常(value):关键字数据(将参数名改为null)、数据为空、数据长度不一致、错误数据
- 安全测试:
- Cookies:对需要cookies值的接口,删掉cookies值后接口是否报错
- Header:对接口的header参数进行删减,然后验证接口是否正常
- 唯一识别码:只适用于移动端接口测试,如:某些接口会将手机唯一识别码发到服务端作为唯一的验证,如果是冒充或者数据库里面不存在,也需要做出相应处理或者提示
接口测试工具
使用Python编写GET/POST请求
import requests
"""POST请求"""
#定义接口地址
url = "https://jt2.jd.com/customer/web/business/getInfoRecommendationList"
#定义接口请求数据
payload='pageNum=1&pageSize=10'
headers = {
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'sec-ch-ua-mobile': '?0',
'authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjdXJyZW50VGltZU1pbGxpcyI6IjE2MjE1NzU3NDk2NjkiLCJleHAiOjE2MjE2NjI3NDksInVzZXJJZCI6ImQ5Y2RlODliMWQxMjQxM2NiMjUwNDNjYmMzNmNlM2VlIn0.YkAM0yv63Vq5bV-yaFuLvhrA6G9TuYDvC6zNQIQ8Ccc',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
#整理请求数据并发送请求,获取结果
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
"""GET请求"""
#定义接口地址
url = "https://www.baidu.com"
#定义接口请求数据
data = {"wd":"postman"}
headers = {
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
'sec-ch-ua-mobile': '?0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Content-Type': 'application/json',
'Cookie': 'BIDUPSID=10685CEEC34669DF067E13F01A2A6C96; PSTM=1620791048; BAIDUID=10685CEEC34669DFED08E24197776D3C:FG=1; BDSVRTM=0; BD_HOME=1; H_PS_PSSID=33800_31660_34004_33607_26350'
}
#整理请求数据并发送请求,获取结果
response = requests.request("GET", url, headers=headers, data=data)
print(response.text)