3.需求分析与测试用例设计方法

设计方法

测试点

  • 定义: 测试时需要考虑的可测试方面,不同公司可能称为"检查点"或其它名称
  • 特点: 是需求分析的最后一个环节,用于解决"测哪里"和"怎么测"的问题
  • 举例说明: 如同打架时的各种招数,如直接约架、设陷阱或雇人打群架,每种方法对应一个测试点
  • 与用例关系: 简单的功能(如"退出"按钮)可直接从测试点转化为用例(如"点击退出看软件能否退出")

场景法概述

  • 核心作用: 主要用于测试系统的业务流程,验证主要功能是否正确实现
  • 测试时机: 拿到测试任务时应首先关注业务流程验证
  • 与其他方法关系: 区别于大纲法的功能拆分作用,属于用例设计方法
  • 方法分类: 属于黑盒测试方法,与等价类、边界值、决策表等方法并列

场景的定义
基本概念: 描述软件操作的路径(先干什么再干什么)
组成要素:
基本流: 正确的业务流程构成的操作路径(模拟正确操作)
备选流: 导致程序出错的操作流程(模拟错误操作)
应用特点: 与业务流程分析相似但不完全相同,更侧重操作路径的模拟
4. 场景法的分析步骤
第一步: 分析软件需求,从用户角度梳理业务流程和业务规则
第二步: 编写基本流场景(正确流程)和备选流场景(错误流程)
实施要点: 需同时考虑正向和反向测试路径,覆盖正常和异常操作
方法论定位: 属于用例设计的大方向规划,不过多涉及细节实现

场景法的分析步骤

  • 分析软件需求: 首先,需要全面分析软件的需求,明确软件要实现的业务流程和业务规则。这是场景法分析的第一步,也是非常重要的一步,因为后续的所有步骤都基于这一步的理解。
  • 写出业务流程和业务规则: 从用户使用情景的角度出发,详细写出软件的业务流程和业务规则。这有助于我们更深入地理解软件的使用场景,为后续的测试设计打下基础。
  • 写出基本流场景和备选流场景: 在明确了业务流程和业务规则后,我们需要写出基本流场景和备选流场景。基本流场景是软件在正常情况下的操作流程,而备选流场景则是软件在异常情况或特殊情况下的操作流程。通过这一步,我们可以更全面地覆盖软件的测试点,提高测试的质量。

描述程序的基本流及备选流

  • 流程步骤:
    • 插入银行卡:客户将银行卡插入ATM机的读卡器
    • 验证银行卡:ATM机从银行卡的磁条中读取账户代码,检查是否属于可接受的银行卡
    • 输入密码:ATM机要求客户输入密码
    • 验证密码:系统验证密码是否正确
    • 进入主界面:ATM显示可用操作选项
    • 选择取款:客户选择"取款"功能并输入金额
    • 系统验证:检查账户余额是否充足、总取款金额是否超限、ATM机现金是否足够
    • 完成交易:验证通过后更新账户余额,出钞并提示用户取款
  • 关键特征:
    • 只包含正常操作路径,不考虑任何异常情况
    • 每个步骤都假设输入正确且系统状态正常
    • 流程设计应聚焦软件相关操作,排除无关行为(如"步行找ATM机")
备选流

  • 错误类型及处理:
    • 银行卡无效:系统提示错误信息并退卡
    • 密码错误:
      • 1-2次错误:提示重新输入
      • 3次错误:直接吞卡(需单独列为不同备选流)
    • 账户余额不足:提示错误并退卡
    • 超额取款:当日取款总额超限时提示错误并退卡
    • ATM现金不足:提示错误并退卡
  • 设计要点:
    • 每个异常情况应作为独立备选流处理
    • 相同错误类型但处理方式不同(如密码错误次数)需区分
    • 结果描述应具体明确(如"吞卡"与"退卡"的区别)
