API知识

1、三次握手? 

第一次:客户端向服务端发送请求,服务端确认请求 

第二次:服务端接收并确认客户端的请求,然后给予反馈

第三次:客户端收到服务端的回复,客户端向服务端确认并给予反馈

 

2、HTTP的完整请求流程?

 

(1)客户端和服务端建立TCP连接;TCP即传输控制协议

 

(2)客户端向服务端发送request请求;

 

(3)服务端response回复响应客户端;

 

(4)客户端和服务端连接断开。

3HTTP协议组成

请求部分:请求头,请求方法,请求地址,请求参数

响应部分:协议状态码,响应头,响应数据

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请求方法的datajson?

Data:表单数据格式,若要用data处理json的数据格式需要先对json数据进行序列化处理。

Json:是处理json的数据格式。(常用数据格式:xml,data,json)

 

12get请求里面,如果有请求参数,使用的参数是那个的?params

http://localhost:5000/login?name=wuya&age=18 使用参数namewuya,age18。

 

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中用来写请求头的配置元件。

 

19jemterpostman怎么生成测试报告?

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通过集合editvariabletests)把请求地址分离(断言)出来使用{{}}调用

JMeter通过配置元件中的HTTP请求默认值把请求地址分离出来。可通过配置元件中用户定义的变量,将共有的参数分离出来,通过${}调用。

 

24什么是参数化?如何实现?

不同数据用相同测试步骤。一个测试点需要多次操作,每次操作的数据不同但测试步骤一致

JMeter

(1)通过添加前置处理器中的用户参数来实现,然后添加变量点击添加用户有几个用户线程组就修改为几。

(2)通过添加配置原件中的csv数据文件设置(csv data set cofing)来实现,先创建储存参数的文件,文件格式可以是csv或者txtXXXX),导入到csv配置元件中,几个用户线程组就修改为几。

(3)二者联系与区别:都是通过设置变量将用户参数剥离出来,用户参数是将参数通过变量和用户进行定义,但csv是将参数通过文件的的方式定义。

 

25、如果没有接口文档,你是怎么做接口测试的?

使用抓包工具:如fiddlerCharles;或者network

 

 

26、接口测试中有哪些异常信息 

 

状态码除了200300400以后都是常见的错误

 

 

 

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、在接口测试中,需要参考哪些信息和文档作为接口预期结果

 

接口文档,业务场景

 

 

 

posted @ 2022-07-22 11:11  Yvonne_26J  阅读(65)  评论(0)    收藏  举报