接口测试API的面试点
什么是接口测试
接口测试(即API),是应用程序编程接口;
原理:通过测试程序或工具,模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理,然后再把应答报文发送给客户端
接口发送请求的协议是?(前后台之间的通讯协议)
http(测试/开发环境)、HTTPS(预生产/生产环境)
接口测试要关注什么内容?(如何判断接口测试是通过的?)
- 发送给服务器的请求数据是否正确
- 服务器返回给客户端的信息是否和预期结果一致;
- 进入数据库,检查接口是否实现的相应的功能;
- 接口的响应时间是否符合需求
接口测试在什么时候做?
前后端联调
为什么要做接口测试?(接口测试的目的?)
- 可以尽早发现bug降低修复成本
- 可以发现UI界面无法发现的底层(功能)问题
接口测试类型有哪些
接口类型通常分两种:
- 外部接口:系统与系统之间的接口
- 内部接口:前端与后端之间的接口
一般做的是怎样的接口类型?
内部的,前端与后端之间的接口
做接口测试,需要有哪些数据才能做?
必要:接口文档(服务器ip、端口、协议、url路径(地址)、请求的参数、请求的方式)
非必要:请求参数的约束条件、响应的数据(正常,异常)、请求参数和响应参数的数据说明
请求方式有哪些:
get、post、delete、put,最常用的就是get和post两种
怎么做接口测试?
前置条件:需要配置JDK环境
- 拿到接口文档,
- 编写测试用例;
①确定请求方式和返回数据格式
②根据请求参数划分出正常与异常
③分析返回报文(返回数据报文就是预期结果)- 确定使用工具:Jmeter,Postman
- 执行测试
- 提交bug
- 测试报告
接口出错了怎么办?
- 先检查一下是否是自己的操作错误(请求参数,请求方式)
- ping一下网络,看网络是否通畅
- 查看一下服务器是否启动
- 都没问题,就提交问题单给开发
接口测试bug类型有哪些?
- 实际的响应报文和预期不一致(功能实现错误)
- data字段内返回的字段缺失
- data字段内返回的数据错误
查看日志或者说定位问题
查找日志中存在报错或异常的日志信息:可通过命令grep 查找exception 或error关键字进行搜索
工作中什么时候用到抓包
- 抓包,判断前后端问题
- 做安全测试,检查传输数据是否加密;拦截请求,篡改数据----下单、支付充值等
- 模拟弱网
- 统计单个功能的响应器
如何判断前后端问题
Jmeter
如何搭建Jmeter环境
- 因为Jmeter的开发语言是Java,所以要安装JDK(Java的编译环境)
- JDK安装完成后,配置环境变量(JAVA_HOME、CLASSPATH、path)
- 下载Jmeter并解压,在Jmeter安装目录下的bin目录找到jmeter.bat启动即可
Jmeter、JDK版本分别是多少?
Jmeter 4.0
JDK 1.8
jmeter的操作
-
jemter线程组:
- 线程组名:一般改成对应的项目功能模块名称或项目名称
- 线程数:即用户数量,一个用户=一个线程(做性能测试是需要用到)
- Ramp-Up Period(in seconds):n秒生成m个线程数
- 循环次数:用户的循环次数,填写空时默认勾选永远
- 调度器:勾选后,持续时间不能为空(否则会报错,导致整个接口运行不了)
-
HTTP请求:
名称一般填写被测接口功能名称,
HTTP请求默认协议为HTTP协议(可写可不写);默认端口:80(可写可不写) -
json格式:以{}或[]开头括起来的数据,一般都是大括号{}
里面的参数与值格式(“参数”:值),多个参数用逗号隔开(“参数”:值,“参数”:值) -
json格式的请求数据在Body data下,还有一定要加上http信息头管理器
-
接口响应数据返回格式?
json格式 -
PUT请求发送的数据要写在body data下
参数=值&参数=值 -
聚合报告
Jmeter的面试点
什么是断言?—>就是预期结果
多个断言是默认连接为且(and)
断言有哪些:
响应断言,http状态码,json响应断言,bean shell断言
什么是参数化?
模拟多用户进行操作;
参数化的作用?
模拟用户正常和异常的操作场景
如何自动关联?
- 通过后置处理器下的正则表达式提取器去提取,然后使用${id}去使用
- json提取器
- 后置处理器的beanshell进行跨线程关联
加密接口怎么测试?
- 通过MD5在线加密,把加密后的密文复制到对应的请求值
- 通过函数助手MD5进行加密
- 通过beanshell编写Java代码进行加密
jmeter如何防止内存溢出(OOM:out ofmemory)
- 找到jmeter.bat,右键–用文本打开
- 查找set heap修改初始内存和最大内存,然后保存
(-Xms是初始内存,-Xmx是最大占用内存)