【10w字】超详细【百分百拿offer】的面试教程,接口测试篇

news2024/11/17 4:23:29

1.请问你是如何做接口测试的?

大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。

具体来说,接口测试流程分成以下九步:

第一步:分析出测试需求,并请开发提供接口说明文档;

第二步:从接口说明文档中整理出接口测试用例,里面要包括详细的入参(正常情况,异常情况包括输入参数个数,类型,可选/必选,考虑参数有互斥或关联的情况)和出参数据(符合接口文档需求)以及明确的格式和检查点;

第三步:与开发一起对接口测试用例进行评审;
 

第四步:结合开发库,准备接口测试用例中的入参数据和出参数据,并整理成Excel格式的文件;

第五步:结合接口测试用例文档和Excel格式的数据文档,编写接口自动化测试的业务逻辑代码;
 

第六步:开始执行接口自动化测试用例;
第七步:执行如有bug,提交至缺陷管理平台;
第八步:开发修改完成后,回归bug,跟踪状态;
第九步:完成后进行自动化持续集成;

2.接口测试如何设计测试用例?

主要从四个方面来设计接口用例:功能,业务逻辑,异常,安全。

功能:是否符合需求

1)从用户角度出发看接口能否实现业务需求,功能是否正常;

2)功能是否按照接口文档实现;

举例:比如博客园添加随笔,需要登录才能添加。也就是业务要求不支持游客添加随笔功能,如果设计一个没有登录的用户,然后去测试添加随笔接口,结果接口能添加到随笔,说明功能不正常,不符合需求和接口文档描述。

业务逻辑:是否依赖业务

1)接口实现逻辑;

2)业务逻辑覆盖(语句/条件/分支/判定/…);

举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务逻辑。

异常:参数异常和数据异常

1)参数异常:关键字参数,参数为空,多,少参数,错误参数;

2)数据异常:关键字数据,数据为空,长度不一致,错误数据;

举例:不管数据异常还是参数异常,测试点差不多,一个参数有key和value,key表示参数,value表示数据。

第一,看看参数和数据能不能支持关键字,例如Java中的保留关键字等等;

第二就是参数和数据都为空,看看是否做了判断;第三,参数多和少,例如有两个参数的接口,需要设计一个包含三个参数的用例,一个只有一个参数的用例。

数据长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,如故意输错单词等等。

安全测试用例设计:

1.cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题;


2.header:正常接口带header信息,删除header看是否能够返回数据;
3.唯一识别码:app手机识别码,一般是唯一的;

4.文本输入框sql注入和xss攻击。

3.接口测试执行中需要比对数据库吗?

接口的返回关键字段和字段值是需要校验的,不然接口测试就没有意义了,一般有两种方式:

1.数据库预置数据,接口校验返回; 

2.接口调用,比对数据库查询结果。

4.接口测试质量评估标准是什么?

一般来说,从以下八个方面评估:

1.业务功能覆盖是否完整;
2.业务规则覆盖是否完整;
3.参数验证是否达到要求(边界、业务规则);
4.接口异常场景覆盖是否完整;
5.接口覆盖率是否达到要求;
6.代码覆盖率是否达到要求;
7.性能指标是否满足要求;
8.安全指标是否满足要求;

5.接口产生的垃圾数据如何清理

造数据和数据清理,需用Python连数据库了,做增删改查的操作测试用例前置操作。

1.setUp做数据准备后置操作;

2.tearDown做数据清理;

6.其他接口要先获取接口信息,如何让登录的接口只在其他接口调用一次?

解决方法如下:

1.使用单例模式;

2.使用自定义缓存机制;

3.使用测试框架中的 setup 机制;

4.pytest 中 fixture 机制;

7.接口测试断言从哪些方面去设计?

接口测试断言可以从以下五个方面进行设计:

1.响应码:检查响应码是否符合预期,用来判断测试用例是否执行成功(针对http接口)

2.关键字:验证关键字是否符合预期,用来判断测试用例是否执行成功;

3.正则匹配:当一个接口返回的内容较多,并且有一定规律时,可通过正则表达式来校验接口返回的信息来判定测试用例是否执行成功;

4.数据库匹配核对:比如对查询一个接口返回的数据进行验证时,可通过编写sql语句查询结果,然后将sql语句执行后数据库返回的结果与接口返回的结果进行核对,以此来判定测试用例是否执行成功;

5.通过相关接口进行辅助验证:比如,当测试一个删除接口时,删除一条记录后,想验证这条记录真的被删除,可调用查询接口,若删除的记录没被查询到,则说明删除这条记录成功。

8.依赖于第三方数据的接口如何进行测试?

