爆肝整理,接口测试方法总结+常问面试题(答案)

news2025/1/16 5:07:43

目录:导读

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


前言

理想的测试流程

产品经理提供产品需求、原型设计;
开发提供接口文档、单元测试脚本;

接口测试必要文档

接口文档需要的要素:
访问方式;路由;输入参数;返回参数;完整的例子

从0开始测试接口

如果没有提供必要的接口文档、测试同学要学会自己从0开始了解接口。
常用以下三步:
工具辅助:
借助一些工具的辅助来完成接口分析
windws系统:fiddler
Mac OS系统:推荐Charles、mitmproxy

分析问题:
分析接口必要的信息
访问方式:post、get
HOST:访问的服务器域名
Connection 的值为keep-alive,表示需要持久连接
User-Agent:说明请求是从什么浏览器发出的
Sec-Teth-Site 和 Sec-Feth-Mode :JS中对跨域的一些设置
Accept-Encoding :设置为gzip、deflate、br 可以支持的web服务器返回内容压缩编码类型
Accept-Language: 可以接受的语言
Cookie:用来确认身份、鉴定角色权限等需要的参数

询问疑惑,向研发确定参数的含义、作用域、返回值的含义:

参数的含义以及来源:参数的中文意思,参数的赋值时从哪里来的(其他页面返回值、JS生成的)如果是其他页面或接口返回的,确定具体接口具体字段,或者清楚它的生成规则,确保可以手动构造

参数的作用域:这个参数在这个接口中是做什么用的,它在哪个访问周期是一直存在的,它是否导致了业务逻辑分支等。

返回值的含义:针对返回的JSON要搞清楚在返回值中,每一个JSON的key所对应的含义,这样当你需要和这个接口产生交互的时候,就可以快速地拿到对应参数的含义,完成业务逻辑上下文的参数串联

接口测试思维

先从单个接口的测试开始,保障单个接口的正确性和健壮性,然后通过单个接口的测试完成多个接口的业务逻辑串联,站在业务逻辑的角度完成业务逻辑的正确行检测。

单接口测试

保证该接口的正确性和健壮性,既要保证这个接口可以按照需求,正确处理传入的参数,给出正确的返回;
也可以按照需求,正确的拒绝传入非正确的参数,给出正确的拒绝性返回。

业务流程接口测试

通过多个接口的串联操作可以完成原来需求中提出的业务逻辑,这也是它主要关注的内容。

注意:在接口测试中,通过单个接口测试完成了全部异常状态的覆盖;在业务流程中,我们更需要关心业务流和数据流的关系,并不需要在过度关心如何利用业务流的方法覆盖更多的代码逻辑异常

测试用例设计与原则

1、正面测试用例:
覆盖所有的必选参数
组合可选参数
参数边界值
如果参数的取值范围是枚举变量,需要覆盖所有枚举值
结合实际业务应用场景设计输入参数的组合

2、负面测试用例:
空数据、null
包含特殊字符
越界的数据,参数字符长短、最大+1,最小-1
参数个数、顺序、类型错误

3、验证点:
状态码,正常情况下返回200
响应信息数据结构是否与预期结果一致
检查接口返回数据是否与预期结果一致
验证结点的值,针对固定的值或有规则能知道预期结果的值
对于列表,应该根据请求参数,列表的长度是否与期望值一致
负面测试用例,验证error info是否与实际相匹配
检查接口的容错性。传递数据的类型错误时是否可以处理
接口的性能,响应时间
接口的安全性

面试常问:你们公司是如何做接口测试的?

答案1:
获取接口文档,熟悉单接口 以及链路接口(接口业务流程)的业务,包括:接口地址、鉴权方式、入参、出参、错误码等。

编写接口测试用例并评审?
正例:
1-2个,单接口返回成功场景,链路接口业务流程实现(功能业务流程)

反例:
鉴权异常:空、错误、过期;
参数异常:空、类型异常、长度异常;
错误码异常:接口文档中会给出错误码;
其他异常:接口黑名单、接口调用次数现在(分页,少于0, =0, 中间页,最大页,超过最大页)

使用接口测试工具或代码的方式执行接口测试,重要考虑的情况:接口关联、接口加密、接口参数是否签名、是否需要带请求头等

实现持续集成并输出接口测试的电子邮件,有bug 提bug。

答案2:
接口测试实际跟一般测试不同就是测试用例的设计部分。
①获取接口规范。
②设计接口测试功能用例(主要从用户角度出发看接口能否实现业务需求,用例设计就是黑盒用例那一套)。
③各种入参验证(正常情况,异常情况包括输入参数个数不对,类型不对,可选/必选,还有考虑参数有互斥或关联的情况)。
④接口返回值各种验证(符合接口文档需求)
⑤了解接口实现逻辑,实现逻辑覆盖(语句/条件/分支/判定/…)
⑥接口能并发执行吗、安全吗,性能满足要求吗?
⑦采用工具或者自写代码来验证。
⑧发现问题跟功能测试一样,该报bug报bug,该跟踪状态的跟踪状态。

