leeyorke入职手册

问题复盘

思考框架

01 | 测试必须先明白什么

严禁一上来就什么也不做就开始写测试用例,或者直接上手测试。测试之前必须先明白:

  • 缺陷一定存在。默认系统有问题。

  • 测试无法穷举。承认测试不可能穷举,所以核心问题变成:哪里最可能出问题?出了问题代价最高?这就需要优先把资源砸在破坏力最大的 20% 核心风险(需要思考该产品的高风险场景)上。

  • 杀虫剂悖论。测试用例的效果会随着时间的推移而减弱,需要不断更新和优化测试用例。

02 | 测试点通用梳理框架

事物都有共性,产品也不例外,不管你是测试芯片、测试软件、测试电梯、测试杯子、测试手机,测试用例的编写框架都会有共性。测试用例的编写框架如下:

产品测试框架
│
├── Level 1:测试对象(测什么)
│   │
│   ├── 功能(Function)
│   │   ├── 作用:验证产品是否实现需求规定的能力
│   │   ├── 关注:
│   │   │   ├── 功能是否存在
│   │   │   ├── 功能是否正确
│   │   │   └── 功能是否符合业务规则
│   │
│   ├── 数据(Data)
│   │   ├── 作用:验证数据生命周期是否正确
│   │   ├── 关注:
│   │   │   ├── 输入
│   │   │   ├── 存储
│   │   │   ├── 传输
│   │   │   ├── 计算
│   │   │   └── 输出
│   │
│   ├── 状态(State)
│   │   ├── 作用:验证系统状态及状态转换是否正确
│   │   ├── 关注:
│   │   │   ├── 状态创建
│   │   │   ├── 状态迁移
│   │   │   ├── 状态终止
│   │   │   └── 非法状态转换
│   │
│   ├── 接口(Interface)
│   │   ├── 作用:验证系统与外部系统的交互
│   │   ├── 关注:
│   │   │   ├── API
│   │   │   ├── 协议
│   │   │   ├── 消息格式
│   │   │   └── 错误处理
│   │
│   ├── 用户(User)
│   │   ├── 作用:验证不同用户角色下的行为
│   │   ├── 关注:
│   │   │   ├── 权限
│   │   │   ├── 操作路径
│   │   │   ├── 用户体验
│   │   │   └── 误操作
│   │
│   ├── 环境(Environment)
│   │   ├── 作用:验证不同运行环境下的行为
│   │   ├── 关注:
│   │   │   ├── 操作系统
│   │   │   ├── 浏览器
│   │   │   ├── 网络
│   │   │   ├── 硬件
│   │   │   └── 第三方依赖
│   │
│   └── 生命周期(Lifecycle)
│       ├── 作用:验证产品全生命周期行为
│       ├── 关注:
│       │   ├── 安装
│       │   ├── 配置
│       │   ├── 升级
│       │   ├── 运行
│       │   ├── 恢复
│       │   └── 卸载
│
├── Level 2:质量属性(测得好不好)
│   │
│   ├── 功能性(Functional Suitability)
│   │   ├── 作用:验证功能是否满足需求
│   │   ├── 完整性
│   │   ├── 正确性
│   │   └── 适当性
│   │
│   ├── 性能(Performance Efficiency)
│   │   ├── 作用:验证资源消耗与处理效率
│   │   ├── 响应时间
│   │   ├── 吞吐量
│   │   ├── 并发能力
│   │   ├── 资源利用率
│   │   └── 容量上限
│   │
│   ├── 可靠性(Reliability)
│   │   ├── 作用:验证持续稳定运行能力
│   │   ├── 稳定性
│   │   ├── 容错性
│   │   ├── 可恢复性
│   │   └── 可用性
│   │
│   ├── 安全性(Security)
│   │   ├── 作用:验证资产保护能力
│   │   ├── 认证
│   │   ├── 授权
│   │   ├── 保密性
│   │   ├── 完整性
│   │   ├── 审计
│   │   └── 抗攻击能力
│   │
│   ├── 兼容性(Compatibility)
│   │   ├── 作用:验证与其他系统共存能力
│   │   ├── 互操作性
│   │   ├── 协议兼容
│   │   ├── 数据兼容
│   │   └── 版本兼容
│   │
│   ├── 易用性(Usability)
│   │   ├── 作用:验证用户使用成本
│   │   ├── 可学习性
│   │   ├── 可操作性
│   │   ├── 防误操作
│   │   ├── 可发现性
│   │   └── 无障碍能力
│   │
│   ├── 可维护性(Maintainability)
│   │   ├── 作用:验证系统后续修改成本
│   │   ├── 模块化
│   │   ├── 可修改性
│   │   ├── 可测试性
│   │   └── 可观测性
│   │
│   ├── 可移植性(Portability)
│   │   ├── 作用:验证迁移到新环境的难度
│   │   ├── 可安装性
│   │   ├── 可适配性
│   │   └── 可替换性
│   │
│   └── 物理安全(Physical Safety)
│       ├── 作用:验证产品不会伤害人和环境
│       ├── 电气安全
│       ├── 机械安全
│       ├── 热安全
│       ├── 环境适应性
│       └── 法规符合性
│
├── Level 3:失效模式(系统怎么坏)
│   │
│   ├── 缺失(Missing)
│   │   ├── 作用:发现应该有却不存在的行为
│   │   └── 例:订单未生成日志
│   │
│   ├── 错误(Incorrect)
│   │   ├── 作用:发现结果错误
│   │   └── 例:金额计算错误
│   │
│   ├── 超限(Out of Range)
│   │   ├── 作用:发现边界处理问题
│   │   └── 例:年龄允许999岁
│   │
│   ├── 延迟(Delay)
│   │   ├── 作用:发现处理超时问题
│   │   └── 例:支付结果30秒后返回
│   │
│   ├── 中断(Interruption)
│   │   ├── 作用:发现流程被异常终止
│   │   └── 例:升级过程断电
│   │
│   ├── 重复(Duplicate)
│   │   ├── 作用:发现重复执行问题
│   │   └── 例:重复扣款
│   │
│   ├── 顺序错误(Wrong Sequence)
│   │   ├── 作用:发现执行顺序问题
│   │   └── 例:未登录直接支付
│   │
│   ├── 数据损坏(Corruption)
│   │   ├── 作用:发现数据被篡改或破坏
│   │   └── 例:数据库记录异常
│   │
│   ├── 权限失控(Unauthorized Access)
│   │   ├── 作用:发现越权访问问题
│   │   └── 例:普通用户删除管理员数据
│   │
│   ├── 资源耗尽(Resource Exhaustion)
│   │   ├── 作用:发现资源不足问题
│   │   └── 例:内存泄漏
│   │
│   └── 状态不一致(Inconsistent State)
│       ├── 作用:发现多模块状态不同步问题
│       └── 例:订单已支付但库存未扣减
│
├── Level 4:覆盖维度(从哪些角度测)
│   │
│   ├── 正常路径
│   │   └── 作用:验证用户最常见操作流程
│   │
│   ├── 异常路径
│   │   └── 作用:验证错误输入和异常场景
│   │
│   ├── 边界值
│   │   └── 作用:发现临界点缺陷
│   │
│   ├── 等价类
│   │   └── 作用:减少重复测试
│   │
│   ├── 状态转换
│   │   └── 作用:验证状态迁移逻辑
│   │
│   ├── 时序
│   │   └── 作用:验证事件发生顺序
│   │
│   ├── 并发
│   │   └── 作用:验证多线程多用户场景
│   │
│   ├── 容量
│   │   └── 作用:验证数据量增长后的行为
│   │
│   ├── 恢复
│   │   └── 作用:验证故障恢复能力
│   │
│   ├── 升级
│   │   └── 作用:验证版本升级过程
│   │
│   ├── 降级
│   │   └── 作用:验证服务降级策略
│   │
│   └── 回滚
│       └── 作用:验证失败后的恢复机制
│
└── Level 5:风险优先级(先测什么)
    │
    ├── 致命风险(Critical)
    │   ├── 作用:优先保证不会造成重大损失
    │   └── 例:资金错误、生命安全事故
    │
    ├── 高风险(High)
    │   ├── 作用:优先保证核心业务正常
    │   └── 例:支付失败、数据丢失
    │
    ├── 中风险(Medium)
    │   ├── 作用:保证主要体验质量
    │   └── 例:部分功能异常
    │
    └── 低风险(Low)
        ├── 作用:优化体验和细节
        └── 例:UI显示问题

