测开高频面试题集锦 | 项目测试 接口测试自动化
项目测试&流程
一、完整的项目测试中从需求评审到项目上线 你的主要职责和关键输出是什么?
- 考察全流程测试管控能力,被动执行到主动规划+风险预判+解决的问题
- 回答参考:
以一次项目迭代为例,通常产品类的需求涉及到前后端和客户端多端修改,我作为测试负责人,全流程职责主要分以下几个阶段,核心目标是 【保质量、提效率】- 一是需求评审阶段,不仅明确核心功能、排期和划分测试范围,还会从QA角度梳理出需求层面的风险点,评估需求的可测性并推动产品补齐异常场景或不合理的需求定义,提前规避后期返工。
- 二是方案设计阶段,针对多端联动逻辑复杂的问题,我会先同研发对齐技术实现和修改范围,针对抽象逻辑画出逻辑流程图,提前发现逻辑设计风险点的同时将端的核心逻辑同步到其他涉及端和QA 拉齐认知。
- 三是用例设计阶段,会针对不同需求特性针对性设计场景覆盖功能,同时分模块细分功能单元以达到最大程度用例覆盖。设计含核心功能、交互接口用例
- 四是测试执行阶段,用例评审完之后,会将用例划分给项目组QA同学,针对优先级进行用例执行;同时bug分优先级管理,精准定位问题推动研发及时解决;把控修改方案和回归范围确认;同步测试进度和风险卡点问题确认
- 五是项目收尾阶段,上线前进行发布策略评审,同时检查各项checklist比如用例执行完成度、bug修复清零、代码review、以及组织二次回归
- 六是项目上线和上线后,上线之后及时将UI回归用例、以及核心接口回归用例梳理,集成到自动化平台;
- 七是项目上线后针对本次项目设计的技术点或项目流程问题进行复盘。
二、保证用例覆盖度?
首先肯定不是100%覆盖,而是做到精准覆盖,按照需求/方案评审->用例设计->执行补全->回溯验证
①需求和方案:思维导图->流程图,拆分模块不丢业务死角–>标注 必测/可选优先级 和风险点
②用例设计:等价类、边界值、场景、异常 覆盖场景和边界
③执行时:跟踪需求或方案或bug修复 动态补齐用例。
④回溯:根据bug-用例映射表,比如线上的一些问题复盘出的测试点,后续同类型需求补充用例覆盖场景。
三、如何评估测试质量/项目如何确认可发布了?
测试质量衡量?或者如何保证一个版本可以发布了:
- 核心量化指标
①bug验证程度分布:P0 P1 阻断或核心功能类的bug100%修复 P2/P3 影响小或优化类 可评估后期修复。
②用例执行率和通过率:核心用例执行率100% 通过率≥95%
③问题逃逸率:上线后30天内发现问题/测试阶段发现的问题小于5%
④测试链路完成性:需求-用例-执行-bug-上线,无节点缺失,用例覆盖全面,bug跟踪闭环。—输出迭代报告。 - 业务风险
站在用户的视角评估未测场景的影响范围。–> 风险是否可控
四、微信发红包的测试用例(一面会有一道用例设计题)
用例结构组成是 编号、优先级、模块、功能、测试点、前置条件、测试步骤、预期结果
单人发红包场景:
P0级别有:正常单人发红包
群聊红包场景:
边界值场景:
异常场景:
兼容性:
性能: 高峰期发红包响应时间、群红包并发领取(100人同时领取)
安全:抓包篡改红包金额、
数据一致性:发红包余额扣减、领红包金额增加、预期自动退款金额恢复
接口测试
一、接口测试过程中主要的关注点有什么。
- 单接口:
- ①基础合法性校验参数、响应状态码、格式
- ②业务逻辑正确性:返回数据是否符合业务规则,比如未续费用户&续费用户返回
- ③异常场景:多参、少参、参数越界、权限问题
- 多接口:看链路逻辑正确
- ①依赖正确性:比如前接口的输出是否能正确作为后接口的输入
- ②数据一致性:多接口调用后数据是否同步正确。如提交配置接口和查询接口,查询到的配置应该提交的一致
- ③并发场景:多接口同时调用是否冲突(如两个用户同时调用创建团队接口生成同一接口,会不会出现生成相同pin—创建唯一索引)
- 安全:敏感数据是否加密,比如密码请求体里是否铭文
- 性能:接口响应时间是否满足业务要求
二、【排查问题相关】
比如:微信余额现在展示负数 你怎么定位和排查思路
核心:按照前端到后端的链路排查。
①先排查客户端显示问题,看客户端日志显示余额返回就是负数,那么客户端显示没问题
②接口层(看数据传输):抓包看接口请求参数 和 响应,看接口参数是否当前用户、参数传入是否正确;如果都正确就看响应
③后端服务(看逻辑处理):联系研发排查余额计算的逻辑和日志,看是否有异常扣减(比如消费时没做余额判断直接扣减)、重复扣减(比如接口重试了多次每次都扣了)
④数据库(看数据存储):看余额表的字段值是否为负数,同时看该字段的更新记录(看是消费、退款还是系统调整确认哪个操作导致的);确认数据库是否有不能为负数的约束
三、如果就是后端的问题,你觉得导致这个问题的原因有哪些。
结合金额类业务逻辑和数据一致性,原因可能有:
①余额扣减逻辑缺失校验:比如没有加余额判断
②事务控制不当:多步操作没加事务(比如消费-扣款-订单,但订单生成失败,扣减余额没有回滚)
③并发处理:多线程同时扣减余额,没加锁,或用了乐观锁但没处理冲突
④数据同步异常:跨服务调用数据同步问题,比如退款成功但是余额更新接口失败了 没成功增加余额
⑤边界值处理问题:比如余额为0,还触发扣余额操作,代码没处理0-扣费金额的场景;或者余额计算用了int类型,超出范围后溢出成负数(少见)
自动化
一、自动化是怎么做的,以及层级结构设计
基础层:封装通用能力,像请求封装、日志封装、配置封装、初始化封装
数据层:存测试数据
业务逻辑层:UI自动化的话就按模块写业务流程封装好 给用例层调用
用例层:按模块正向反向写测试函数 以及参数化
执行层:使用pytest管理执行用例,生成报告等
二、对什么样的功能进行自动化?以及断言规则设计
核心流程类:每期迭代梳理出核心流程的回归用例做UI自动化
接口交互类:每期迭代将主流程接口梳理出回归用例做接口自动化
断言设计:
接口类:①状态码 ②数据完整性 断言响应数据 ③业务逻辑断言,比如某接口是要返回上传地址还是上传秒传信息
功能类:①结果断言,比如安装功能,我们要校验的点是文件释放正确性、注册表写入正确性、关键文件版本信息 ②状态断言,比如终端部署好之后 后台终端列表接口是否正确返回该终端信息
三、触发的节点和执行的流程
①定时触发:特殊业务自动化脚本每天凌晨自动执行,早上看报告
②事件触发:版本上线前手动点击执行
③手动触发:部分接口可以跑特定的测试用例文件。
四、怎么保证自动化的稳定性
主要从 环境、数据、用例 几个方面提高稳定性
像我维护的UI自动化用例:
①环境:回归使用的环境是指定团队指定分组下,避免手工测试影响执行结果校验
②数据可控:定期数据清理,每个用例执行成功后自动删除终端信息防止后台数量超限
③用例设计解耦:一是测试数据、公共方法封装、业务逻辑、用例分开设置,这样在元素变化不影响用例和业务逻辑只需要修改元素定位数据即可。每个用例独立允许,不依赖其他用例结果 像安装用例校验就是一条单独的用例 后面功能用例不依赖安装结果
④异常捕获:脚本加捕获各种异常像超时、接口报错等 必要时可设置等待时间、重试次数等 同时也要记录详细日志方便定位。
附题(具有参考性的题目):
1、自我介绍
2、介绍一个项目
3、项目整个流程你都做了什么事情
4、你为什么要和研发对齐修改点?你觉得有什么作用?
5、除了和研发对修改点,你还在技术评审环节做什么事情了呢?
6、你觉得用例评审对研发有什么作用呢?
7、作为项目负责人哪些环节有风险?怎么做的?
8、业务中有难点的地方是什么?
9、如果现在有个需求,需要到排期,你怎么办?
10、有一个紧急需求插过来了你怎么办啊?
11、自动化都做什么?接口自动化主要做什么角色?
12、购物车下单 测试用例,说测试点
13、一个问题 你怎么排查?如果就是后端的问题你怎么办
14、AI技术提效应用在什么方面了呢?说下AI+测试用例的思路
15、统计字符串中某字符出现的次数?不用counter你自己写个算法
16、离职原因
1、自我介绍
2、项目流程和主要做什么
3、如果需求没有文档,你又不熟,你怎么做
4、如果你在一个排期中,又给你插了几个紧急的小需求,你怎么做—这个我当时答的不太好
5、APP端IOS端测试需要关注什么
6、自动化做了些什么
7、接口测试都做什么
接口加密、除了参数加密 还有md5加密巴拉巴拉—这个我忘了当时
8、python能力掌握到什么程度
python异常相关的题 你回答下
二、聊聊最近做的项目、做的内容;全流程测试框架是怎么样的、是怎么适配到业务中的
针对不同业务,引入不同的需求侧重点和用例设计 以及使用不同的测试工具定位和模拟测试
三、自动化落地执行了的是吗
对 捆包自动化平台将人工错误率降低为0,新成员入手成本明显降低,同时规范组内的配合流程;
回归自动化用例将原来人工回归2天执行 降低到 4H内完成回归和问题定位。
四、自动化是怎么做的,以及层级结构设计
基础层:封装通用能力,像请求封装、日志封装、配置封装、初始化封装
数据层:存测试数据
业务逻辑层:UI自动化的话就按模块写业务流程封装好 给用例层调用
用例层:按模块正向反向写测试函数 以及参数化
执行层:使用pytest管理执行用例,生成报告等
五、对什么样的功能进行校验、以及断言规则设计
核心流程类:每期迭代梳理出核心流程的回归用例做UI自动化
接口交互类:每期迭代将主流程接口梳理出回归用例做接口自动化
断言设计:
接口类:①状态码 ②数据完整性 断言响应数据 ③业务逻辑断言,比如某接口是要返回上传地址还是上传秒传信息
功能类:①结果断言,比如安装功能,我们要校验的点是文件释放正确性、注册表写入正确性、关键文件版本信息 ②状态断言,比如终端部署好之后 后台终端列表接口是否正确返回该终端信息
六、触发的节点和执行的流程
①定时触发:特殊业务自动化脚本每天凌晨自动执行,早上看报告
②事件触发:版本上线前手动点击执行
③手动触发:部分接口可以跑特定的测试用例文件。
七、怎么保证自动化的稳定性
主要从 环境、数据、用例 几个方面提高稳定性
像我维护的UI自动化用例:
①环境:回归使用的环境是指定团队指定分组下,避免手工测试影响执行结果校验
②数据可控:定期数据清理,每个用例执行成功后自动删除终端信息防止后台数量超限
③用例设计解耦:一是测试数据、公共方法封装、业务逻辑、用例分开设置,这样在元素变化不影响用例和业务逻辑只需要修改元素定位数据即可。每个用例独立允许,不依赖其他用例结果 像安装用例校验就是一条单独的用例 后面功能用例不依赖安装结果
④异常捕获:脚本加捕获各种异常像超时、接口报错等 必要时可设置等待时间、重试次数等 同时也要记录详细日志方便定位。
八、导致业务慢查询的主要原因
①SQL语句问题:比如有冗余字段select *、比如没加where条件
②索引缺失、无效、过期:比如高频查询字段没有加索引、比如有索引的字段使用了or、或者表字段更新后索引没有及时维护
③数据量过大:比如没有做数据归档,像历史数据没有分表查询,那查近三月份的数据就
④数据库锁冲突:多线程同时修改同一数据,导致查询等待锁释放,建议行锁替代表锁,减少冲突。
⑤缓存未命中:高频查询结果没有做缓存,每次都查库,建议用redis缓存。
九、接口测试过程中主要的关注点有什么。
单接口:①基础合法性校验参数、响应状态码、格式②业务逻辑正确性:返回数据是否符合业务规则,比如未续费用户&续费用户返回③异常场景:多参、少参、参数越界、权限问题
多接口:看链路逻辑正确①依赖正确性:比如前接口的输出是否能正确作为后接口的输入 ②数据一致性:多接口调用后数据是否同步正确。如提交配置接口和查询接口,查询到的配置应该提交的一致
③并发场景:多接口同时调用是否冲突(如两个用户同时调用创建团队接口生成同一接口,会不会出现生成相同pin—创建唯一索引)
安全:敏感数据是否加密,比如密码请求体里是否铭文
性能:接口响应时间是否满足业务要求
十、微信余额现在展示负数 你怎么定位和排查思路
按照前端到后端的链路排查。
①先排查客户端显示问题,看客户端日志显示余额返回就是负数,那么客户端显示没问题
②接口层(看数据传输):抓包看接口请求参数 和 响应,看接口参数是否当前用户、参数传入是否正确;如果都正确就看响应
③后端服务(看逻辑处理):联系研发排查余额计算的逻辑和日志,看是否有异常扣减(比如消费时没做余额判断直接扣减)、重复扣减(比如接口重试了多次每次都扣了)
④数据库(看数据存储):看余额表的字段值是否为负数,同时看该字段的更新记录(看是消费、退款还是系统调整确认哪个操作导致的);确认数据库是否有不能为负数的约束
十一、如果就是后端的问题,你觉得导致这个问题的原因有哪些。
结合金额类业务逻辑和数据一致性,原因可能有:
①余额扣减逻辑缺失校验:比如没有加余额判断
②事务控制不当:多步操作没加事务(比如消费-扣款-订单,但订单生成失败,扣减余额没有回滚)
③并发处理:多线程同时扣减余额,没加锁,或用了乐观锁但没处理冲突
④数据同步异常:跨服务调用数据同步问题,比如退款成功但是余额更新接口失败了 没成功增加余额
⑤边界值处理问题:比如余额为0,还触发扣余额操作,代码没处理0-扣费金额的场景;或者余额计算用了int类型,超出范围后溢出成负数(少见)
十二、微信发红包的测试用例
十三、SQL
– 找出总成绩前十的学生(包含学号、姓名、总成绩)
SELECT
sid AS 学号,
sname AS 姓名,
SUM(score) AS 总成绩 – 计算每个学生的总成绩
FROM student
GROUP BY sid, sname – 按学生分组(学号唯一标识学生,姓名同步分组确保对应)
ORDER BY 总成绩 DESC – 按总成绩从高到低排序
LIMIT 10; – 取前10名
INNOdb数据库引擎:
事务:支持
行锁:支持
外键约束:支持,支持链表查询
全文索引:不支持
表空间大小:较大,是MYISAM的两倍
十四、代码
“”"
一个整型数组里除了两个数字只出现一次,
其他的数字都出现了两次。
请写程序找出这两个只出现一次的数字,如[1,2,3,3,2,9]返回[1,9]
“”"
from collections import Counter
def find_num(list_num):
“”"
:param list_num:
:return:
“”"
# for key,item in enumerate(list_num):
#
# print(key,item)
num_count = Counter(list_num)
print(“type”,num_count)
list_n = []
for key , num in num_count.items():
if num ==1:
list_n.append(key)
return list_n
4、完整的项目测试中从需求评审到项目上线 你的主要职责和关键输出是什么
6、做了什么自动化?这个自动化带来了什么价值
6.1 自动化是基于现有流程还是自己实现的
考察从0到1设计落地技术平台的全链路能力。聚焦核心业务逻辑设计合理性、技术栈选择的底层逻辑、关键技术难点的攻坚能力。
6.2 自动化的逻辑是什么,涉及到什么技术栈
6.3核心技术难点?
8、AI的探索怎么实现的?思路是什么
AI+应用的逻辑为:数据标准化->特征提取->Agent调试->场景化落地
9、会写脚本是吧?都写什么呢?
数据层 存储模块的测试数据 比如接口参数、预期结果
公共方法层 封装高频操作,接口封装get/post请求加请求头加密、超时重试功能 UI基于PO设计模式,将页面元素定位和操作封装到Page类(如loginpage)
通用工具比如截图、报告、浏览器驱动初始化等
用例层:按业务模块拆分(比如idass登录、数据云操作)用pytest或unittest管理用例按优先级执行;断言使用python自带的assert或封装号的业务断言校验接口响应等
异常处理 比如失败重试用于pytest-rerunfailures查看
10、自动化提升多少效率?
11、python技术栈都有哪些 怎么实现这些功能
12、功能和自动化比例多少
13、从0到1搭框架可以不
14、离职原因是啥
15、中间3月份空档期是什么。
16、25岁是吧 3年经验
17、工资是多少
1、自我介绍
2、介绍过往负责项目的架构
3、业务测试流程,负责什么部分
- 产品需求
- 技术需求
4、组内人员
5、win端和安卓端测试区别
6、安卓和ios区别
7、adb命令
8、linux shell命令,查关键字日志
9、提效工作,是自己独立做的吗?怎么做的?功能实现
10、工作中遇到的挑战
11、自动化,接口自动化\UI自动化
12、压测怎么做?
13、设计作业帮拍照搜题的测试用例
功能:正常、异常
性能:响应时间 、 耗电量
兼容:设备;系统覆盖安卓、iOS、鸿蒙;网络4G\5G\WIFI
异常:权限异常、存储空间、格式、网络异常
易用:
安全:用户隐私问题;法律法规问题
14、针对这个功能,上线后要考虑什么风险
上线后从以下几个方面考虑风险问题:
技术(并发、准确率、兼容性):1、关注高峰期下功能使用情况 2、功能成功率 3、新系统适配方面
业务(错误率、版权):1、是否涉及企业/用户隐私 2、是否符合业务
合规(隐私、法律法规):
用户体验(弱网、耗电情况、系统功能优先级):
15、代码题:
给定一个0到n的整数数组,找到其中缺失的数字
要求先说思路再写答案
运行、排错