根据基本流和备选流生成不同的场景

  • 场景生成原则:通过分析基本流(正确流程)和备选流(错误流程)来构建测试场景,正确情况通常只有一种,而错误情况可能有多种
  • 表格使用说明:场景分析表格可记录在测试需求分析说明书中作为测试点,表格形式不重要,重点在于明确场景条件和预期结果
  • 有效标识含义:表格中的"V"代表valid(有效),表示该条件需满足正确值,但非必须标注项
场景法练习
三角形类别判断
1. 例题
1)题目描述
  • 题目: 输入三个数,判断它们能否构成三角形,以及若能构成,则进一步判断是什么类型的三角形。
2)题目解析
  • 审题过程:
    • 首先,检查输入的三个数是否均为0-1000的实数。
    • 然后,判断三边之和是否大于第三边,若不满足,则不能构成三角形。
    • 接着,判断三边是否都相等,若是,则为等边三角形。
    • 再判断两边是否相等,若是,则为等腰三角形。
    • 判断两边平方和是否等于第三边平方,若是,则为直角三角形。
    • 若以上条件都不满足,则为普通三角形。
  • 易错点:
    • 输入数据不完整或不是实数时,需要提示必须输入实数。
    • 输入范围超过0-1000,或小数位数超过三位时,需要报错。
    • 注意区分不同类型的三角形判断条件。

等价类划分法

等价类划分核心思想

  • 代表选择原理:类似于人民代表大会制度,将输入数据划分为若干区域后,每个区域选取代表性数据,该数据能等价代表该区域所有数据。
  • 分类基础:根据需求分析将输入域划分为有效等价类(符合需求规范)和无效等价类(违反需求规范)。
  • 测试效率提升:通过代表数据减少测试用例数量,解决穷尽测试不可行的问题,如两位数加法器中测试负99到99的范围时无需测试所有值。
等价类划分的步骤
  • 第一步需求分析:明确被测对象的功能需求,如两位数加法器要求输入范围为−99-99−99到999999的整数。
  • 第二步初步分类:
    • 有效等价类:符合输入要求的数据(如000、505050)
    • 无效等价类:超出范围或格式错误的数据(如−100-100−100、100.5100.5100.5)
  • 第三步细化分类:结合计算机知识进一步细分,例如:
    • 边界值附近单独分类(−99-99−99、999999)
    • 特殊字符输入单独分类(如"ab")
  • 代表值选取原则:每个等价类中选取最能体现该类特征的数据,如无效类中选取−100-100−100代表"小于−99-99−99"的无效情况。
等价类划分练习
需求讲解
  • 核心需求:ATM取款功能测试,要求单笔取款金额最少50元,最多5000元,且必须是50的倍数
  • 特殊说明:案例假设不考虑日累计限额(如现实中的2000元限制),仅测试单笔交易场景。

有效等价类划分
唯一有效类:金额在区间内且为50的倍数的数值(如50、100、4950、5000)
测试要点:只需设计1个测试用例即可覆盖全部有效情况,例如测试取款2500元
3. 无效等价类划分
数值范围违规:
小于下限:的值(如0、49)
大于上限:的值(如5001、10000)
倍数违规:非50倍数的数值(如51、4999)
特殊输入:
空输入(直接点击取款)
字符输入(需确认ATM键盘是否存在字母键)
设备适配原则:若实际ATM键盘无字母键,则字符输入类可不测试

等价类划分注意事项
考虑有效和无效等价类
  • 测试方向:
    • 正向测试(有效等价类):验证功能正常工作情况
    • 负向测试(无效等价类):验证异常处理能力
  • 数量比例:无效类用例通常远多于有效类,比例可能达1:8甚至更高
  • 术语对照:
    • 有效等价类 ≈ 正向用例 ≈ 顺向测试
    • 无效等价类 ≈ 负向用例 ≈ 逆向测试