面试题:你平常做接口测试的过程中发现过哪些bug?

答案1:
面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历经过包装(不包装连面试机会都没有,没办法,为了生存,能理解)

常规错误,接口没实现,没按约定返回结果,边界值处理出错等。
输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理;
输入错误的参数、多输入、少输入参数,接口可能出现的错误;
安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等;
性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等;

答案2: 
常规bug:接口没有安装文档说明返回结果,输入异常类(空值、特殊字符),接口报错,没有返回合理的提示

如:商品价格 修改为-3
权限bug:测试修改服务包商品信息接口,接口文档要求只有超级管理员才有权限修改,我传入一个普通人员的人员ID 和角色编码,都能修改成功。

接口测试就是为了避免绕过前端测试,直接访问后端接口的BUG。

常问面试题:接口关联是如何处理的?

回答:
接口关联:一个接口依赖于多个接口,或多个接口依赖于一个接口(登录)。很多的接口测试都是登录之后获取鉴权码,然后其他所以的接口都需要这个鉴权码。

以实际做过的案例为主:登录接口-登录成功后,会返回token信息,其他需要登录才能查看的接口都需要这个token,并且是在请求头header里边。

处理办法:将登录成功后的token取出来保存为全局变量,哪里需要直接引用就可以。

jmeter 里边使用json提取器(正则也能实现),将token提取出来,别处直接引用:${token}
postman:用脚本的方式去实现,提取之后都要保存在全局变量。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命短暂而珍贵,不要被安逸束缚。拥抱挑战,超越平凡,用汗水浇灌梦想的花朵。坚持奋斗,永不放弃,唯有努力,才能书写属于自己的辉煌篇章!

不要停留在平庸的舒适区,放飞心灵的翅膀,追逐梦想的火焰。信念是前行的动力,勇气是闯过困境的力量。坚持奋斗,创造属于自己的传奇,成就不凡的人生!

在漆黑的夜里,梦想是指引的明灯;在跌倒的瞬间,坚持是再起的力量。别害怕失败,勇敢面对困难,因为只有奋斗,才能成就自己,创造不可思议的辉煌!

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

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

相关文章

flask路由添加参数

flask路由添加参数 在 Flask 中,可以通过两种方式在路由中添加参数:在路由字符串中直接指定参数,或者通过 request 对象从请求中获取参数。 在路由字符串中指定参数:可以将参数直接包含在路由字符串中。参数可以是字符串、整数、…

8-js高级-6(promise)

一 Promise 的理解和使用 1 Promise 是什么? 理解 抽象表达: Promise 是一门新的技术(ES6 规范)Promise 是 JS 中进行异步编程的新解决方案 (备注:旧方案是单纯使用回调函数) 具体表达: 从语法上来说: Promise 是一个构造函数从功能上来说: promise 对象用来…

vue3 实现排序按钮

需求背景解决效果index.vue 需求背景 需要实现一个复用性&#xff0c;是提供表单顺倒排序的按钮 解决效果 index.vue <!--/*** author: liuk* date: 2023/7/25* describe: 排序按钮*/--> <template><div class"sort-fn"><span :class"[…

记一次完整体系的攻防演练

准备工作&#xff1a; 1&#xff0c;在客户的内网环境部署一个Windows7系统&#xff0c;在这个系统上把finecms这个应用部署上去。把finecms安装之后&#xff0c;和客户沟通&#xff0c;把这个应用的地址映射到公网上去。 2&#xff0c;其次&#xff0c;没有条件的话&#xff0…

蓝桥杯上岸必背!!!(第七期 最短路算法)

第七期&#xff1a;最短路算法&#x1f525; &#x1f525; &#x1f525; 蓝桥杯热门考点模板总结来啦✨ 你绝绝绝绝绝绝对不能错过的常考最短路算法模板 &#x1f4a5; ❗️ ❗️ ❗️ 大家好 我是寸铁✨ 还没背熟模板的伙伴们背起来 &#x1f4aa; &#x1f4aa; &…

SpringBoot整合JavaMail

SpringBoot整合JavaMail 简单使用-发送简单邮件 介绍协议 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>添加配置 spring:mail:host: smtp.qq.co…

JVM系统优化实践(23):GC生产环境案例(6)

您好&#xff0c;这里是「码农镖局」CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 在互联网大厂中&#xff0c;对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中&#xff0c;需要对用户的访问日志做脱敏处理&#xff0c;也就是清洗掉姓名…

