【软件测试】接口调不通排查分析+常遇面试题总结

目录:导读


前言

1、接口调不通,如何去排查?

1)接口没有任何响应

很多时候在做接口测试时,会发现接口没有任何返回,比如浏览器一直在转圈,或者返回一个空白页面。用接口测试工具时,工具报错,提示"no response"。

排查思路:

先检查接口ip是否正确,可以通过在本机ping 接口的ip,检查网络是否通畅

再检查接口的端口号是否正确,可以通过在本机telnet接口的ip和端口号,检查端口是否能连通

检查项目是否启动或者部署成功,可以找研发确认,或者自己登录到服务器上,通过ps命令检查项目的进程是否存在,然后用tail命令查看部署日志

检查服务器防火墙是否关闭,如果因为安全或者权限问题不能关闭,需要找运维进行策略配置,开放对应的ip和端口号

检查你的客户端(浏览器/测试工具),是否设置了网络代理,网络代理可能会造成请求失败

检查操作系统的host文件,是否绑定了一个错误的ip映射

2)接口有响应但是返回了错误的状态码

有些时候接口会返回一些错误的HTTP状态码,需要根据不同的状态码来确定具体的原因。

排查思路

400:客户端请求错误,比如请求参数格式错误(如json字符串不合法)

401:未授权,比如在请求header里,缺乏必要的信息头(如token、auth等字段)

403:禁止,常见的原因是用户的账号没有对应的url权限,还有就是项目所用的中间件,不允许远程访问(比如Apache)

404:资源未找到,导致这种情况的原因很多,比如:

a> url写错了

b> url后有空格

c> 项目没有启动成功

d> 请求协议不对,如http/https

405:方法不允许,常见的原因是请求方式不正确,比如GET类型接口,使用POST方式去请求

415:不支持的媒体类型,常见原因是请求数据的类型和服务端支持的类型不匹配,比如json接口,需要添加一个信息头Content-type:application/json

500:服务器内部错误,出现这种情况,说明服务端内部报错了,需要登录到服务器上,检查错误日志,根据具体的提示信息再进行排查

502/503/504(Bad Gateway/错误的网关、Service Unavailable/服务无法获得、Gateway Timeout/网关超时)

a>如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了

b>如果并发压测时出现此错误,说明是后端压力太大,出现异常,此问题一般是后端出现了响应时间过长或者无响应造成的

2、接口测试常遇面试题

1)怎么理解同步通信?

同步通信指的是客户端发送请求给服务端,服务端必须得回应客户端的请求,也就是说有请求就必须有回应,所以也正因为这个问题同步通信就会出现超时或者堵塞的问题

2)怎么理解异步通信?

异步通信指的是客户端和服务端之间根本不知道对方的存在,他们中间通过消息队列来进行整个通信的,也就说客户端把消息发送给消息队列,服务端从消息队列里面拿取到对应的消息,服务端处理完成后会把这个消息发送给消息队列,然后客户端从消息队列获取这个数据,所以他们根据不知道对方的存在

3)怎么理解cookie,session,token?

HTTP协议是一个无状态协议,所以导致cookie技术的整个发展,cookie是记录用户操作行为的一个状态,但是它存储在客户端,它是不安全的,所以呢我们有整个session,session它是这个存储在服务端的,我们把他成为一个令牌

请按步骤的方式描述session的请求流程

客户端提交账户和密码登陆成功

服务端会生成一个sessionid, 并且存储在服务端,服务端通过set-cookie把生成的sessionid响应给客户端

客户端再次请求服务端,会在请求头里带上sessionid 发送给服务端

服务端接收到sessionid和服务端本地存储的sessionid进行比较,如果相符允许访问个人主页,如果不相符 ,则返回登陆页面

4)如果发送请求,协议状态码返回500的错误,怎么解决?

这个是服务端内部错误,这个是需要找程序员的

5)如何理解协议状态码和业务状态码?

协议状态码是标准的

业务状态码是程序员自己定义的,想怎么定义就怎么定义,很随机很自由。

6)按步骤的方式描述token的请求流程?

按步骤的方式描述cookie的请求流程

以登陆为案例来说明cookie的流程

客户端输入账户和密码登陆成功

服务端生成cookie的信息,通过响应头中的set-cookie把生成的cookie返回给客户端。

客户端在下次请求的时候,通过请求头中的cookie把返回的cookie带上发送给服务端,服务端内部进行验证

7)在get请求里面。如果有请求参数,使用的参数是那个的?

我们在postman中我们通过params,路径参数,如果在jmeter中我们直接添加到路径的请求地址里面

8)在postman里面在哪里填写请求参数?

如果是get请求,那么它的路径参数就是在params,如果是POST请求他的数据格式是表单那么我们是在Body里面勾选x-www,如果是json的格式那么我们raw里面勾线json填写json的数据格式,如果是XML的格式那么我们就勾选XML在里面填写XML的数据格式

9)详细描述下API自动化测试的流程?

首先我们先梳理产品过程当中哪些模块可以做自动化测试,梳理完成后,我们和相关的主管领导去对一下,对完之后我们通过jmeter工具或者postman工具,我们把复盘之后我们就上相关的领导进行评审,评审看我们的断言对不对,看你的结构对不对

10)详细描述下你使用ant是怎么做API的测试的

JMeter整合Ant工具来生成测试报告步骤:

搭建ant的环境,(把 ant 的bin路径加在path里面)验证方式:ant -v

在jmerer的extras目录下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下

编写build.xml文件

定义了执行那个测试脚本

实现自动发送邮件

自动生成测试报告

打开jmeter的bin目录下的jmeter.properties文件,做如下修改:

把jmeter.save.saveservice.output_format=csv

修改为jmeter.save.saveservice.output_format=xml

activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下

完善build.xml文件后,在控制台进入到build.xml文件

输入ant即可

|-------------------------------------|
| 下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |

一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

每一次努力都是自己的投资,每一份付出都将成就更加辉煌的未来。坚定前行,勇往直前,因为只有不断超越自己,才能成就非凡。

生命因奋斗而绽放,每一份汗水都是未来的灿烂;坚韧不拔,才能走出属于自己的辉煌之路。别停下脚步,因为你可以更强大。

在每一个黎明之前,总有黑夜的挣扎;在每一次坠落之后,必有勇气的奋起。不放弃,不言败,让梦想的火焰照亮前行的路途。

相关推荐
霍格沃兹测试开发学社测试人社区4 小时前
数据驱动与并行策略:用 JUnit 5 让软件测试更高效
软件测试·测试开发·junit
霍格沃兹测试开发学社测试人社区4 小时前
软件测试丨探索 JUnit 5 中的参数化与调度执行:提升软件测试的效率与灵活性
软件测试·测试开发·junit
互联网杂货铺21 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
qq_433716952 天前
Selenium+Pytest自动化测试框架 ------ 禅道实战
自动化测试·软件测试·selenium·单元测试·pytest·接口测试·压力测试
HKJ_numb12 天前
软件测试 —— 自动化基础
软件测试·selenium·测试工具·自动化
blues_C2 天前
Pytest-Bdd-Playwright 系列教程(11):场景快捷方式
自动化测试·pytest·bdd·playwright
blues_C3 天前
Pytest-Bdd-Playwright 系列教程(12):步骤参数 & parsers参数解析
自动化测试·pytest·bdd·playwright