2. 注意划分的粗细
  • 过粗风险:
    • 将本应分开的类合并(如将空输入和字符输入合并)
    • 导致测试遗漏(如漏测边界值4999)
  • 过细风险:
    • 过度拆分同类项(如分别测试大写A和小写a)
    • 产生冗余测试(如测试200后又测试300)
  • 实践建议:
    • 初学者宜稍细划分,避免遗漏缺陷
    • 经验积累后可优化分类粒度
  • 审查要点:需检查划分是否覆盖所有需求约束条件(范围、倍数、输入类型等)
例题:等价类划分法应用
  • 有效等价类:输入长度为4-10位字符
  • 无效等价类:
    • 长度小于4位
    • 长度大于10位
  • 划分依据:根据输入长度要求直接划分,保持每个等价类内部具有相同测试特性
布尔类型等价类划分

  • 有效等价类:
    • true(注意大小写要求)
    • false(注意大小写要求)
  • 无效等价类:除true/false外的所有输入
  • 注意事项:
    • 需确认编程语言对大小写的敏感性
    • 若要求大写,则有效类应调整为TRUE/FALSE
    • 无效类可适当扩充包含大小写混合情况
例题:组合框等价类划分
  • 有效等价类:
    • 从下拉列表选择现有字体
    • 手动输入存在的字体名称
  • 无效等价类:输入不存在的字体名称
  • 测试要点:组合框同时支持选择和输入的特性需要分别验证
例题:用户名规范等价类划分 02:40
  • 有效等价类:
    • 纯字母组合(长度≤12)
    • 字母开头+数字组合(长度≤12)
  • 无效等价类:
    • 数字开头
    • 长度>12
    • 空输入(长度=0)
    • 包含特殊字符
  • 复杂需求分析:
    • 必须字母开头是核心约束条件
    • 长度限制和字符类型限制需要组合验证
    • 可合并有效类为"字母开头+字母数字组合"
例题:日期文本框等价类划分
  • 有效等价类(假设需求):
    • 当前/将来日期+"/"分隔符
    • 当前/将来日期+"-"分隔符
    • 当前/将来日期+无分隔符
  • 无效等价类:
    • 过去日期(范围错误)
    • 错误分隔符(如空格、字母)
    • 日期顺序错误(如月日年)
    • 包含非数字字符
    • 包含不允许的标点(如点号)
    • 非法日期值(如2月30日)
    • 世纪数省略(如18代替2018)
  • 测试设计技巧:
    • 需明确日期格式要求(年月日/月日年)
    • 考虑不同地区的日期表示习惯
    • 边界值需结合等价类共同使用
    • 无效类可衍生多种测试用例

边界值分析法

标题字数: 0 1 40 41

标题字数 0 40 41 -1不具有可测性!

文本输入域 0 1 255 256

分页,首页点上一页,尾页点上一页,进行边界值测试

决策表

输入组合盲区:等价类划分、边界值等传统测试方法未考虑输入参数的组合情况,例如第一个数输入正数、第二个数输入负数的组合场景。

决策表练习

  • 输入输出分析:
    • 输入1:工资制(年薪/月薪)
    • 输入2:错误类型(4种情况)
    • 输出:扣款比例(计算结果)
  • 必须穷举所有可能组合(年薪×4种错误情况 + 月薪×4种错误情况)
    • 年薪制组合:
      • 不犯错误:0%
      • 仅普通:2%
      • 仅严重:6%
      • 两种都犯:8%(2%+6%)
    • 月薪制组合:
      • 不犯错误:0%
      • 仅普通:4%
      • 仅严重:8%
      • 两种都犯:12%(4%+8%)

决策表适用范围

决策表一般适用于多种输入存在组合的情况。当存在多个输入,且这些输入之间有各种组合情况时,适合使用决策表。

局限性: 决策表可能导致用例数量爆炸。因为每个输入可能有多种情况,当输入数量增多时,组合情况会呈指数级增长,导致用例数量庞大。

实现均匀覆盖策略

无效等价类应用

