接口测试-面试题

状态码

401 :缺token
403 : 没有权限访问
404:页面不存在
301 :重定向,a重定向到b,a的资源被永久删除。临时跳转到b页面
302:重定向,a重定向到b,a的资源不会删除。永久性的。
502:服务异常

unittest执行失败case重试

1、写装饰器函数,
缺点:每个case前都需要加个装饰器,且case重新执行不能执行setUp()和tearDown()
2、修改unittest框架代码,
在记录执行结果的部分,如果case执行失败,则继续执行;加计数器,记录执行多少次后不再执行;只记录case最后一次执行的结果。

接口自动化如何提高代码覆盖率的?

1、读代码,分析代码逻辑,如果是校验参数的,输入不同的接口参数;如果是处理MQ消息的代码,模拟发送MQ消息,覆盖代码;调用其他端接口的,使用mock。

如何提升自动化通过稳定性?

我先收集失败的case,分析case执行失败的原因,并给出解决方案。对于不好解决的问题,会议上和大家一起讨论。然后将问题和解决方案总结成文档,会议上和大家分享,得到大家的认可后把任务分给大家并约定问题解决时间。之后每周都跟进case优化进度,一个月后,我们的case通过率维持在了95%以上。
case失败的原因:
1、token冲突:多个自动化任务在不同的节点上执行,所有任务使用同一个账号,当有多个任务同时执行时有抢占token的现象,导致case执行失败。
解决方法:是让多个自动化任务在一个节点上执行,当有其他自动化任务要执行时必须先等待其他任务执行完。
2、平台bug:接口响应结果为null时,平台相关方法取不到数据,直接报错。
解决方法:修改平台bug
3、case传参问题:比如要获取某个学生的信息,传参中写了固定的学生id,但是如果数据库中没有学生id是,接口返回空列表,case校验失败。
解决方法:先准备测试数据,调其它接口或者往数据库里插入一条数据。
4、case取值问题:比如接口A要依赖与接口B的,但是接口B可能有时候没有值,case校验失败。
解决方法:用mock方法给A接口返回假数据。考虑case的多种场景,优化case。
5、case域名配置错误:线上域名和测试环境的不匹配。
解决方法:修改域名配置。
6、对平台断言规则不熟,选错断言规则
等等。

接口自动化稳定性提高后的收益

1、组员录制case操作规范化
2、自动化执行结果的可信度提高,用于提测前的,上线前的回归测试
3、推动任务前要得到大家的认可,不可强制推行。

接口自动化框架设计模型

1、分层设计模型
公共方法目录:common
测试用例类模块目录:testcases
测试数据目录:data
测试报告存放目录:reports
配置文件存放目录:conf
日志文件存放目录:logs
项目启动文件:run_test.py
2、数据驱动思想(ddt)
以用例数据来生成测试用例(数据驱动用例生成),有多少条用例数据,生成多少条测试用例
3、page object设计模型

接口测试框架描述

/testcase下定义不同业务的测试用例
/scripts下定义用例组执行方法
/apiform下存放接口请求参数,比如请求的uri、header、host等
/apirequest 下存放接口请求
/testdata下存放请求参数
/config下存放环境变量
/utils下存放公共的方法,比如时间转换、request请求、获取token、连接数据库、发送MQ等等。

开发接口自动化平台的目的

1、降低case编写学习难度
2、提高case录制速度

接口自动化平台的功能描述

1、主要有总览、测试用例管理、任务管理和域名管理三部分。
(1)总览
统计平台case总数、case增量等。
(2)用例管理
新建、编辑、查看、删除、搜索、复制、冒烟等功能
新建用例 通过拖拽组件的方式组合测试场景,也可以自定义组件。可以用的组件如HTTP、DB、assert\mq\redis\轮询等。
(3)任务管理
新建、编辑、查看、删除、搜索、执行等
(4)组件管理
组件是编写case的最基本单位,一个组件的调用是case中的一个步骤
组件和程序语言中的函数类似,可以有入参,也可以有出参
组件分系统组件和自定义组件
自定义组件、编辑、删除、搜索等
(5)域名管理
新增、查询

2、我做的功能
发送请求、轮询组件、任务列表部分功能、域名管理
前端:用例列表、域名配置、任务列表、新建、搜索、分析等

平台的特点

