《软件测试52讲》读书笔记 —— 如何设计一个“好的”测试用例

简介: 《软件测试52讲》读书笔记 —— 如何设计一个“好的”测试用例

如何理解一个“好的”测试用例?


“好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关

举栗子

被测软件——鱼塘

软件缺陷——鱼

测试用例集——渔网

“好的”测试用例集就是一张能够覆盖整个鱼塘的大渔网,只要鱼塘里有鱼,就能给捞上来;

如果渔网本身是完整合格的,那么捞不到鱼,就证明鱼塘中没有鱼,而渔网的好坏与鱼塘是否有鱼无关

 

“好的”测试用例必须具备哪些特征


  1. 整体完备性:一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求
  2. 等价类划分的准确性:对于每个等价类都能保证只要其中一个输入测试通过,其他输入页一定测试通过
  3. 等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别

 

三种最常用的测试用例设计方法


  1. 等价类划分
  2. 边界值分析
  3. 错误推断法:基于对被测试软件系统设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例方法。强调的是对被测软件的需求理解以及设计实现的细节把握


错误推断法的例子

image.png


如何设计出“好的”测试用例


大栗子:测试面向终端用户的GUI测试

最核心的测试点:验证软件对需求的满足程度

如何做到:在需求分析阶段和技术设计阶段就开始介入

成效:设计出从终端用户使用场景考虑的端到端的测试用例集,主要验证各个业务需求是否被满足,基于黑盒的测试设计方法

重点:在具体的用例设计时,首先要搞清楚每一个业务需求所对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,最后再针对每个测试需求点设计测试用例

