【02】interview-QA

1、知道多少种测试用例设计方法

测试用例设计方法主要分为黑盒测试白盒测试灰盒测试 三大类,具体方法超过20种,以下是系统化分类与详解。

python 复制代码
黑盒方法关注功能正确性
白盒方法关注代码质量
灰盒方法关注集成与交互
现代方法关注自动化与智能化

2、APP中按钮点击无响应,如何排查

3. 整个测试组大概多少人

python 复制代码
我们部门一共32人,分布在6条业务线里面,每条业务线里有对个产品,平均每组4~6个人。

4. 5个测试对应开发有多少人

python 复制代码
研发测试比,1:3~4

5. 5个测试做一个项目是怎么划分工作的,是否按照模块分工

python 复制代码
同一产品会按模块分工,比如准入域模块、交易域模块。有对应的主要测试负责人

6. 金融系统项目测试这块有什么关注的质量指标的要求

python 复制代码
1、页面性能:web页面性能优化中lcp指标目标80%,目前75% 
 1)不能达标的原因:依赖第三方sdkjs,sdk操作页面dom;LCP无法在1.8s以内(财富前端:孙奇)
 2)接口比较多,可能需要改逻辑,涉及服务端和产品
 3)小程序唤起页


2、后端接口响应时间:40ms

7. 离职的原因是什么

python 复制代码
一方面是架构调整,分配到了新的部门,

想想,在京东也5年了,索性就直接出来挑战一些不一样的东西

获得更多的成长

8. 现在找新的工作岗位,比较关注哪些方面

python 复制代码
1、工作能力适配,
2、有新的挑战,能获得更多的成长

9. 针对给定的APP小需求,讲述用例设计的主要思路

10. 如何理解需求中从本地缓存提取相关内容的这句话

python 复制代码
从设备本地的存储中获取已缓存的数据,而不是每次都从远程服务器请求。
这是一种性能优化和用户体验提升的技术方案。

对于测试设计时:
1、缓存策略:何时缓存、缓存多久、缓存什么
2、数据一致性:如何保证缓存与服务器数据同步
3、用户体验:缓存状态的可视化反馈(如"离线模式"提示)
4、安全考虑:敏感数据是否适合缓存、加密存储

11. 怎么去验证需求中从本地缓存提取的功能确实实现了

12. 登录天数位置无展示时,怎么排查哪个环节出现了问题

python 复制代码
1. 问题现象确认
确认问题范围:是所有用户都无展示,还是特定用户/设备?
复现条件:在什么网络环境、什么操作步骤下出现?
展示位置:具体是哪个页面/模块的登录天数显示异常?

2. 前端排查路径
2.1 数据获取层面
接口调用检查:确认登录天数接口是否正常调用
响应数据验证:检查接口返回的登录天数数据是否存在、格式是否正确
空值处理逻辑:前端对空值/异常值的处理是否合理
2.2 渲染逻辑层面
条件渲染判断:检查前端展示条件判断逻辑
数据绑定验证:确认数据是否正确绑定到UI组件
样式显示问题:排查CSS/样式是否导致内容被隐藏


3. 后端排查路径
3.1 数据计算逻辑
登录天数计算:验证后端登录天数计算算法是否正确
数据存储检查:确认用户登录记录是否正常存储
缓存机制:检查缓存数据是否过期或异常
3.2 接口服务层面
接口响应状态:确认接口返回状态码和响应体
权限验证:检查用户权限是否影响数据展示
业务规则:验证是否有业务规则限制展示

4. 数据流追踪
4.1 端到端追踪
日志分析:查看前后端相关日志,定位异常时间点
链路追踪:通过TraceID追踪完整请求链路
数据库查询:直接查询数据库验证原始数据
4.2 环境因素
版本兼容性:检查客户端版本与服务器版本兼容性
配置检查:验证相关功能开关配置是否正确
AB测试:确认是否在AB测试分组中

5. 快速定位建议
优先检查接口响应:使用工具直接调用登录天数接口,确认数据是否存在
查看控制台日志:前端控制台是否有错误信息
对比正常用户:对比正常展示用户与异常用户的差异点
检查最近变更:回顾近期是否有相关代码/配置变更

13. 应用使用过程中闪退了,怎么去定位和反馈

python 复制代码
1. 问题现象收集
1.1 基本信息记录
设备信息:手机型号、操作系统版本、系统版本号
应用信息:应用名称、版本号、安装来源
网络环境:Wi-Fi/移动网络、网络状态
时间信息:闪退发生的具体时间点
1.2 操作场景还原
操作路径:闪退前进行的操作步骤
触发条件:是否特定操作、特定页面、特定数据状态下发生
复现频率:是否每次都能复现,还是偶发性问题


2. 问题定位方法
2.1 用户端自查
查看日志:检查应用内是否有错误提示或日志记录
重启测试:重启应用后是否仍会闪退
清理缓存:清理应用缓存后重新测试
2.2 技术排查路径
崩溃日志收集:获取设备上的崩溃日志文件
堆栈信息分析:分析崩溃时的调用栈信息
内存监控:检查是否存在内存泄漏或OOM问题


3. 反馈信息整理
3.1 必备信息
问题描述:清晰描述闪退现象和发生场景
复现步骤:详细的操作步骤说明
设备信息:完整的设备型号和系统版本
应用版本:当前使用的应用版本号
3.2 辅助信息
截图/录屏:如有条件,提供闪退瞬间的截图或录屏
日志文件:提供相关的崩溃日志文件
网络状态:当时的网络环境信息

14、自动化测试中,A请求的返回值作为B请求的入参,该如何实现?