可以利用一些Mock工具(如:JSON Server、Easy Mock)来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖。

Mock服务是指在测试过程中对于某些复杂(或者不太好构造)的对象,用一个虚拟的对象替代它。

如现在有A和B两个接口, A需要调用接口B才能完成业务需求。这个时候B接口有如下三种情况:

1.B接口还没有开发完成:需要等待接口的数据来进行开发,这时候完善的接口Mock服务能大大缩短开发联调等待时间。

2.B的某些场景很难去模拟:比如超时、未知错误或者不稳定的第三方接口。

3.性能测试中隔离B接口(第三方接口):在进行压测的时候就会遇到问题。

9.API测试有哪些优势?

API是(Application Programming Interface),即应用程序编程接口。API是一组用于构建软件应用程序的规程,协议和工具。

API充当软件应用程序之间的接口,并允许两个软件应用程序相互通信。API是一组软件功能,可以由其他软件执行。API测试具备如下优势:

1.更快及更高的测试覆盖率。

2.API测试有助于我们降低测试成本。通过API测试,我们可以在GUI测试之前找到小错误。在GUI测试期间,这些小错误将变得更大。因此,在API测试中发现这些错误将对公司具有成本效益。

3.API测试与语言无关。

4.API测试在测试核心功能方面非常有用。我们可以在没有用户界面的情况下测试API。在GUI测试中,我们需要等到应用程序可用于测试核心功能。

5.API测试有助于我们降低风险。

10.接口调不通,如何去排查?

接口调不通的原因:

问题1.接口没有任何响应

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

排查思路:

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

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

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

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

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

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

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

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

排查思路:

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

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

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

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

1.url拼写错误;

2.url后有空格;

3.项目没有启动成功;

4.请求协议不对,如http/https;

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

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

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

502/503/504(Bad Gateway/错误的网关、Service Unavailable/服务无法获得、Gateway Timeout/网关超时)。从以下两种情况分析:

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

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

总结:
现阶段很多人都在说软件测试太内卷了,工作太难找了,竞争太激烈了。那么如何在这样的现状下使得自己更具有竞争力呢?笔者认为大家需要迅速学习软件测试的硬技能,提升自己的业务能力,早日摆脱初中级测试的Title,虽然测试人员众多,但是高级的软件测试人员还是很稀缺,有很多人挂着高级测试的头衔却还在干着初中级测试的活。在掌握这些硬技能的同时,软技能的培养同样重要,沟通能力、自主学习能力越来越被企业看重。

如果不想被这个时代淘汰,就要做好持续学习的准备。下方给大家准备了全套的软件测试,自动化测试全套教程。

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

 

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

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

相关文章

RabbitMq之发布确认(高级)

一.发送消息到交换机失败 正常情况下生产者只发布消息到交换机,无法确定是否成功把消息发送到交换机当中,由此发布确认的回调函数可以通知生产者消息是否发送到了交换机。 代码如下 1.先创建交换机、队列等信息 package jot.jothot.testMq;import or…

OS 学习笔记(6) 操作系统引导

OS 学习笔记(6) 操作系统引导 这篇笔记对应的王道OS 1.5 操作系统引导,同时参考了 《Operating System Concepts, Ninth Edition》和 俗称ostep的《 Operating Systems: Three Easy Pieces》还有 《Operating Systems: Principles and Practice》 文章目录OS 学习笔…

实战还原--从大黄蜂样本到域控管理员技术解析

0 前言实战案例还原《BumbleBee Roasts Its Way To Domain Admin》一文详细的描述了一次渗透案例,但其文章组织架构建立在ATT&CK框架上,而不是按照时间线逻辑来组织,因此对于渗透人员了解学习其前后过程有些困难,特此梳理一番…

发布微信小程序获取收集用户信息权限

前言在发布微信小程序的时候我们经常会遇到审核不通过的情况,其中一种特别让我头疼就是说小程序收集、使用和储存用户信息。不给予通过。但是他们的接口又不能提供这个功能,并且老是改动,真的特别的麻烦加无语。有时候审核偷一下懒&#xff0…

算法刷题-回文数、找出小于平均值的数、旋转图像(C_C++)

文章目录回文数找出小于平均值的数旋转图像回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的…

光电耦合器和MOSFET之间的差异

光电耦合器和MOSFET之间的差异 介绍 光电耦合器/光耦合器和固态继电器(光电MOSFET或光耦MOSFET(OCMOS FET))在保持电隔离的同时传输信号,但存在一些重要差异。 结构差异 下图显示了光电耦合器和OCMOS FET的主要内部…

Vue实战第2章:简单的分配页面布局