day41-Verify Account Ui(短信验证码小格子输入效果)

50 天学习 50 个项目 - HTMLCSS and JavaScript day41-Verify Account Ui&#xff08;短信验证码小格子输入效果&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&qu…

Shell脚本实战——对MySQL进行分库分表备份

一、查看当前数据库以及数据表 如何除去Datebase标题字样以及系统自带的数据库呢&#xff1f;可以使用以下命令 mysql -uroot -p#BenJM123 -e show databases -N | egrep -v "information_schema|mysql|performance_schema|sys"剩下的两个就是用户自己创建的表啦&am…

分享一个JSON插件

文章目录 知识回顾使用方法 知识回顾 看官们&#xff0c;最近在使用Flutter做网络相关的操作&#xff0c;主要是Http请求操作&#xff0c;请求结果基本上都是JSON格式&#xff0c;因此需要把JSON格式转换成Dart语法的数据模型。如果手动编写的话会占用时间而且容易出错。因此&…

UCDOS和WPS推动计算机领域的汉字化发展,中文编程该谁力扛大旗?

你还记得UCDOS吗&#xff1f; 从DOS时代过来的人&#xff0c;还知道UCDOS的&#xff0c;现在可能已经是中年人了&#xff01; 当时&#xff0c;鲍岳桥的UCDOS可以称得上是中国的国产操作系统。 在Windows还没来得及进入中国市场时&#xff0c;UCDOS可以说是走向了巅峰时刻&a…

【分库分表】分库分表常见问题和解决方案

文章目录 前言MySQL出现的性能问题Mysql常见的优化手段大数据表优化方案详解分库分表垂直拆分单库垂直分表多库垂直分表 水平拆分单库水平分表多库水平分表常见的水平分表策略哈希取模分片hash取模的问题一致性hash算法按照范围分片 分库分表实战根据uid进行水平分表如何实现全…

lambda表达式的进阶过程

文章目录 什么是Lambda表达式简述Lambda表达式的优点语法格式 函数式接口定义常见的函数式接口汇总 Lambda的演化过程lambda表达式简化 总结 什么是Lambda表达式 简述 Lambda表达式是JAVA8中提供的一种新的特性&#xff0c;是一个匿名函数方法。可以把Lambda表达式理解为一段…

关于uniapp中的日历组件uni-calendar中的小红点

关于uniapp中的日历组件uni-calendar中的小红点 如果你使用过uni-calendar组件&#xff0c;可能你觉得这个小红点有点碍眼&#xff0c;但是官方给定的日历组件uni-calendar中如果你想要在某一天上添加一些信息例如:价格&#xff0c;签到&#xff0c;打卡之类&#xff0c;只要标…

【PWN · ret2text | 伪rand()】[HDCTF 2023]pwnner

伪随机数以及ctypes库的初步接触 目录 前言 一、题目 二、解题思路 三、exp 总结 前言 一道简单的ret2text&#xff0c;加上一些伪随机的知识&#xff0c;对于本蒟蒻萌新来说&#xff0c;比较新&#xff0c;值得记录。 一、题目 栈溢出保护、PIE保护都没有开。反汇编后…

servlet银行储蓄管理系统java存取转账交易 jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 servlet银行储蓄管理系统 系统有1权限&#xff1a;管…

python与深度学习(四):ANN和fashion_mnist二

目录 1. 说明2. fashion_mnist的ANN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测…

Guitar Pro有没有免费的?

Guitar Pro是一款功能强大的吉他谱编辑软件&#xff0c;它为音乐创作者和乐手提供了极大的便利。但是&#xff0c;许多人对于Guitar Pro是否有免费版本&#xff0c;问题存在疑虑。下面我们就来详细介绍Guitar Pro有没有免费的内容吧&#xff01; 一、Guitar Pro有没有免费的 …

音视频——视频流H264编码格式

1 H264介绍 我们了解了什么是宏快&#xff0c;宏快作为压缩视频的最小的一部分&#xff0c;需要被组织&#xff0c;然后在网络之间做相互传输。 H264更深层次 —》宏块 太浅了 ​ 如果单纯的用宏快来发送数据是杂乱无章的&#xff0c;就好像在没有集装箱 出现之前&#xff0c;…

MultipartFile类型接收上传文件报出的UncheckedIOException以及删除tomcat临时文件失败源码探索

1、描述异常背景&#xff1a; 因为需要分析数据&#xff0c;待处理excel文件的数据行数太大&#xff0c;手动太累&#xff0c;花半小时写了一个定制的数据入库工具&#xff0c;改成了通用的&#xff0c;整个项目中的万级别数据都在工具上分析&#xff0c;写SQL进行分析&#x…