接口测试面试
接口面试题
1. HTTP协议状态码400\403\500\502分别代表什么
首先,回答题干状态码含义
400 -- 浏览器端请求方式不对或请求提交的参数有误
402 -- 此状态码为保留状态码,当前无具体含义
500 -- 服务器运行异常,一般是源码运行中抛出异常
502 -- 客户端通过代理服务器间接访问服务器时,代理服务器从上游服务器获取的响应无效
然后,可以对其他状态码做出补充说明
一般情况下状态码大致有五种:
1xx: 只会在实验状态下使用,生产环境下杜绝出现,1xx代表请求正常,但是服务器不产生响应
2xx: 请求响应正常,比如 200 201 204 等
3xx: 以其他方式获取资源,比如: 304 取本地缓存 302 重定向等
4xx: 客户端异常比如: 400 404
5xx: 服务器端异常,比如: 500
2. 多个API的连续调用的测试用例的难点是什么,你是如何解决的
- 不同 API 之间的数据传输问题,可以使用关联进行数据的提取与传输
- 使用到逻辑控制器(分支和循环)
3. TCP/IP连接,建立连接几次握手,断开连接几次握手,画出建立连接和断开连接的示意图
建立连接 3 次握手,断开连接 4 次挥手
4. 什么是restful
RESTful 是常见的一种软件架构,他约束了 API 文档的编写规范
在API文档中描述各个功能点实现的流程以及数据提交和响应的规则,由于程序中有大量的接口实现,对应的文档篇幅较长,为了保证文档的易读性,可以引入 RESTful 架构风格
具体约束如下:
增:
要素1: URL + POST
要素2: 使用 JSON 数据
要素3: 201(200) + 新增的那条数据
删:
要素1: URL + DELETE
要素2: 键值对格式
要素3: 204 + 无
改:
要素1: URL + PUT
要素2: 使用 JSON 数据
要素3: 201(200) + 修改后的数据
查:
要素1: URL + GET
要素2: 键值对格式
要素3: 200 + 单条数据或多条数据
PS: RESTful 架构风格是程序实现时的软性非硬性约束,API文档以及程序实现可以不遵守此规范
5. 你项目里的接口是怎么测的
1、指定一个测试计划,任务分配
2、接任务,从API 文档提取接口清单
3、设计测试用例以及测试数据
4、编写测试脚本导入测试数据并执行
5、结果比对,BUG 提交
6. 接口测试用例怎么写?
测试用例设计主要考虑两方面即:正向数据与逆向数据,具体原则如下
\1. 覆盖所有的必选参数
\2. 组合可选参数
\3. 参数边界值
\4. 如果参数的取值范围是枚举变量,需要覆盖所有枚举值
\5. 空数据
\6. 包含特殊的字符
\7. 越界的数据
\8. 错误的数据
7. 为什么你的商城项目要测试后台接口,可以直接页面功能测试对比数据库就好了,为什么还要测接口
1、不易于BUG定位,集成测试时,一旦出现BUG,由于前端也有部分算法实现比如 JS,那么不能准确定位BUG产生于前端还是后端
2、集成测试时,即便不出现BUG,也有可能是前端过滤了非法数据,但是我们跨过前端恶意访问,存在一定的安全隐患
3、就测试效率而言,当系统越庞大、复杂时,接口测试可以提高测试效率
8. 知不知道参数加密,如果接口的参数加密了,你要怎么去测
需要编写脚本,使用相应的加密算法对参数加密(一般求助开发)
9. HTTP请求有哪些方法,有什么区别
较为常用的有: GET POST PUT DELETE
1 | GET | 请求指定的页面信息,并返回实体主体。(主要用于查询) |
---|---|---|
2 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。(主要用于新增) |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。(主要用于修改) |
5 | DELETE | 请求服务器删除指定的页面。(主要用于删除) |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
10. postman如何使用,主要进行什么操作
Postman 使用时,围绕三个要素设计:
1、请求接口的 URL 与请求方式
2、提交的测试数据
3、查看响应状态码与响应体
接口测试中主要实现一些简单操作,复杂实现,可以使用 Jmeter
11. 列出常见请求状态码
答案见题目2
12. 接口测试用的什么工具,如何判断响应内容是否符合预期
测试工具:Jmeter
判断响应内容可以使用断言组件
13. JSON与XML的区别比较
(1).XML的优缺点
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
(2).JSON的优缺点
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于初级阶段。
14. TCP协议和HTTP协议有什么区别
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。前者偏底层,后者偏表层
15. 介绍一下Cookie和Session
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
16. post方法和get方法的区别,分别用在哪些场景下
区别:
1、安全性, POST 隐式提交数据, GET 显示提交数据,前者更安全
2、数据提交量, POST 提交数据时,数据量无限制, GET 提交数据时,数据量有限制,具体限制值视浏览器而定
3、效率,GET 执行效率比 POST 更高
场景:
1、当提交的数据涉及安全或隐私性数据时,建议使用 POST,比如登录
2、当提交的数据量较大时,建议使用 POST,比如注册
3、当数据量不大且不涉及安全性问题时,建议使用 GET
17. 介绍一下json的格式
1、对象格式
语法:
{
“键1”:”值1”,
“键2”:”值2”,
“键3”:”值3”,
.....
}
举例:
存储一个学生的信息
{
“name”:”张三”,
“性别”:”男”,
“电话”:”110”
}
2、数组格式
语法:[值1,值2,值3....]
举例:存储一些人名
[“刘德华”,”周星驰”,”黄秋生”]
3、复合格式
数组格式可以和对象格式相互嵌套
3-1、对象中嵌套数组,举例: 存储人的基本信息,其中有爱好一项,爱好对应多个值
{
“name”:”张三”,
“性别”:”男”,
“电话”:”110”,
“爱好”:[“工作”,”学习”,”生活”]
}
3-2、数组中嵌套对象,举例:存储一些学生的基本信息
[
{
“name”:”张三”,
“性别”:”男”,
“电话”:”110”
},
{
“name”:”李四”,
“性别”:”男”,
“电话”:”120”
},
{
“name”:”王五”,
“性别”:”女”,
“电话”:”119”
}
]
接口测试用例如何编写。
在编写接口测试用例之前,我会熟悉需求,查看API文档,分析哪些字段是必填的,可选的,枚举值(固定值,如男,女)等,然后用工具自动生成测试用例。并且覆盖率为100%。