需求分析的步骤
  • 收集文档: 需求分析的第一步是收集相关的文档资料。
  • 研读文档: 在收集完文档后,需要仔细研读这些文档,理解其中的内容和要求。
  • 提出问题: 在研读文档的过程中,会产生很多疑问或不明确的地方,需要将这些问题提出来。
  • 整理信息: 将提出的问题以及从文档中获取的信息进行整理,以便后续使用。
  • 功能拆分: 将软件需要实现的所有功能进行拆分,包括大功能和小功能。
  • 信息合并: 将之前整理的信息与功能拆分的结果进行合并,形成完整的需求理解。
  • 编写测试点: 根据需求理解,编写测试点,用于后续的测试工作。测试点可以综合使用场景法、等价类边界值、决策表和错误猜测等方法进行编写。
  • 需求评审: 需求分析的最后一步是进行评审,确保需求理解的准确性和完整性。
需求评审的质量要求
  • 正确性: 需求必须与用户说法一致,确保没有错误的需求描述。
  • 完备性: 需求必须完整无遗漏,避免出现需求缺失的情况。
  • 易理解性: 需求文档要让其他部门和测试人员都能轻松理解,表述必须清晰明确。
  • 一致性: 需求前后描述要一致,不同部门间的理解也要保持一致,避免出现矛盾。
  • 可行性: 需求必须实际可行,如测试资源不足时要及时调整需求(例如公司只有一个路由器时不应影响正常业务)。
  • 可修改性: 需求之间应保持适当关联,修改一个需求时不应导致其他需求大面积受影响。
  • 可测试性: 每个测试点都必须具备可执行性,这是最基本的要求。
  • 可追溯性: 所有需求和测试点都要有明确依据,不能凭空猜测或不合情理。

测试计划

测试计划的定义与原则

  • 文档性质: 测试计划是指导测试过程的纲领性文档,用于统一团队认识并规划测试过程
  • 核心功能: 规定测试范围、途径、资源和进度安排,确认测试项、被测特征、测试任务、人员安排及风险预案
  • IEEE定义: 叙述预定测试活动的范围、途径、资源及进度安排的文档(1983年标准)
  • 实际作用: 避免测试工作无序进行,明确各阶段任务(如需求分析时长、测试顺序等)

测试计划的编写原则

  1. 明确测试的目标,增强测试计划的实用性
    核心原则:测试计划不是形式文档,而是后续测试工作的指导依据,必须注重实际可操作性
    指导性:测试工作的每一步都将按照计划执行,因此计划内容必须清晰明确
    目标导向:需要清楚界定测试的具体要求和预期目标
坚持"5W"规则,明确内容与过程
  • What(内容):明确测试范围,如测试登录功能还是注册功能
  • Why(目标):确定测试类型,如功能测试、性能测试或可用性测试
  • When(时机):既指测试进度安排,也包含测试环境等前提条件准备
  • Where(环境):详细说明所需的硬件、软件配置要求
  • How(方法):规定测试采用的技术方法,如黑盒/白盒测试
  • Who(人员):可额外增加的人员安排说明,实际工作中常与When合并考虑
测试计划的主要内容
  • 确定测试资源: 明确所需的人力资源、硬件资源和软件资源。
  • 工作量估算、里程碑和进度安排: 评估测试工作量,设定关键节点和整体时间表。
  • 风险分析: 识别测试过程中可能遇到的风险,并制定相应的应对措施。
  • 制定测试策略: 根据测试需求和目标,选择合适的测试方法和技术。
  • 编写计划书: 将上述内容整合成文档,作为测试工作的指导和依据。

风险识别

风险评估和风险控制

测试策略
  • 测试策略定义: 测试策略是描述当前测试项目的目标,以及所采用的测试方法。它宏观地概述了测试的内容、方法、阶段和类型。
  • 包含内容:
    • 测试目标和方法。
    • 规定时间内要完成的测试内容。
    • 软件产品的特性或质量在哪些方面得到确认。
    • 不同测试阶段(单元测试、集成测试、系统测试)的测试对象、范围和方法。
    • 每个阶段内所要进行的测试类型(功能测试、性能测试、压力测试等)。