03 | 测试时间分配法则

  • 花80%的时间在20%的核心功能上,花20%的时间在80%的非核心功能上。

  • 根据《人月神话》的时间分配黄金法则:1/3计划, 1/6编码, 1/4软件测试与系统早期测试, 1/4完整系统测试。

在软件设计阶段,参考ISO/IEC 25010:2023标准可以帮助开发者明确质量目标并制定相应的设计策略。例如:

  • 功能适用性设计:确保软件功能能够满足用户需求,考虑功能完整性和正确性,避免功能遗漏和误差。

  • 性能效率设计:优化算法和数据结构,提高软件的性能和资源利用效率。

  • 兼容性设计:确保软件能够与其他系统和产品共存和互操作,避免兼容性问题。

  • 可用性设计:优化用户界面和交互流程,提升软件的易用性和用户满意度。

  • 可靠性设计:设计冗余和容错机制,提高软件的稳定性和可恢复性。

  • 安全性设计:确保数据和信息的安全,防止未授权访问和数据泄露。

  • 维护性设计:采用模块化设计,提升代码的可读性和可维护性,减少变更和测试成本。

  • 可移植性设计:确保软件能够在不同平台和环境中运行,考虑系统依赖和安装便利性。

04 | 产品通用测试框架

产品通用测试框架
│
├── 1. 意图验证              ← 对应「意图」维度
│   ├── 1.1 需求覆盖度
│   │   ├── 核心使用场景是否全部实现
│   │   └── 目标用户群的需求是否被满足
│   ├── 1.2 价值实现
│   │   ├── 产品是否解决了它声称解决的问题
│   │   └── 用户能否通过它达成预期目标
│   └── 1.3 规格符合性
│       ├── 实物与设计规格/需求文档的一致性
│       └── 所有声明特性均可验证
│
├── 2. 载体完整性            ← 对应「载体」维度
│   ├── 2.1 材质与结构
│   │   ├── 材料规格符合性(成分、等级)
│   │   ├── 结构完整性(无裂缝、变形、缺损)
│   │   └── 制造精度(尺寸公差、装配间隙)
│   ├── 2.2 外观质量
│   │   ├── 表面缺陷(划痕、气泡、色差、毛刺)
│   │   └── 装配质量(错位、松动、缝隙均匀性)
│   └── 2.3 标识与随附文件
│       ├── 铭牌、警告标识是否清晰、位置正确
│       └── 说明书、合格证、装箱清单完整性
│
├── 3. 功能测试              ← 对应「功能」维度
│   ├── 3.1 功能完整性
│   │   ├── 所有声明功能均存在且可触达
│   │   └── 无缺失功能项
│   ├── 3.2 功能正确性
│   │   ├── 正常输入 → 输出结果正确
│   │   ├── 边界值 / 极限条件下的功能表现
│   │   └── 多功能协同运作是否相互干扰
│   └── 3.3 异常与降级
│       ├── 错误输入 / 误操作时的响应行为
│       └── 局部失效时整体是否进入安全降级状态
│
├── 4. 性能测试              ← 对应「功能」的量化层
│   ├── 4.1 效率
│   │   ├── 响应速度 / 处理速度是否达标
│   │   └── 能耗 / 资源消耗是否在规格范围内
│   ├── 4.2 容量与承载
│   │   ├── 最大承载能力(重量、流量、并发数)
│   │   └── 超载时的行为(拒绝 vs 失效 vs 损坏)
│   └── 4.3 精度与一致性
│       ├── 输出精度是否符合规格
│       └── 多次操作结果的一致性(重复性误差)
│
├── 5. 界面与可用性          ← 对应「界面」维度
│   ├── 5.1 交互可达性
│   │   ├── 操作入口是否清晰可见、易于定位
│   │   └── 操作反馈是否及时明确(声、光、触感、视觉)
│   ├── 5.2 易用性
│   │   ├── 操作步骤是否符合直觉
│   │   ├── 目标用户无需培训能否完成基本操作
│   │   └── 操作所需力度 / 幅度是否在人体工学范围
│   ├── 5.3 信息呈现
│   │   ├── 显示 / 输出内容是否准确、清晰、无歧义
│   │   └── 错误提示是否可被用户理解
│   └── 5.4 无障碍适配
│       └── 特殊用户群(老人、儿童、残障)的可用程度
│
├── 6. 可靠性与耐久性        ← 对应「约束」→ 时间稳定性
│   ├── 6.1 稳定性
│   │   ├── 长时间连续运行的稳定性
│   │   └── 重复操作的一致性(第1次 vs 第N次)
│   ├── 6.2 耐久性
│   │   ├── 机械磨损(摩擦、弯折、按压次数)
│   │   ├── 疲劳寿命(循环载荷下的失效点)
│   │   └── 加速老化(等效使用寿命内的性能衰退)
│   ├── 6.3 故障特性
│   │   ├── 故障率是否满足 MTBF / MTTF 指标
│   │   └── 故障是否可被用户感知(可检测性)
│   └── 6.4 可恢复性
│       ├── 故障后能否自行恢复正常状态
│       └── 可维修性(更换易损件的便利程度)
│
├── 7. 环境适应性            ← 对应「约束」→ 物理环境
│   ├── 7.1 气候环境
│   │   ├── 高温 / 低温下的功能表现
│   │   ├── 高湿 / 浸水条件(防潮、防水等级)
│   │   └── 热冲击(温度骤变时的结构与功能完整性)
│   ├── 7.2 机械环境
│   │   ├── 振动(运输途中及使用中的持续振动)
│   │   └── 冲击 / 跌落(规格内跌落后功能是否正常)
│   ├── 7.3 电磁环境(电子类产品)
│   │   ├── 抗干扰能力(EMS:在外部电磁场中正常工作)
│   │   └── 辐射发射(EMI:不对外部造成超标干扰)
│   └── 7.4 非常规使用场景
│       └── 极端场景、超预期使用方式下的表现与失效模式
│
├── 8. 安全性                ← 对应「约束」→ 伤害防护
│   ├── 8.1 物理安全
│   │   ├── 锐边 / 尖角 / 夹点伤害风险
│   │   ├── 过热 / 起火风险
│   │   └── 机械运动部件的夹伤 / 压伤防护
│   ├── 8.2 化学安全
│   │   ├── 有害物质(重金属、VOC、塑化剂)
│   │   └── 与接触物的兼容性(食品接触、皮肤接触)
│   ├── 8.3 电气安全(电子 / 电力类产品)
│   │   ├── 绝缘性能、漏电防护
│   │   └── 过载 / 过压 / 短路保护机制
│   ├── 8.4 故障安全(Fail-safe)
│   │   ├── 失效时默认进入安全状态(断电、停止、锁定)
│   │   └── 紧急停止 / 安全切断机制是否有效
│   └── 8.5 信息安全(数字类产品)
│       ├── 用户数据保护与隔离
│       └── 未授权访问防护
│
├── 9. 合规性                ← 对应「约束」→ 外部规则
│   ├── 9.1 法规与认证
│   │   ├── 目标市场强制认证(3C、CE、UL、FCC 等)
│   │   └── 行业标准符合性(ISO、IEC、GB 等)
│   ├── 9.2 环保合规
│   │   ├── 有害物质限制(RoHS、REACH)
│   │   └── 能效等级标准
│   └── 9.3 标识合规
│       └── 法定标签、警告语、认证标志的规范性
│
└── 10. 生命周期             ← 时间轴的展开
    ├── 10.1 出厂前(包装与存储)
    │   ├── 包装保护性(防跌落、防压、防潮)
    │   └── 存储条件适应性(温湿度、有效期)
    ├── 10.2 交付节点(开箱体验)
    │   ├── 开箱流程顺畅,配件齐全
    │   └── 首次使用引导是否充分
    ├── 10.3 使用中(维护性)
    │   ├── 日常清洁的便利性
    │   ├── 易损件识别与更换便利性
    │   └── 维修可达性(能否被拆开维修)
    └── 10.4 报废(处置)
        ├── 可拆解性(分类回收的可操作性)
        └── 材料可回收率