python 复制代码
在于正确提取数据、合理存储变量、确保时序正确
python 复制代码
1. 基于测试框架的变量传递
1.1 Postman/Newman方案
使用变量存储:在A请求响应后,通过pm.test()提取关键数据并赋值给环境变量
变量引用:在B请求中通过{{variable_name}}引用该变量

示例代码:
"javascript
复制
// A请求的Tests脚本中
pm.test("提取ID", function () {
    const response = pm.response.json();
    pm.environment.set("extracted_id", response.id);
});

// B请求的URL或Body中引用
// URL: https://api.example.com/items/{{extracted_id}}

1.2 JMeter方案
使用JSON Extractor:在A请求后添加JSON Extractor提取器
变量传递:提取的值自动存储为JMeter变量
引用方式:在B请求中使用${variable_name}引用


2. 基于编程语言的实现
2.1 Python + Requests方案
python
复制
import requests

# 执行A请求
response_a = requests.get('https://api.example.com/endpointA')
data_a = response_a.json()
item_id = data_a['id']

# 使用A请求结果作为B请求参数
response_b = requests.post('https://api.example.com/endpointB', 
                          json={'id': item_id, 'other_param': 'value'})

2.2 Java + RestAssured方案
java
复制
// 执行A请求并提取值
String itemId = given()
    .when()
    .get("/endpointA")
    .then()
    .extract()
    .path("id");

// 使用提取的值执行B请求
given()
    .body(Map.of("id", itemId, "param", "value"))
    .when()
    .post("/endpointB");

15、自动化测试中调用插入数据接口,如何避免数据库数据重复插入导致的混乱?

python 复制代码
1、优先选择唯一标识符方案:结合业务特点选择最合适的唯一性保障方式
2、建立数据清理机制:确保测试环境数据整洁
3、考虑测试并行化需求:设计支持并行测试的数据策略
4、文档化数据管理流程:明确测试数据的创建、使用、清理规范



1. 数据唯一性保障策略
1.1 使用唯一标识符
业务唯一键:利用业务逻辑中的唯一字段(如订单号、手机号、邮箱等)
时间戳+随机数:生成具有时间戳和随机数的唯一标识
UUID/GUID:使用系统生成的全局唯一标识符
1.2 数据清理机制
测试前清理:在测试开始前清空相关测试数据
事务回滚:使用数据库事务,测试结束后回滚
临时表隔离:创建临时表存放测试数据,测试后删除
2. 测试框架层面的解决方案
2.1 数据生成策略
动态数据生成:每次测试生成新的唯一数据
数据工厂模式:封装数据创建逻辑,确保唯一性
数据依赖管理:建立数据依赖关系,避免重复创建
2.2 测试执行控制
测试隔离:每个测试用例独立运行,互不干扰
数据生命周期管理:明确测试数据的创建、使用、清理流程
3. 数据库层面的解决方案
3.1 约束机制
唯一索引/约束:在数据库层面设置唯一性约束
幂等性设计:接口设计支持重复调用不产生副作用
3.2 数据清理策略
自动清理任务:定时清理测试环境数据
标记删除:为测试数据添加标记,测试后批量清理
4. 最佳实践建议
4.1 测试数据管理
数据预置:测试前预置基础数据,测试中只操作增量数据
数据复用策略:合理复用数据,避免重复创建
数据版本控制:对测试数据进行版本管理
4.2 测试执行优化
并行测试支持:确保并行测试时数据不冲突
失败重试机制:处理因数据冲突导致的测试失败

​​​​​​​16、左连接、右连接、内连接的结果有什么不同?请以A表3条数据、B表5条数据为例说明

内连接:只保留交集

  • 左连接:保留左表全集--现代SQL开发中,左连接的使用更为普遍。
  • 右连接:保留右表全集

17、A表直接连接B表(无连接关键字)相当于哪种连接?

python 复制代码
A表直接连接B表(无连接关键字)相当于内连接(INNER JOIN)

18、什么是主表和从表

python 复制代码
主表和从表通常在同一数据库内.

优势:
事务一致性:支持跨表事务操作
性能优化:减少网络延迟,提高查询效率

19、删除数据时,如何保证主表和从表的数据一致性

python 复制代码
保持主从表数据一致性的核心在于提前规划删除策略,根据业务需求选择:

1、级联删除:完全依赖关系,数据同生共死
2、设为NULL:保留从表记录,解除关联
3、限制删除:需要人工处理关联数据
4、软删除(修改状态,非物理删除):保留历史记录,便于追溯

方案1:创建从表的时候,就要建立数据一致性机制

方案2:事务性删除

相关推荐
小陈phd1 小时前
系统架构师学习笔记(二)——计算机体系结构之指令系统
笔记·学习·系统架构
吃杠碰小鸡2 小时前
前端 IndexedDB 完全指南
学习
问道飞鱼2 小时前
【大模型学习】LangGraph 深度解析:定义、功能、原理与实践
数据库·学习·大模型·工作流
烤麻辣烫3 小时前
I/O流 基础流
java·开发语言·学习·intellij-idea
云边散步3 小时前
godot2D游戏教程系列二(22)
笔记·学习·游戏
jincheng_3 小时前
软件设计师上午题|9模块极速背诵版
学习
Schengshuo3 小时前
Spring学习——新建module模块
java·学习·spring
2401_865721334 小时前
WEB 学习框架搭建
网络·学习·web
lifewange4 小时前
删除学习“叶平”老师课的sc表记录
学习
健康人猿4 小时前
SuperGrok Lite 是啥?值不值得升级?与旗舰版的差距有多大?
人工智能·学习·ai