1、变量
定义变量:
用来存储运行过程中产生的数据,以便后续步骤中调用
接口响应中变量的值通过jsonpath定位
使用变量:
使用{value}的方式使用
2、项目准入
和jira编号关联,关联项目提测时会执行项目准入case,用于统计新增代码覆盖率
3、工程准入
指服务提测时必须执行通过的case
4、动态参数,生成时间
当前时间戳:${T}
当前时间戳,s级别 : T,s指定当前时间格式:{T, s} 指定当前时间格式:T,s{T, %Y-%m-%d %H%M%S}
当前时间往前推25小时 : KaTeX parse error: Expected '}', got 'EOF' at end of input: … %H%M%S} 当天20点:{T:20:00:00}
指定时间:T:2019−06−1121:05:51,用变量指定时间:{T:2019-06-11 21:05:51,%Y-%m-%d %H%M%S } 用变量指定时间:T:2019061121:05:51,{T:{date_time}, %Y-%m-%d %H%M%S
}
5、动态参数,支持长度计算
新增一种长度计算的动态参数,用于计算变量的长度。
这个参数可用于:1、数据量对比,2、校验是否存在。
格式定义:L:varname,[vartype],如:{L:{var_name},[var_type]},如:L:varname[vartype]{L:{insert_data},list},${L:{insert_data},dict}等。
L表示长度动态参数,{var_name}是现有的变量定义格式,var_type为可选参数,指定{var_name}变量的类型。
返回值:整数(正常计算)或报错(空/指定变量类型不符)。
6、动态参数,支持随机数
7、定时任务
8、支持无人机
9、复制case
10、支持冒烟

开发接口自动化平台的过程中遇到了什么问题

测试环境、线上环境和测试环境域名相同,怎么替换

使用ip请求

接口自动化平台待优化的

1、公用token的问题。

多个自动化任务执行遇到性能瓶颈怎么办?

1、查找性能瓶颈的原因并解决。
2、在多个机器上执行
3、搭建分布式执行环境

如何搭建分布式环境

### 接口测试常见面试题及解答 #### 什么是接口测试接口测试是指针对程序内部同模块之间交互的数据交换过程进行的测试工作,旨在验证各个组件之间的通信是否正确无误[^1]。 #### 接口测试应覆盖哪些方面? - **接口功能测试**:检验接口能否在预期条件下正常运作以及面对异常状况时的表现; - **数据传输和格式验证**:确认请求与响应消息体内的结构化信息遵循既定标准; - **错误处理和异常流程测试**:评估系统对于非法输入或意外事件作出适当反应的能力; - **安全性和授权验证**:确保只有合法用户能够访问特定资源并防止潜在的安全漏洞被利用; - **性能和负载测试**:测量服务端承受高并发量下的稳定性和效率[^2]。 #### 如何定义接口契约测试接口契约测试指的是基于预先设定的服务级别协议(SLA),对Web Service或其他形式远程调用所提供的方法签名、参数列表及其含义等方面实施严格的合规性审查。这有助于保证客户端和服务端双方都严格遵守共同认可的技术合同条款。 #### 当遇到接口异常时怎样定位原因? 一旦检测到接口出现问题,则需依照以下思路排查: - 检查日志文件中是否有任何提示性的报错记录; - 使用调试工具捕获完整的HTTP请求/响应链路详情; - 验证传入参数是否符合文档说明的要求范围; - 尝试简化场景重现问题以便更精准地锁定根源所在; - 如果可能的话,对比其他环境(比如开发版)下相同操作的结果差异来辅助判断[^3]。 #### 描述一次完整的项目测试周期内接口测试的工作流。 整个项目的生命周期里,接口测试通常贯穿始终,在需求阶段就要参与到讨论当中了解业务逻辑和技术选型;随后配合团队成员一起规划详细的实施方案;接着着手准备自动化脚本或者手动执行必要的探索性质案例集;最后持续监控生产环境中API表现直至版本迭代结束为止。具体步骤如下所示: ```plaintext 参与需求评审 -> 制订测试策略 -> 编写&审核测试方案 -> 开展预演 -> 正式开展全面深入细致的质量保障活动 -> 记录缺陷项 -> 追踪修复进度 -> 执行回归检查 -> 出具总结报告 -> 上线后跟踪维护 ``` 上述描述概括了一套较为通用的做法[^4]。 #### API测试相较于传统UI层面的优势体现在哪里? 相比于图形界面驱动的方式而言,API级别的探查具有明显优势——可以直接触及底层架构而必等待前端页面加载完成即可迅速切入主题展开作业;另外还能绕过繁琐的人机互动环节从而大大提高了工作效率;最重要的是可以提前暴露隐藏较深的功能隐患,为后续集成提供坚实基础[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值