缓冲 前言 本篇在讲什么 本篇作为Vue实战的第二章,跟代码逻辑无关,主要是简单的先设计一下个人网站的各个模块内容,明确一下我们想要将网站做出什么样子 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上…

趣味三角——第6章——两个几何定理

第6章 两个几何定理 It is the glory of geometry that from so few principles, fetched from without, it is able to accomplish so much. (几何学的荣耀在于,仅从几个原理出发,外求于无物,但却能够完成如此非凡的壮举。) ——Isaac N…

linux基本功系列-top命令实战

文章目录一. top命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示进程信息3.2 显示完整的进程命令3.3 以批处理的形式展示3.4 设置信息更新频次3.5 显示指定进程号的信息3.6 top面板中常用参数3.7 其他用法四. top的相关说明4.1 交互命令介绍4.2 top面板每行信息的含义4.2.…

MySQL(八):事务的隔离级别、MVCC的原理

目录一、事务的隔离级别1.1 事务的隔离性1.2 事务并发执行引发的一致性问题1.2.1 脏写1.2.2 脏读1.2.3 不可重复读1.2.4 幻读1.3 SQL标准中的四种隔离级别1.4 MySQL中支持的4中隔离级别二、MVCC原理2.1 版本链2.2 ReadView2.3 READ COMMITED 每次读取数据前都生成一个ReadView2…

使用独立显卡安装黑苹果,但无法扩展显示器的解决方案

使用独立显卡安装黑苹果,但无法扩展显示器的解决方案 网上的教程 本文的外部链接🔗 引用文中的一句话:“这也许是无法驱动独显的黑苹果笔记本想要外接显示器的唯一方案。” ---- 购买拥有displaylink的外置显卡的usb转接器 文章作者给我了…

word@菜单自定义和公式输入

菜单栏快捷键设置 word 设置(选项) Word options (General) - Microsoft Support 点击文件->选项 自定义word菜单 自定义功能区 Customize the ribbon in Word - Microsoft Support Customizing the source list of commandsThe ribbon listAdd or remove commandsReor…

[golang Web开发] 2.golang web开发:操作数据库,增删改查,单元测试

简介 Go 语言中的 database/sql包定义了对数据库的一系列操作,database/sql/driver包定义了应被数据库驱动实现的接口,这些接口会被sql包使用.但是 Go语言没有提供任何官方的数据库驱动,所以需要导入第三方的数据库驱动,不过连接数据库之后对数据库操作的…

超经典JavaIDEA 10个插件 Java开发工程师

工欲善其事,必先利其器。 作为一名合格的程序员,合理配置我们所用的IDEA,是高效开发的必修课。而如今的插件工具也越来越好用,不仅基本具备了智能提示,还可以自动补全代码,甚至能够在查出bug的同时提供修改…

如何彻底删除硬盘数据?电脑高手也恢复不了

实用的小命令,就是彻底删除硬盘上的数据,硬盘恢复软件也恢复不了! 1.以管理员身份运行cmd窗口,打开cmd,如下图所示: 2.在命令提示窗口中,直接输入cipher /w:路径,输入这个命令加上路径即可将文件彻底删除! 可以从整个命令说明上看到是从整个卷上可用的未使用磁盘空间…

Git (2) :Git练习--分支的新建与合并

一.首先有个问题 ? 在进行git练习前,有个问题需要提下。。。。 csdn无法登录了。 查了一下资料,是因为CSDN服务器的各地相应速度不一样,辽宁的响应是超时的,所以通过在hosts文件中指定域名http://csdnimg.cn的服务器…

机器学习之卷积操作

很多好主意一旦踏上语义鸿沟,就再也听不到。 卷积,在图像、视觉领域乃老生常谈的内容,但是对于具体工作细节仍然值得我去学习。 卷积原理 卷积,就是利用一个小的矩阵(或者更高维向量)作用于图像矩阵(或者特征矩阵),然…

Web测试、APP测试常用技巧(错过你一定会后悔)

目录 1. web元素定位七种方式 2. app元素定位3种方式 3. adb常用命令 4. 键盘操作常用函数 5. 鼠标操作常用函数 6. apppium: 7. fixture 1. web元素定位七种方式 优先使用的6种 find_element_by_id (返回一个元素)find_element(s)_by_class_name (根据类名…

2023-02-01 pthread线程局部数据-记录

摘要: pthread线程局部数据-记录 参考: https://www.akkadia.org/drepper/tls.pdf https://en.wikipedia.org/wiki/Thread-local_storage https://download.csdn.net/download/adofsauron/87408865 测试代码: 示例一: #include<stdio.h> #include<stdlib.h> #…

pip install timeout错误解决方案

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结…