接口自动化之测试用例设计(一)
2020-06-27 本文已影响0人
伍个一
JMeter第一阶段打卡结束之后,大家可以拿公司的接口试试手,完成接口测试。
有个很重要的点要注意:JMeter只是执行用例或者是产生压力的工具。至于用例怎么写,产生多少的压力,还是要看使用者的。
- 举个例子:就像一把菜刀,在大厨手里,可以花式雕刻,什么菜对应什么刀工,炒土豆丝就是土豆丝,炖土豆块就是土豆块;但是,同样的一把刀,到我们(我)手里,切出来的就是土豆条。
- 工具,就是工具,主要还是看用的那个人怎么用。
1.什么是接口?
接口代码里的话,一个接口其实就是一个函数,像下面这样的两个接口
//基于Python+flask
from flask import Flask
app = Flask(__name__)
@app.route('/')#接口为 /
def hello_world():
return 'Hello, World!' #返回Hello, World
@app.route('/login', methods=['POST', 'GET'])#接口为login,请求方法为:post,get
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
return render_template('login.html', error=error)
if __name__ == '__main__':
app.run("127.0.0.1")
2.针对输入参数
对于接口来说,输入就是入参。常见参数类型有:数值,字符串,数组,多维数组等
2.1数值
- 等价类
在编写功能用例的时候,等价类是十分常用的一种方法,这个"价",不知道大家怎么理解?
1. int
2. float
3. double
- 边界值
- 遍历
- 可能存在的问题
1.传入非特定类型程序异常退出
2.超长字符没有进行异常处理,导致存储,显示等异常
3.其他用户可见的敏感数据
2.2 字符串
- 等价类
1. String
2. ....
- 边界值
- 遍历
2.3 数组
- 个数
例如:权限以数组存储,数组上限30,但是有第31个权限
- 内容
1.数组内容异常处理
2.重复的元素
3.元素为0
- 可能导致的异常
1.元素个数为0,异常退出
2.重复数据没处理,结果异常
2.4多维数组
经常会遇到数组嵌套,JSON串嵌套的情况,一层一层测试
3.针对输出结果
- 针对输出结果设计测试,其实就是针对接口返回的结果进行分析测试。
3.1 业务结果
这个就根据具体的业务,具体分析输出结果,然后进行写用例
3.2 错误处理
- 错误码
- 错误异常返回结果有很多情况很多值,根据返回的错误码和错误类型进行比对,根据业务需要设计测试用例
- 异常处理
我们不一定能够覆盖所有的错误码,所以常见的问题就是: 1.错误处理不足,导致前端异常
2.错误提示处理不当,导致用户看到错误码。(什么SQL异常,error等)
3.错误提示不当,用户看了提示不知道哪里出了问题,怎么解决
4.针对接口逻辑
针对接口逻辑,也就是场景型接口。
4.1 数值限制
例如:电商类设计了一个活动,用户积分800分的用户可以参与。那么,活动的一些接口就有了一个800分的限制
4.2 状态限制
例如:电商类产品,用户登录之后才可以购买商品。那么,下单的一些接口就有了一个用户登录限制
4.3 权限限制
例如:一些OA类产品,管理员对应的权限操作,普通用户对应的操作,业务流程对应的操作等,那么,这些接口就有了一个对应的权限限制
5. 针对接口超时
- 没有进行超时处理,整个流程阻塞
- 超时后,又收到接口返回,导致逻辑出现错乱
6.针对废弃接口
- 因为需求变更,暂时不用,没有及时删除
- 新老版本更替,废弃接口没有检查,对应服务没有更新
7.针对接口合理性
- 字段冗余
具体业务,具体分析
- 接口冗余
例如:删除单个,和多选删除
单个删除是不是多选删除为1的情况?
- 接口命名
有没有发现捞日志的时候,看了半天接口名,不知道这个接口干嘛用的