API知识
1、三次握手?
第一次:客户端向服务端发送请求,服务端确认请求
第二次:服务端接收并确认客户端的请求,然后给予反馈
第三次:客户端收到服务端的回复,客户端向服务端确认并给予反馈
2、HTTP的完整请求流程?
(1)客户端和服务端建立TCP连接;TCP即传输控制协议
(2)客户端向服务端发送request请求;
(3)服务端response回复响应客户端;
(4)客户端和服务端连接断开。
3、HTTP协议组成
请求部分:请求头,请求方法,请求地址,请求参数
响应部分:协议状态码,响应头,响应数据
4、怎么理解cookie,session,token?
cookie流程: 数据储存在客户端不安全
(1)登录成功后服务端生成cookie ID(储存在本地),通过set cookie把生成cookie ID返回给客户端
(2)客户端访问如个人主页,会通过请求头的cookie把cookie ID带上,发送给服务端;
(3)服务端把客户端发送和储存的cookie ID来对比,一致继续访问反之回到登录界面。
session流程: 数据储存在服务端相对安全
(1)登录成功后服务端生成session ID(储存在服务端),通过set cookie把生成session ID返回给客户端
(2)客户端访问如个人主页,会通过请求头的cookie把session ID带上,发送给服务端;
(3)服务端把客户端发送和储存的session ID来对比,一致继续访问反之回到登录界面。
token流程:基于session原理,每次获取token都是一个随机字符串,把它定义一个变量,后面使用调用。
(1)登录成功后服务端生成token(储存在服务端),通过set-cookie把生成token返回给客户端
(2)客户端访问如个人主页,通过请求头的Authorization把token带上发送给服务端;
(3)服务端把客户端发送储存的token进行对比,一致继续访问反之回到登录界面。
5、接口断言需要哪几方面?
协议状态码、响应数据、业务状态码。
6、怎么理解协议状态码404?如果一个接口访问时400,排查思路时什么?
404请求的资源不存在,请求地址错误;400客户端请求错误,请求头或者请求参数填
7、怎么理解同步通信和异步通信?
同步通信:客户端发送的请求服务端必须响应。缺点:容易超时
异步通信:遵循队列的先进先出规则,主要通过MQ消息中间件传递消息进行交互。消费者模式,客户端和服务端双方都不需要关注对方的存在,只需要关注对应的MQ的消息。
8、如果发送请求,协议状态码返回500的错误,怎么解决?
重复之前的步骤,打印错误日志给开发
9、常见协议状态码
200 请求成功 201 添加成功 204 删除成功
301 永久重定向 302 临时重定向
400 客户端请求错误 401 无权限访问该系统
403有权限但无法访问 404 请求的资源不存在
405 不被允许的请求方法 415 请求体不对
500 服务器内部错误 504 网关超时
10、怎么理解协议状态码和业务状态码?
协议:基于 HTTP协议工程实现,若服务器端不符合协议规定,可判定服务器HTTP实现是错的。
业务:开发描述业务的码,用于客户端明确得知本次请求资源状态,有此码输出表明当次HTTP请求是通的。
11、怎么理解Requets里面的post请求方法的data和json?
Data:表单数据格式,若要用data处理json的数据格式需要先对json数据进行序列化处理。
Json:是处理json的数据格式。(常用数据格式:xml,data,json)
12、在get请求里面,如果有请求参数,使用的参数是那个的?params
http://localhost:5000/login?name=wuya&age=18 使用参数name:wuya,age:18。
13、常用的请求方法?
post:客户端向服务端请求向服务端添加新的资源。Get、Put、Delete
14、postman里面在哪里填写请求参数?body
表单数据格式填写在X-www-form:json/数据格式填写在raw下的json中。
jemter中,表单数据格式填写在参数中,json数据格式填写在消息体数据中。
15、参数之间的关联在代码里面怎么解决?
通过函数的返回值解决。
16、怎么理解session会话对象?
节约请求的时间,让所有请求之间的session/cookie能够共享,这样底层TCP就只需要建立一次。
17、PostMan&JMeter的动态参数处理思路
以书籍管理添加和修改为例:
Postman:
登录成功后在Tests里定义一个变量来获取响应数据中的动态参数token,在下个接口(首页)中,使用{{}}调用定义的变量,最后执行Collection
在书籍管理系统中添加一本书;通过添加书籍的响应数据获取到书籍的ID,再添加书籍的tests中定义一个变量,获取这个书籍的ID。修改书籍时带上书籍动态ID,通过{{}}调用定义的变量,最后添加并运行集合。
JMeter:
登录成功会返回token动态参数,在jmeter登录接口中添加后置处理器的json提取器或正则表达式提取器,把获取到的token定义一个变量,在下个接口中通过${}来调用。
在书籍管理系统中添加一本书,通过添加书籍的响应数据获取到书籍的ID,通过后置处理器的json提取器和正则表达式提取器,定义一个变量获取书籍的ID;在修改书籍时直接通过${}调用这个变量。
18、怎么理解HTTP COOKIE管理器,HTTP信息头管理器?
HTTP COOKIE管理器:jmeter中用来处理cookie/session请求中获取cookie id/sessionid的配置元件
HTTP信息头管理器:jmeter中用来写请求头的配置元件。
19、jemter、postman怎么生成测试报告?
JMeter:通过整合ant以及build.xml文件生成测试报告
(1)在jmeter的tests中构建目录结构,保存测试文件在tests的scritp中;
(2)复制tests文件夹路径,打开控制台进入到test文件夹,输入ant就可以生成测试报告;
(3)在本地tests文件夹的report的html中就可以看懂测试报告。
Postman:整合XTML插件,通过 newman即可生成XTML的测试报告
(1)导出测试用例集合,保存在本地,并复制文件名;
(2)打开控制台,进入到保存文件的储存盘,输入newman run 文件名 -r html输出xtml格式的测试报告;
(3)在本地保存文件的储存盘中,找到newman文件夹,就可以看到输出的测试报告。
20、详细描述下API自动化测试的流程?(所有的自动化测试都是回归测试)
(1)梳理可以做自动化测试的模块及场景是否合理;
(2)写自动化测试test;召开测试用例评审会
(3)评审后修改后把自动化测试代码整合到jenkins持续集成平台上,下个迭代时可直接使用。
21、JMeter的API测试实战
创建线程组添加HTTP请求填写对象的请求方法、请求地址和请求参数,在添加配置元件中的HTTP信息头管理器填写请求头,最后添加监听器中的查看结果树,点击运行即可在查看结果树中看到请求的结果。
22、如何判断是前端问题还是后端问题?
在接口测试中期望接口返回的值是123,但实际响应数据返回的值是456,就是后端问题;
如果期望接口与实际响应数据返回的值都是123,但页面显示的值是456,就是前端问题。
23、什么是数据驱动?如何实现?
在自动化测试中(工具&代码)把公共数据分离出来就是数据驱动。
Postman:通过集合edit下variable(tests)把请求地址分离(断言)出来使用{{}}调用
JMeter:通过配置元件中的HTTP请求默认值把请求地址分离出来。也可通过配置元件中用户定义的变量,将共有的参数分离出来,通过${}调用。
24、什么是参数化?如何实现?
不同数据用相同测试步骤。一个测试点需要多次操作,每次操作的数据不同但测试步骤一致
JMeter:
(1)通过添加前置处理器中的用户参数来实现,然后添加变量点击添加用户有几个用户线程组就修改为几。
(2)通过添加配置原件中的csv数据文件设置(csv data set cofing)来实现,先创建储存参数的文件,文件格式可以是csv或者txt(XX,XX),再导入到csv配置元件中,有几个用户线程组就修改为几。
(3)二者联系与区别:都是通过设置变量将用户参数剥离出来,用户参数是将参数通过变量和用户进行定义,但csv是将参数通过文件的的方式定义。
25、如果没有接口文档,你是怎么做接口测试的?
使用抓包工具:如fiddler、Charles;或者network
26、接口测试中有哪些异常信息
状态码除了200和300,400以后都是常见的错误
27、给你一个服务你会从哪些方面测试它
正常 异常和测试场景
28、梳理出JMeter常用的组件以及这些组件怎么使用的
查看结果树:查看用例结果 线程组:集合,写测试用例
HTTP请求:请求方法,地址,参数
HTTP请求默认值:数据相同分离,比如地址
HTTP信息头管理器:请求头,请求数据的类型
JSON提取器、正则表达式提取器::获取动态参数
CSV参数化:比如测试平台造数据,使用不同用户登录来验证产品管理的业务
29、怎么理解序列化和反序列化?
字符串序列化:
(1)序列化(dump):把Python内存数据类型(字典,元组,列表)转为str数据类型过程。
(2)反序列化(loads):str的数据类型转为Python对象的过程。
文件序列化:
(1)序列化(dump):文件的写,把内容写入文件的过程。
(2)反序列化(load):读取文件内容的过程。
30、在Python中,接口测试的库是那个?
requests
31、在接口测试中,需要参考哪些信息和文档作为接口预期结果
接口文档,业务场景

浙公网安备 33010602011771号