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

news2024/11/20 1:48:22

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

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性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1478493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode583. 两个字符串的删除操作 -代码随想录

题目&#xff1a; 代码(首刷自解 2024年2月29日&#xff09;&#xff1a; class Solution { public:// 动态规划 好像和找最长公共子序列一样&#xff1f;int minDistance(string word1, string word2) {int sz1 word1.size();int sz2 word2.size();// dp initvector<vec…

是谁家的小千金跑出来了?

古典的山树绣花设计 精致典雅&#xff0c;上身立体又轻盈 做了粉绿两色&#xff0c;很适合春天的氛围 春天是个适合外出游玩的季节 穿上这件出游真的超美&#xff0c;日常穿也可 超出片很吸睛&#xff01;

JavaEE——简单认识JavaScript

文章目录 一、简单认识 JavaScript 的组成二、基本的输入输出和简单语法三、变量的使用四、JS 中的动态类型图示解释常见语言的类型形式 五、JS中的数组六、JS 中的函数七、JS 中的对象 一、简单认识 JavaScript 的组成 对于 JavaScript &#xff0c;其中的组成大致分为下面的…

综合练习(一)

目录 列出薪金高于部门 30 的所有员工薪金的员工姓名和薪金、部门名称、部门人数 列出与 ALLEN从事相同工作的所有员工及他们的部门名称、部门人数、领导姓名 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金高于部门 30 的所…

打造去中心化透明储蓄罐:Solidity智能合约的又一实践

一、案例背景 传统的储蓄罐通常是由个人或家庭使用&#xff0c;用于存放硬币或小额纸币。然而&#xff0c;这样的储蓄罐缺乏透明性&#xff0c;用户无法实时了解储蓄情况&#xff0c;也无法确保资金的安全性。 通过Solidity智能合约&#xff0c;我们可以构建一个去中心化…

论文笔记:基于互信息估计和最大化的深度表示学习

整理了ICLR2019 LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION&#xff09;论文的阅读笔记 背景模型 论文地址&#xff1a;DIM code&#xff1a;代码地址 背景 发现有用的表示是深度学习的一个核心目标&#xff0c;由于之前的工作已经可以…

使用js写一个登录验证码效果

面试题 登录页面获取验证码的功能&#xff0c;用户点击获取验证码按钮(id”btn1”)&#xff0c;按文字变为“(N)后获取验证码”&#xff0c;N为倒计对秒数&#xff0c;从 60 开始&#xff0c;每秒减一&#xff0c;减到 0的时候&#xff0c;按钮文字变为“获取验证码”&#xff…

Android Kotlin协程实战

你能听懂的Kotlin协程课&#xff0c;跟老司机学&#xff0c;不用自己瞎折腾 认识协程 协程难在哪儿? Ja v a中不曾出现的&#xff0c;新概念概念不清晰&#xff0c;我们看到的大都是不同语言对于协程的实现或者衍生Kotlin 基础不扎实多线程编程基础太薄弱 协程是什么? 协…

Unity | Shader基础知识(第十集:shader常用外部资产单词速成)

目录 一、外部资产简介 二、常用的外部资产单词 三、常用的外部资产单词和引入内部 四、图片资产外部调整的具体讲解 1.Tiling&#xff0c;中文&#xff1a;铺地砖 2.Offset&#xff0c;中文&#xff1a;偏移 五、作者的话 一、外部资产简介 在第六集中&#xff0c;我们…

新王炸:文生视频Sora模型发布,能否引爆AI芯片热潮

前言 前方高能预警&#xff0c;Sora来袭&#xff01; 浅析Sora的技术亮点 语言模型中构建关键词联系 视频素材分解为时空碎片 扩散模型DiT Not for play, But change world! OpenAI的宏大目标 未来已来&#xff0c;只是尚未流行 Sora的成本与OpenAI的7万亿美金豪赌 算…

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程&#xff0c;语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境&#xff0c;并挂起执行python脚本 conda activ…

nginx使用详解--缓存使用

Nginx 是一个功能强大的 Web 服务器和反向代理服务器&#xff0c;它可以用于实现静态内容的缓存&#xff0c;缓存可以分为客户端缓存和服务端缓存。 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请…

leetcode:1974. 使用特殊打字机键入单词的最少时间(python3解法)

难度&#xff1a;简单 有一个特殊打字机&#xff0c;它由一个 圆盘 和一个 指针 组成&#xff0c; 圆盘上标有小写英文字母 a 到 z。只有 当指针指向某个字母时&#xff0c;它才能被键入。指针 初始时 指向字符 a 。 每一秒钟&#xff0c;你可以执行以下操作之一&#xff1a; 将…

算法基础(三)(模拟)

1.模拟算法介绍&#xff1a; 模拟算法通过模拟实际情况来解决问题&#xff0c;一般容易理解但是实现起来比较复杂&#xff0c;有很多需要注意的细节&#xff0c;或者是一些所谓很“麻烦”的东西。模拟题一般不涉及太难的算法&#xff0c;一般就是由较多的简单但是不好处理的部…

RT-Thread+ENV+MDK+STM32CubeMX适配

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动/单片机/RTOS的实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff…

T - SQL使用事务 及 在Winform使用事务

事务适用场景 1 事务使用在存储过程中&#xff0c;直接在数据库中进行编写 2 事务使用在Winfrom项目中 SQl&#xff1a;使用事务转账操作的实例 一般都会找一个变量记录错误的个数&#xff0c;error记录上一句sql的错误和错误编号 declare errornum int 0 -- 定义…

el-table 指定表格合并行与单元格,以及表头合并单元格

1&#xff1a;页面html <template><div class"container"><div class"flex-end"><el-button type"primary" click"allEndBtn">批量办结</el-button><el-button type"primary" click"…

【第十天】C++函数对象/仿函数、谓词、适配器及常见algorithm算法

一、函数对象 重载了函数调用运算符()的类 实例化的对象叫函数对象&#xff0c;也叫仿函数。 如果函数对象 有一个参数 叫&#xff1a;一元函数对象/仿函数如果函数对象 有二个参数 叫&#xff1a;二元函数对象/仿函数如果函数对象 有三个及以上参数 叫&#xff1a;多元函数对…

Java设计模式 | 七大原则之合成复用原则

基本介绍 合成复用原则&#xff08;Composite Reuse Principle&#xff09;尽量使用合成/聚合的方式&#xff0c;而不是使用继承 设计原则核心思想总结 找出应用中可能需要变化之处&#xff0c;把他们独立出来&#xff0c;不要和那些不需要变化的代码混在一起针对接口编程&…

Ubuntu系统下DPDK环境搭建

目录 一.虚拟机配置1.添加一个网卡(桥接模式)2.修改网卡类型3.修改网卡名称4.重启虚拟机5.查看网卡信息6.dpdk配置内存巨型页 三 DPDK源代码下载和编译1.下载源代码2.解压源代码3.安装编译环境4.编译5.设置dpdk的环境变量6.禁止多队列网卡7.加载igb_uio模块8.网卡绑定9.验证测试…