绕吗???(;´д`)ゞ


小栗子:以“用户登录”功能设计测试用例

首先先看看【用户登录】功能的映射关系图

image.png


两个关键点:

  1. 从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。 比如,如果你没有识别出用户登录功能的安全性测试需求,那么后续设计的测试用例就完全不会涉及安全性,最终造成重要测试漏洞。
  2. 对于识别出每个测试需求点,需要综合运用等价类划分、边界值分析和错误推测方法来全面设计测试用例。


以用户登录的功能性需求为例

  1. 首先对“用户名”和“密码”两个输入框分别进行等价类划分,对于无效等价类的识别可采用错误推测法(如:用户名包含特殊字符)
  2. 然后补充输入框的边界值用例,如:为空、用户名长度刚刚大于限定长度

 

设计测试用例的高级经验


深入理解被测试软件的架构,发现系统边界以及系统集成上的潜在错误

必须对内部的架构有清楚的认识,比如:数据库连接方式、数据库的读写分离、消息中间件的配置、缓存系统的层级分布、第三方系统的集成


必须深入理解被测软件的设计与实现细节、内部处理逻辑

只根据测试点设计测试用例只能覆盖“表面”一层,往往内部处理流程、分支处理无法覆盖完全;在具体实践中,可以通过代码覆盖率指标找出可能的测试遗漏点


引入需求覆盖率和代码覆盖率来衡量测试执行的完备性

后续介绍

 

评论区额外“加餐”


  1. 【需求合理性测试】即用户体验测试也是现在很重要的一点
  2. 在快速迭代的敏捷开发节奏下,无需把每条用例都写的这么复杂,重要的是把测试点写清楚,不是要把那些显而易见的步骤,环境,预期写的十全十美
相关文章
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
84 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
3月前
|
敏捷开发 数据可视化 Devops
敏捷测试价值观、方法和实践读书笔记(4)
本章节探讨了敏捷测试执行的关键概念与实践。首先介绍了用户故事及其重要性,强调其在敏捷开发中的角色,并阐述了用户故事的 INVEST 原则。接着分析了用户故事生命周期中的测试关注点,包括定义、处理、完成及验收阶段的测试活动。此外,还对比了不同测试术语的差异,并提供了敏捷测试计划的策略与过程。通过看板等工具实现任务管理与跟踪,确保测试活动高效进行。最后,介绍了敏捷测试中的度量指标,帮助团队评估测试效果。
41 5
敏捷测试价值观、方法和实践读书笔记(4)
|
3月前
|
监控 架构师 Devops
敏捷测试价值观、方法和实践读书笔记(3)
本章节介绍敏捷测试转型框架,涵盖模型概览、实施难度与顺序、文化转变、角色技能需求及测试流程。敏捷测试转型模型包括文化、组织、流程与实践等关键要素,并针对各层面提出具体实施建议与障碍解决方案。此外,详细阐述了不同敏捷测试角色的技能需求与职责,以及从Sprint内至跨Sprint的测试流程与交付物。
41 5
敏捷测试价值观、方法和实践读书笔记(3)
|
3月前
|
开发框架 数据可视化 项目管理
敏捷测试价值观、方法和实践读书笔记(1)
敏捷软件开发宣言在身体力行的同时也帮助我们一直在实践中探寻更好的软件开发方法。由此,我们建立了如下价值观:个体和互动 高于 流程和工具工作的软件,高于 详尽的文档客户合作, 高于 合同谈判响应变化,高于 遵循计划。也就是说,尽管右项有其价值,但我们更重视左项的价值。
62 4
敏捷测试价值观、方法和实践读书笔记(1)
|
3月前
|
JavaScript 前端开发 Java
敏捷测试价值观、方法和实践读书笔记(5)
本章节介绍了敏捷功能测试的原则与实践,包括单元测试的概念及其编写步骤,测试驱动开发(TDD)的流程,以及如何通过模拟对象进行测试。详细讲解了单元测试的编写方法,如初始化对象、执行操作及验证结果,并探讨了 TDD 的五个步骤。通过具体案例展示了如何逐步完善储蓄账户的功能测试,包括存款、取款及异常处理。此外,还讨论了代码覆盖率的重要性及其局限性,强调了测试充分性比单纯追求代码覆盖率更为关键。
26 3
敏捷测试价值观、方法和实践读书笔记(5)
|
3月前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
33 7
|
3月前
|
机器人 测试技术
敏捷测试价值观、方法和实践读书笔记(6)
验收测试驱动开发(ATDD)强调在开发前定义验收标准,并通过自动化测试确保用户价值得到满足。验收测试关注用户需求是否实现,而非代码细节。ATDD涉及用户、产品负责人、开发人员及测试人员,通过讨论、开发和交付三个阶段,确保产品符合预期。此方法有助于团队更好地理解和实现用户需求。
33 5
|
3月前
|
敏捷开发 测试技术
敏捷测试价值观、方法和实践读书笔记(2)
本章节介绍敏捷测试在快速变化的软件开发环境中的重要性。传统测试方法在敏捷环境中面临时间紧迫、文档不足、频繁变更及资源短缺等挑战。敏捷测试遵循敏捷开发原则,强调测试与开发的紧密融合、团队协作及业务价值交付。其特点包括更强的协作、更短的周期、更灵活的计划及高效的自动化。相较于传统测试,敏捷测试具有加快产品上市时间、提升整体质量及简化流程降低成本的优势。
28 3
|
3月前
|
Devops jenkins 测试技术
敏捷测试价值观、方法和实践读书笔记(10)
本文介绍了敏捷测试的延伸实践,重点讨论了持续集成(CI)和持续部署(CD)的概念与实践方法。持续集成强调频繁提交代码至主干并自动化构建测试,确保快速反馈和高质量代码。持续部署则进一步实现自动化部署,通过蓝绿部署、金丝雀发布等方式提升软件交付效率。此外,文章还探讨了持续反馈机制,如A/B测试和混沌工程,以及DevOps文化下的测试策略,强调测试在整个开发流程中的重要性。
41 0
敏捷测试价值观、方法和实践读书笔记(10)
|
3月前
|
XML 存储 API
敏捷测试价值观、方法和实践读书笔记(8)
本文介绍了API的基础知识,区分了Web Service和Web API的概念,详细阐述了Web Service中的SOAP服务和REST服务的特点及区别。同时,文章还探讨了如何在项目中进行API测试,包括API测试的类型和实施阶段,强调了API在现代软件开发中的重要性和优势。
12 0
敏捷测试价值观、方法和实践读书笔记(8)