1、通用接口用例设计
1.1 测试内容
通过性验证、接口安全、异常验证(必传非必传、参数类型、入参长度)、业务逻辑
例如:接口安全,关键字段如密码有没有加密 (F12开发者工具-network)
1.2 接口测试模板
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员
2、关于接口知识补充
2.1 cookie、session
- cookie是在本地存的键值对,session是在服务端存的键值对
- cookie清空,右键clear,或按 clear all。如登录后清空cookie,刷新页面就会是未登录 状态
- postman要发送cookie,可能需要在chrome安装扩展程序 Postman Interceptor。
- cookie 可以在header发送出去,为键对{'Cookie':’xx=xx,xx=xx,xx=xx'}的格式。postman中可以直接使用
2.2 header
例如添加{'Refer':'http://www.baidu.com/'},用来防盗链
3、postman脚本
- 单独做功能测试,用postman更直观;需要做压测,postman不支持,可以用jmeter。
-
请求方式为get,可以不需要借助任何工具,直接使用浏览器测试。
- 首先点击右上角的设置按钮,点击Globals,添加ip地址进去,就可以对ip进行参数化设置,避免重复输入的繁琐。
- 用户注册接口:(ip参数化)
-
调用登录接口:(post请求)
-
调用添加学生信息:(json串) ps:json格式:要加逗号,输入的参数类型为字符串时要调整类型选项为json
-
调用学生金币充值:(cookie) PS:Headers信息头内可以填入cookie参数。cookie参数的设置格式为[{"key":"名称","value":"参数名称=参数值","description":""}]
- 调用获取所有学生信息:(header) PS:Headers信息头内可以填入重定向参数
-
调用上传文件:(file) PS:Key的类型一定要选择file
-
调用查询学生信息接口:(get请求) PS:①输入"url?参数名=参数值",若有多个,则可以使用&连接符链接,如:"url?参数名1=参数值1&参数名2=参数值2";②get请求参数既可以写在url地址栏里,也可以写在请求体中
4、Jmeter脚本
响应乱码配置:sampleresult.default.encoding=utf-8
请求Body乱码配置:jsyntaxtextarea.font.family=Hack
1、线程组设置:
2、Jmeter参数化
2.1、 设置IP地址参数化(用户定义的变量)
2.2、 调用用户注册接口:(用户名参数化) PS:(函数助手--counter函数)
2.3、 调用添加学生信息:(json串) PS:(函数助手--Random函数、time函数、counter函数)
- ${__counter(,)} 计数函数,默认从1开始递增
- ${__Random(100,999,)} 在100~999范围内随机取值
- ${__time(,)} 时间戳 ,时间戳就是从计算机诞生到目前这止过了多少秒,jmeter里的时间戳精确到毫秒
- ${__time(yyyy,9999)} 年
- ${__time(yyyy-MM-dd HH:mm:ss,9999)} 年-月-日 时:分:秒
2.4 、 调用查询学生信息接口:(get请求) PS:(CSV Data Set Config)
3、Jmeter关联
3.1、 调用登录接口:(post请求) (正则表达式)
正则表达式为:"sign": "(.*)",
3.2、调用查询学生信息接口:(get请求) PS:(jp@gc - JSON Path Extractor)
3.3、 调用学生金币充值:(cookie) (cookie的两种传递方式:http信息头管理器、http cookie管理器)
4、Jmeter响应断言
4.1、调用获取所有学生信息:(header) ( 断言)
5、文件上传
5.1 、调用上传文件:(file)