################### leeyorke入职手册 ################### 问题复盘 ========== - :doc:`在上一家公司工作时候暴露的个人问题复盘 ` 思考框架 ========== 01 | 测试必须先明白什么 ------------------------------------- 严禁一上来就什么也不做就开始写测试用例,或者直接上手测试。测试之前必须先明白: - **缺陷一定存在**。默认系统有问题。 - **测试无法穷举**。承认测试不可能穷举,所以核心问题变成:哪里最可能出问题?出了问题代价最高?这就需要优先把资源砸在破坏力最大的 20% 核心风险(需要思考该产品的高风险场景)上。 - **杀虫剂悖论**。测试用例的效果会随着时间的推移而减弱,需要不断更新和优化测试用例。 02 | 测试点通用梳理框架 ------------------------------------- 事物都有共性,产品也不例外,不管你是测试芯片、测试软件、测试电梯、测试杯子、测试手机,测试用例的编写框架都会有共性。测试用例的编写框架如下: .. code-block:: Text 产品测试框架 │ ├── 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 | 产品通用测试框架 ------------------------------------- .. code-block:: Text 产品通用测试框架 │ ├── 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 报废(处置) ├── 可拆解性(分类回收的可操作性) └── 材料可回收率 .. rubric:: 使用这个框架的方式: 拿到一个待测产品时,先过一遍 10 个一级节点,划掉不适用的(杯子直接跳过 8.3、8.5;桌子直接跳过 7.3),再对剩余节点逐条问:"这个测试点在这个产品上,怎么测?测什么值?判断标准是什么?" —— 这三问的答案就是一条测试用例。 工作方法论 =============== 01 | 学会任务拆解 ------------------------------------- .. image:: ../_static/gtd_flowchart.png :align: center :width: 100% 开始做一件事情之前,先问自己几个问题: 1. **先拆解任务**。确保拆解后的每个子任务都能在 **一小时之内** 完成,如果不能,就继续拆解,直到每个子任务都能在一小时之内完成。 #. **归类子任务**。用 ``GTD`` 法则对每个子任务进行归类,你必须知道哪些属于核心任务,哪些属于支线任务。 #. **确立优先级**。确定每个子任务的执行优先级,按照优先级,先完成核心任务,再完成支线任务。核心任务是你必须完成的任务,而支线任务则是可选的,可能会分散你的注意力。 以上步骤完成后,按照任务清单的优先级严格执行。 .. rubric:: 目的是什么? 高效完成任务,让你注意力始终保持在主线任务上,不被支线任务干扰。 02 | 测试工程师必备核心素质 ------------------------------------- *在执行测试任务时,必须具备以下素质才能将任务执行到位* 1. **吹毛求疵**。第一个首要必备的素质就是吹毛求疵。即在执行测试时,如果遇到任何蛛丝马迹(不符合直觉,功能有问题),就要立即记录下来。或者直接提缺陷单(并@相关人员,一般是项目相关人员,避免日后出问题说你没测出来) #. **严谨**。将吹毛求疵发现的所有缺陷,进一步测试,确保稳定复现,然后再提缺陷单(确保每一个缺陷单都是有效单)。同时要对缺陷追根究底,努力找到问题的根源。 #. **耐心**。面对问题耐心解决,不要泄气,不要抱怨。 #. **强势**。如果所有缺陷都未修复,测试人员就不能准予测试通过。假使项目在缺陷为完全修复的情况下依旧要发布新版本,那么及时请上级批准并澄清责任。 03 | 沟通法则 ------------------------------------- 1. **学会拒绝**。如果别人的请求你不想接受或让你不舒服,或者会占用你过多的时间和精力,你应该学会拒绝。拒绝并不意味着你不愿意帮助别人,而是你需要保护自己的时间和精力,以便更好地完成自己的工作。 #. **学会求助**。如果你遇到了困难或者需要帮助,不要害怕寻求帮助。向同事、上级寻求帮助可以让你更快地解决问题,并且也可以建立更好的工作关系。记住: **如果你不会也不问,最终责任就会由你来承担** 。 语言表达技巧 ============= 禁止使用嗯、啊、这个、那个、然后等口头禅。 生活作息与健康保持 ==================== 注意休息,保持充足的睡眠时间,养成良好的作息习惯。保持身体健康,适当锻炼,注意饮食均衡。 * **早起**。养成早上7:00前起床的习惯,起床之后打开窗户**拉伸10分钟**,然后在花10分钟打扫一下卫生。 * **洗漱**。每天洗头、洗脸、刷牙。 * **做早餐**。如果时间来得及就做早餐,恰巴塔欧芹什么的。 * **出门上班**。上班的8小时也要合理安排,详见工作安排一节。 * **下班**。如果是坐地铁,就提前一两站下车,这样可以多走一些路锻炼身体。 * **早睡**。将睡觉时间控制在22:30之前,基本上都是18点之后下班, 回到家算19~20点吧,养成20点准时洗漱的习惯,洗漱预估1小时。洗澡、洗脸、刷牙、洗内裤、洗袜子。衣服做到两天一洗。 * **看书**。如果洗漱完有时间的话,看1小时书,纸质书,电子书都行。22:25准时上床,手机放在桌子上,不要带上床。 人际关系 ========== 职场人际关系的处理方法和技巧