> JMeter第一阶段打卡结束之后,大家可以拿公司的接口试试手,完成接口测试。 * [1.什么是接口?](#1什么是接口) * [2.针对输入参数](#2针对输入参数) * [2.1数值](#21数值) * [2.2 字符串](#22-字符串) * [2.3 数组](#23-数组) * [2.4多维数组](#24多维数组) * [3.针对输出结果](#3针对输出结果) * [3.1 业务结果](#31-业务结果) * [3.2 错误处理](#32-错误处理) * [4.针对接口逻辑](#4针对接口逻辑) * [4.1 数值限制](#41-数值限制) * [4.2 状态限制](#42-状态限制) * [4.3 权限限制](#43-权限限制) * [5\. 针对接口超时](#5-针对接口超时) * [6.针对废弃接口](#6针对废弃接口) * [7.针对接口合理性](#7针对接口合理性) 有个很重要的点要注意:JMeter只是执行用例或者是产生压力的工具。至于用例怎么写,产生多少的压力,还是要看使用者的。 - 举个例子:就像一把菜刀,在大厨手里,可以花式雕刻,什么菜对应什么刀工,炒土豆丝就是土豆丝,炖土豆块就是土豆块;但是,同样的一把刀,到我们(我)手里,切出来的就是土豆条。 - 工具,就是工具,主要还是看用的那个人怎么用。 # 1.什么是接口? ![接口](https://upload-images.jianshu.io/upload_images/15603170-76e0ce409c64bad6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 代码里的话,一个接口其实就是一个函数,像下面这样的两个接口 ``` //基于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的情况? ``` - 接口命名 - 有没有发现捞日志的时候,看了半天接口名,不知道这个接口干嘛用的 ![设计接口用例](https://upload-images.jianshu.io/upload_images/15603170-4111a8c113a8df5d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)