使用这个框架的方式:

拿到一个待测产品时,先过一遍 10 个一级节点,划掉不适用的(杯子直接跳过 8.3、8.5;桌子直接跳过 7.3),再对剩余节点逐条问:”这个测试点在这个产品上,怎么测?测什么值?判断标准是什么?” —— 这三问的答案就是一条测试用例。

工作方法论

01 | 学会任务拆解

../_images/gtd_flowchart.png

开始做一件事情之前,先问自己几个问题:

  1. 先拆解任务。确保拆解后的每个子任务都能在 一小时之内 完成,如果不能,就继续拆解,直到每个子任务都能在一小时之内完成。

  2. 归类子任务。用 GTD 法则对每个子任务进行归类,你必须知道哪些属于核心任务,哪些属于支线任务。

  3. 确立优先级。确定每个子任务的执行优先级,按照优先级,先完成核心任务,再完成支线任务。核心任务是你必须完成的任务,而支线任务则是可选的,可能会分散你的注意力。

以上步骤完成后,按照任务清单的优先级严格执行。

目的是什么?

高效完成任务,让你注意力始终保持在主线任务上,不被支线任务干扰。

02 | 测试工程师必备核心素质

在执行测试任务时,必须具备以下素质才能将任务执行到位

  1. 吹毛求疵。第一个首要必备的素质就是吹毛求疵。即在执行测试时,如果遇到任何蛛丝马迹(不符合直觉,功能有问题),就要立即记录下来。或者直接提缺陷单(并@相关人员,一般是项目相关人员,避免日后出问题说你没测出来)

  2. 严谨。将吹毛求疵发现的所有缺陷,进一步测试,确保稳定复现,然后再提缺陷单(确保每一个缺陷单都是有效单)。同时要对缺陷追根究底,努力找到问题的根源。

  3. 耐心。面对问题耐心解决,不要泄气,不要抱怨。

  4. 强势。如果所有缺陷都未修复,测试人员就不能准予测试通过。假使项目在缺陷为完全修复的情况下依旧要发布新版本,那么及时请上级批准并澄清责任。

