质量管理

测试基础理论

测试分类

软件测试分类按项目流程阶段划分按代码可见度划分按代码是否被运行划分按是否需要人工干预划分按不同的测试目的划分单元测试集成测试系统测试集成测试验收测试线上测试黑盒测试白盒测试灰盒测试静态测试动态测试手工测试自动化测试端到端测试冒烟测试回归测试随机测试探索式测试模块接口测试局部数据结构测试路径测试错误处理测试边界条件测试系统内单元间的集成测试功能测试性能测试负载测试安全测试兼容性测试本地化国际化测试安装卸载测试系统间的集成测试功能确认测试安全可靠性测试易用性测试可扩充性测试兼容性测试资源占用率测试用户文档资料测试非正式验收测试线上只读测试A/B测试空间性能时间性能α测试β测试

用例设计

用例设计方法原则等价类边界值因果图判定表正交表错误推测场景分析基于需求场景化原子化可判定正交独立可回归

用例设计方法

  • 等价类:某个输入域的子集合,集合内各值对于程序来说是等价的
  • 边界值:等价类的边界值和边界附近值
  • 因果图:各输入间有约束关系,列出输入和输出,得出因果图
  • 判定表:有因果图得出判定表,精简判定表
  • 正交表:将不同因素的水平组合列成表格
  • 错误推测:根据经验进行错误推断来设计测试
  • 场景分析:根据实际用户使用场景来设计测试

用例设计原则

  • 基于需求:用例设计是为了验证需求
  • 场景化:基于场景设计测试用例
  • 原子化:一个测试用例只验证一个测试点
  • 可判定:应有预期结果,可判断通过或不通过
  • 正交:用例验证部分需正交,不重叠验证
  • 独立:用例之间相互独立
  • 可回归:用例可回归,且多次回归应有稳定一致的结果

缺陷管理

缺陷收集

缺陷模板

生命周期

管理工具

缺陷扫除

缺陷分析

缺陷分类

缺陷统计

缺陷分布

缺陷报告

缺陷预防

可测性

缺陷响应力

敏捷过程

二八法则

缺陷分类

出自《软件之道:软件开发问题争议剖析》

  • 遗留。前一个版本未解决而遗留下的问题
  • 需求。在需求分析环节出现的问题
  • 设计。在构建和设计环节出现的问题
  • 代码编写。在代码编写环节出现的问题
  • 测试环境。在搭建或准备测试环境时出现的问题
  • 测试。测试中发生的问题(如运行故障等)
  • 重复。已经报告过的问题
  • 非问题。由于用户误触界面或者功能所产生的问题
  • 其他。其他无法分类的问题,例如硬件问题等。

示例:

类型比例
遗留4.0%
需求4.9%
设计10.6%
代码编写18.2%
测试环境19.1%
测试5.7%
重复13.9%
非问题15.9%
其他7.8%

缺陷分类统计

提升缺陷响应力

尽早发现
快速定位
及时响应
小步迭代
测试覆盖率
持续集成
日志
监控
工具
灾备
分级反馈机制

软件可测性

  • 可操作性:运行的越好,被测试的效率越高
  • 可观察性:所看见的,就是所测试的
  • 可控制性:对软件的控制越好,测试越能够被自动执行与优化
  • 可分解性:通过控制测试范围,能够更好地分解问题,执行更灵活的测试
  • 简单性:需要测试的内容越少,测试的速度越快
  • 稳定性:改变越少,对测试的破坏越小
  • 易理解性:得到的信息越多,进行的测试越灵活

软件生命周期

测试相关主题

功能测试

自动化测试

性能测试

安全测试

大数据测试

微服务测试

精准测试

AI 测试

探索式测试

本地化国际化测试

需求测试

测试工具及选型

测试管理

测试数据管理

测试环境管理

测试计划

测试策略

测试策略回答以下问题:

问题示例
测试对象ToC 的互金 APP,可进行小额借贷
测试范围新增集成风控大数据平台的风险评估功能
测试目标保证集成功能顺利上线,不影响系统已有其他功能和业务逻辑
测试重点集成风控大数据平台的功能,根据返回的风险等级实时生成推荐商品列表
测试难点不同用户画像的测试用户数据的准备,与风控系统的集成
测试深度和广度深度-主流程的分支覆盖率达到 100%,非主流程 80%;广度-集成点需求覆盖率 100%,非集成点的功能回归覆盖率 70%
测试活动安排各类测试方法的占比、采用什么测试方式,工具选型,测试资源分配,测试流程等内容
测试效果评价需求覆盖率、上线后产生紧急修复缺陷数

缺陷预防

风险管理

质量成熟度评估

敏捷测试

敏捷测试宣言

  • 全程的测试介入 over 孤立的测试阶段
  • 团队整体对质量负责 over 测试人员独力把关质量
  • 持续性的精准自动化测试 over 回归式的全量自动化测试
  • 质量内建 over 质量检测

敏捷测试原则

  1. 我们的目标在于和团队一起尽快地交付高质量软件。
  2. 测试人员尽早参与软件早期阶段,与所有团队角色合作,通过实例化需求,确保对业务价值理解的一致性。
  3. 测试人员关注生产环境状态,收集数据,指导和优化前期的分析、开发和测试。
  4. 测试人员和开发人员同处一个产品项目团队,而不是独立的测试团队或部门。
  5. 测试人员负责探索性测试,和开发人员结对,设计、实现和维护自动化测试。
  6. 自动化测试在流水线中持续精准执行,快速发现每次代码提交对于已有功能的影响。
  7. 测试数据对于自动化测试是充分的,并能按需获得。
  8. 测试活文档化,和代码一起,作为知识资产进行版本化管理。
  9. 自动化测试需要有效的分层。
  10. 预防缺陷,而不是关注缺陷的数量。

质量内建

软技能

QA 胜任力模型

测试发展方向

测试人员招聘

沟通与引导

QA 读书雷达

启发基础实践/案例理论工具技术《持续交付:发布可靠软件的系统方法》1《Google软件测试之道》2《How We Test Software at Microsoft》3《移动APP测试的22条军规》4《Explore It!》5《软件测试实践(微软技术专家经验总结)》6《影响力》7《敏捷软件测试:测试人员与敏捷团队的实践指南》8《软件测试的经验与教训》9《硝烟中的Scrum和XP》10《The Art of Application Performance Testing》11《软件测试》12《软件测试的艺术》13《高级软件测试.卷2:高级软件测试经理》14《实例化需求》15《人人都是产品经理》16《咨询的奥秘》17《金矿》18《你的灯还亮着吗?》19《测试之美》20《重来》21《大教堂与集市》22《基础设施即代码:云服务器管理》23《Cucumber: 行为驱动开发指南》24《鸟哥的Linux私房菜》25《看板方法》26《The Cucumber Book》27《数据挖掘概念与技术》28《用户故事与敏捷方法》29《探索式软件测试》30《白帽子讲Web安全》31《测试驱动开发》32《探索吧!深入理解探索式软件测试》33《探索式测试实践之路》34《面向对象分析与设计》35《测试驱动开发的艺术》36《完美软件:对软件测试的各种幻想》37《Fifty Quick Ideas on How to Improve Your Tests》38