分阶段的测试策略
  • 分阶段策略: 将测试分为多个阶段,如单元测试、集成测试、系统测试等。
  • 单元测试: 早期发现问题,保证代码质量。
  • 集成测试: 尽早地发现更多问题,准备自动化测试的BVT(Build Verification Test)。
  • 系统测试: 验证整个软件系统的功能和性能。
  • 优点: 能够在早期发现问题,减少后期修复成本。
  • BVT(Build Verification Test):
    • 目的: 验证最新软件版本的功能是否完整,主要软件特性是否正确实现。
    • 优点: 时间短,快速反馈问题。
    • 缺点: 覆盖率较低,不能替代全面的测试。
  • 不能忽略的测试: 安全性测试、可用性测试、配置测试和数据完整性测试。
  • 制定更为详细的UAT(用户验收测试)计划
    UAT测试计划:
    与测试脚本和培训材料一起提供给用户。
    帮助用户快速提高并完成任务。
    包含内容:
    详细的测试步骤。
    用户验收的标准和流程。
    培训材料和用户指导。
  1. 测试计划书的编写
    测试计划书:
    是一个过程,不仅仅是“测试计划书”这样一个文档。
    随着项目进展不断更新和完善。
    内容:
    测试目标。
    测试方法。
    测试资源分配。
    测试时间安排。
    风险管理和应对措施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IEC 61347-1:2015 灯控制装置安全标准详解

IEC 61347-1:2015灯控制装置安全标准详解 IEC 61347-1:2015 是国际电工委员会(IEC)发布的灯控制装置第1部分:通用要求和安全要求的核心标准,为各类照明用电子控制设备设定了全球通用的安全基准。该标准适用于独立式或内置于灯具/…

从 GPT 的发展看大模型的演进