03 | 沟通法则

  1. 学会拒绝。如果别人的请求你不想接受或让你不舒服,或者会占用你过多的时间和精力,你应该学会拒绝。拒绝并不意味着你不愿意帮助别人,而是你需要保护自己的时间和精力,以便更好地完成自己的工作。

  2. 学会求助。如果你遇到了困难或者需要帮助,不要害怕寻求帮助。向同事、上级寻求帮助可以让你更快地解决问题,并且也可以建立更好的工作关系。记住: 如果你不会也不问,最终责任就会由你来承担

语言表达技巧

禁止使用嗯、啊、这个、那个、然后等口头禅。

生活作息与健康保持

注意休息,保持充足的睡眠时间,养成良好的作息习惯。保持身体健康,适当锻炼,注意饮食均衡。

  • 早起。养成早上7:00前起床的习惯,起床之后打开窗户**拉伸10分钟**,然后在花10分钟打扫一下卫生。

  • 洗漱。每天洗头、洗脸、刷牙。

  • 做早餐。如果时间来得及就做早餐,恰巴塔欧芹什么的。

  • 出门上班。上班的8小时也要合理安排,详见工作安排一节。

  • 下班。如果是坐地铁,就提前一两站下车,这样可以多走一些路锻炼身体。

  • 早睡。将睡觉时间控制在22:30之前,基本上都是18点之后下班, 回到家算19~20点吧,养成20点准时洗漱的习惯,洗漱预估1小时。洗澡、洗脸、刷牙、洗内裤、洗袜子。衣服做到两天一洗。

  • 看书。如果洗漱完有时间的话,看1小时书,纸质书,电子书都行。22:25准时上床,手机放在桌子上,不要带上床。

人际关系

职场人际关系的处理方法和技巧