接口测试用例跟常规的功能测试用例基本一样,可以从接口功能测试、接口业务测试、接口性能测试、接口安全测试等角度考虑。
接口的逻辑校验,可以参照接口流程图来进行设计,一个分支需要作为一个场景去进行测试,需要覆盖到流程图里面所有的逻辑分支。
接口的参数校验,可以参照接口文档中的参数定义去进行验证,需要覆盖到所有参数对应的枚举值以及错误码等信息。
▌3.接口测试用例设计思路
接口功能的关注点是:
1.接口参数正确与否:接口传入的参数是否有正确填写;
2.接口参数缺失:接口参数有必填、选填参数,传参时,测试参数缺失对结果的影响;
3.接口参数边界值:比如用户名、密码有长度限制,需要测试不同长度的参数对结果的影响;
4.接口参数类型:比如接口文档中用户名为String类型,测试传入其他数据类型对结果的影响。
▌4.接口测试其他范围
接口业务测试
主要是从业务的角度出发,把接口组合成一条业务链,比如登录之后充值,在数据库中金额是否正确等等
接口的性能测试
是指接口是否满足业务的要求,比如业务要求系统可以满足50个人同时下单,那么下单这个接口就要可以承担50 TPS,目前业内一般使用JMETER去做接口性能测试,jmeter接口性能后续会单独在Jmeter系列文章里介绍。
接口安全测试
接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用。
注意:本文主要涉及接口功能测试,相信做过功能测试的童鞋,设计接口测试用例也是没问题的。
04 接口测试用例实战
以下,我们以登录接口进行实战。
随着代码模块越来越多,混在一起,杂乱无章,这时我们考虑架构分层了,封装的requests请求类,每个用例都要调用,可以放在公共模块里。
① 在项目下新建一个文件夹common,放入请求模块requests_handler.py
requests_handler.py
import requests
class RequestsHandler:
def init(self):
“”“session管理器”“”
self.session = requests.session()
def visit(self, method, url, params = None, data= None, json= None, headers= None):
result = self.session.request(method,url,params=params,data=data,json=json,headers=headers)
try:
返回json结果
return result.json()
except Exception:
return ‘not json’
def close_session(self):
self.session.close()
②编写登录接口用例,调用封装的请求类。
登录用例,新建一个test_cases文件夹,用来存放用例模块。
test_Login.py
import unittest
from common.requests_handler import RequestsHandler
class LoginTest(unittest.TestCase):
def setUp(self):
请求类实例化
self.req = RequestsHandler()
def tearDown(self):
self.req.close_session()
def test_login_success(self):
login_url = ‘http://127.0.0.1:8000/user/login’
payload = {
“mobile_phone”: “1530272****”,
“pwd”: “12345678”
}
res = self.req.visit(‘post’,login_url,json=payload)
self.assertEqual(0, res[‘code’])
if name == ‘main’:
unittest.main()
运行结果为:
Ran 1 test in 0.213s
OK
对于用例的一些总结:
①setUp, tearDown。前置条件,后置条件,setUp实例化,在运行测试用例前获取session管理器, tearDown,在测试用例执行结束后关闭session管理器。
②对于断言,小伙伴们可能不知道到底用返回结果中的哪个字段断言。个人意见,如果code、msg比较详细的话,可以利用code、msg其中一个来断言,当然code、msg一起做断言也可以,甚至你觉得返回结果中某个数据符合你的预期,也是可以拿来断言,断言手段是灵活多变的,自行选择最优方案。
小伙伴们看到总结,退出微信,打开王者荣耀,一气呵成,其实还没完呢,我们写了正向用例,还有异常用例也写两条,更多的异常用例可以自行扩展下。
import unittest
from common.requests_handler import RequestsHandler
class LoginTest(unittest.TestCase):
def setUp(self):
请求类实例化
self.req = RequestsHandler()
def tearDown(self):
关闭session
self.req.close_session()
def test_login_success(self):
“”"
正确手机号,正确密码
“”"
login_url = ‘http://127.0.0.1:8000/user/login’
payload = {
“mobile_phone”: “1530272****”,
“pwd”: “12345678”
}
res = self.req.visit(‘post’,login_url,json=payload)
根据请求结果中的code进行断言
self.assertEqual(0, res[‘code’])
def test_phone_is_null(self):
“”"
手机号为空,密码正确
“”"
login_url = ‘http://127.0.0.1:8000/user/login’
payload = {
“mobile_phone”: “”,
“pwd”: “12345678”
}
res = self.req.visit(‘post’, login_url, json=payload)
根据返回结果中的msg进行断言
self.assertEqual(“手机号码为空”, res[‘msg’])
def test_pwd_is_null(self):
“”"
正确用户名,密码为空
“”"
login_url = ‘http://127.0.0.1:8000/user/login’
payload = {
“mobile_phone”: “1530272****”,
“pwd”: “”
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-eSCeyn7b-1712983909756)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!