这是一个技术爆炸的时代。一起来看看 GPT 诞生后,与BERT 的角逐。 BERT 和 GPT 是基于 Transformer 模型架构的两种不同类型的预训练语言模型。它们之间的角逐可以从 Transformer 的编码解码结构角度来分析。 BERT(Bidirectional Encoder Representatio…

多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现

多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现 目录 多目标粒子群优化算法(MOPSO),用于解决无人机三维路径规划问题,Matlab代码实现效果一览基本介绍…

贪心算法应用:集合覆盖问题详解

贪心算法与集合覆盖问题详解 贪心算法在组合优化问题中展现出独特优势,集合覆盖问题(Set Cover Problem)是其中的经典案例。本文将用2万字全面解析贪心算法在集合覆盖/划分中的应用,涵盖算法原理、正确性分析、Java实现、复杂度证…

MCP:让AI工具协作变得像聊天一样简单 [特殊字符]

想象一下,你正在处理一个项目,需要从A平台查看团队讨论,从B平台获取客户信息,还要在GitHub上检查代码进度。传统做法是什么?打开三个不同的网页,在各个平台间来回切换,复制粘贴数据,最后还可能因为信息分散而遗漏重要细节。 听起来很熟悉?这正是当前工作流程的痛点所…

docker不用dockerfile

好的!既然你不想使用 Dockerfile,我们就完全不写 Dockerfile,改用你 Leader 提到的思路: 用基础镜像启动一个容器 → 手动在容器里安装依赖和复制项目 → 保存为新镜像 这个方式更直观,就像“你进入容器自己配置环境&a…

React与Vue核心区别对比

React 和 Vue 都是当今最流行、功能强大的前端 JavaScript 框架,用于构建用户界面。它们有很多相似之处(比如组件化、虚拟 DOM、响应式数据绑定),但也存在一些核心差异。以下是它们的主要区别: 1. 核心设计与哲学 Rea…

强化学习-深度学习和强化学习领域

在深度学习和强化学习领域,SFT(Supervised Fine-Tuning) 和 GRPO(可能指 Gradient-based Policy Optimization 或 Reinforcement Learning with Policy Optimization)是两种不同的训练范式,常用于模型微调或…

在 ABP VNext 中集成 Serilog:打造可观测、结构化日志系统

🚀 在 ABP VNext 中集成 Serilog:打造可观测、结构化日志系统 📚 目录 🚀 在 ABP VNext 中集成 Serilog:打造可观测、结构化日志系统1. 为什么要使用结构化日志? 🤔2. 核心集成步骤 &#x1f6e…

API异常信息如何实时发送到钉钉

#背景 对于一些重要的API,开发人员会非常关注API有没有报错,为了方便开发人员第一时间获取错误信息,我们可以使用插件来将API报错实时发送到钉钉群。 接下来我们就来实操如何实现 #准备工作 #创建钉钉群 如果已有钉钉群,可以跳…

Stone 3D新版本发布,添加玩家控制和生物模拟等组件,增强路径编辑功能,优化材质编辑

后续版本号改为构建日期加小版本,所以最新版本为20250603.01 功能更新如下: 1. 改写fps-controls组件,简化游戏应用的创建,你只需要一个场景glb,然后给Scene节点添加fps-controls组件,即可完成一个第一人…

【C++11】折叠引用和完美转发

目录 一. 前言二. 引用折叠引用折叠的规则 三. 完美转发完美转发适用场景完美转发底层实现思考1思考2 一. 前言 在函数传参时,如果想保持某个参数的属性不改变,需要完美转发,而完美转发的实现需要折叠引用的帮助 二. 引用折叠 在语法上&am…

Vue 树状结构控件

1、效果图如下所示&#xff1a; 2、网络请求的数据结构如下&#xff1a; 3、新建插件文件&#xff1a;menu-tree.vue&#xff0c;插件代码如下&#xff1a; <template><div class"root"><div class"parent" click"onParentClick(pare…

洛谷P12610 ——[CCC 2025 Junior] Donut Shop

题目背景 Score: 15. 题目描述 The owner of a donut shop spends the day baking and selling donuts. Given the events that happen over the course of the day, your job is to determine the number of donuts remaining when the shop closes. 输入格式 The first …

数据挖掘顶刊《IEEE Transactions on Knowledge and Data Engineering》2025年5月研究热点都有些什么?

本推文对2025年5月出版的数据挖掘领域国际顶级期刊《IEEE Transactions on Knowledge and Data Engineering》进行了分析&#xff0c;对收录的62篇论文的关键词与研究主题进行了汇总&#xff0c;并对其中的研究热点进行了深入分析&#xff0c;希望能为相关领域的研究人员提供有…

华为OD机试真题——最小的调整次数/特异性双端队列(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 B卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调整次数/特异性双端…

2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测

目录 1.端午快乐2.摘要3.灰狼算法GWO原理4.改进策略5.结果展示6.参考文献7.代码获取8.读者交流 1.端午快乐 今天端午节&#xff0c;祝各位朋友端午安康&#xff0c;阖家平安&#xff01; 2.摘要 无线传感器网络&#xff08;WSNs&#xff09;是一种被广泛应用的新兴技术&…

ADI硬件笔试面试题型解析下

本专栏预计更新60期左右。当前第17期-ADI硬件. ADI其硬件工程师岗位的招聘流程通常包括笔试和多轮技术面试,考察领域涵盖模拟电路设计、数字电路、半导体器件和信号处理等。 本文通过分析平台上的信息,汇总了ADI硬件工程师的典型笔试和面试题型,并提供详细解析和备考建议,…

SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入

可重入 Redisson 的锁支持 可重入性&#xff0c;这意味着同一个线程在获取锁后&#xff0c;如果再次尝试获取该锁&#xff0c;它可以成功地获得锁&#xff0c;而不会被阻塞。 每次一个线程成功获取锁后&#xff0c;它的持有次数会增加。当线程再次获取该锁时&#xff0c;Redi…

Java 中 Redis 过期策略深度解析(含拓展-redis内存淘汰策略列举)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Java 中 Redis 过期策略深度解析一、Redis 过…