验证与确认示例
在软件测试中,验证和确认有什么区别?
术语“验证”和“确认”经常在测试环境中使用。大多数情况下,我们会错误地混淆这两个词,尽管它们实际上截然不同。
V&V(验证与确认)任务分为两类:
符合规范(生产者对质量的看法)
适合使用(消费者对质量的看法)
简而言之,开发人员对完成产品的印象被称为**生产者对质量的看法**。
用户对完成产品的看法被称为**消费者对质量的感知**。
在执行V&V任务时,我们必须牢记这两种质量视角。
让我们首先定义验证和确认,然后我们将看一些例子来帮助我们理解这些词。
**注意** - 这些定义来自QAI的CSTE CBOK(查看此链接以了解更多关于CSTE的信息)。
什么是验证以及它是如何工作的?
验证是审查软件开发生命周期中的中间工作产品以确保我们正朝着完成最终结果的方向前进的过程。
换句话说,验证是评估软件中间产品以查看它们是否满足在阶段开始时设定的要求的过程。
现在的问题是,什么是 *确切的* 中间产品?
这些可能包括文档,例如需求规格说明、设计文档、数据库表设计、ER图、测试用例、可追溯性矩阵等等,这些文档是在开发阶段创建的。
我们经常忽略审查这些文档的必要性,但我们应该记住,审查可能会发现许多隐藏的缺陷,如果在开发周期的后期发现或解决这些缺陷,可能会非常昂贵。
验证使用审查或非可执行技术来确保系统(软件、硬件、文档和人员)符合组织的标准和程序。
验证发生在哪里?
以下是IT项目中进行验证的一些领域(我必须强调这不是一个详尽的列表)。
验证情况 | 参与者 | 定义 | 输出 |
---|---|---|---|
业务/功能需求 | 与开发团队和客户一起审查业务需求。 | 这是一个关键步骤,以确保需求已被获取和/或准确,以及确定它们是否现实。 | 这些需求已最终确定,并准备被下一个阶段——设计所采用。 |
设计评审 | 开发团队 | 设计创建后,开发团队会对其进行全面评估,以确保可以使用所呈现的设计满足功能需求。 | 该设计已准备好集成到IT系统中。 |
代码走查 | 个体开发者 | 代码编写后,会检查是否存在任何语法错误。这是一项更非正式的任务,由个体开发人员对其自己的代码执行。 | 现在可以使用此代码进行单元测试。 |
代码审查 | 开发团队 | 这是一个更正式的配置。主题专家和开发人员审查代码,以确保它符合软件的商业和功能目标。 | 该代码现在可用于测试。 |
测试计划评审(QA团队内部) | QA团队 | QA团队内部审查测试计划,以确保其正确且全面。 | 可以与其他团队(项目管理、业务分析、开发、环境、客户等)共享的测试计划文档。 |
测试计划(外部) | 项目经理、业务分析师和开发人员 | 对测试计划文档进行正式审查,以确保QA团队的时间表和其他因素与其他团队和整个项目保持同步。 | 签署或授权的测试计划文档将用于执行测试活动。 |
测试文档评审 | QA团队 | 同行评审是指团队成员互相检查彼此的工作,以确保文档中没有错误。 | 测试文档已完成,并准备与其他团队共享。 |
测试文档最终评审 | 业务分析师和开发团队 | 审查测试文档,以确保测试用例涵盖了系统的所有业务情况和功能特性。 | 测试文档已完成并准备运行。 |
什么是确认以及它是如何工作的?
确认是评估完成的产品以查看它是否符合业务需求的过程。换句话说,我们每天进行的测试执行本质上是一项确认活动,包括冒烟测试、功能测试、回归测试、系统测试等等。
确认包括所有类型的测试,这些测试都包含与产品交互并对其进行测试。
以下是确认程序:
- 单元测试
- 集成测试
- 系统测试
- 用户验收测试
确认通过执行一系列可以查看和评估的测试来验证系统是否遵循计划。
验证和确认的例子
现实生活中考虑这种情况:你去餐馆点蓝莓煎饼。当服务员端上食物时,你如何确定端上来的食物是你点的吗?
当我们看它的时候,首先注意到的是:
- 食物是你期望煎饼的样子吗?
- 周围有蓝莓吗?
- 它们有正确的味道吗?
可能更多,但你明白了。
另一方面,如果你需要确定这道菜正是你预期的,你必须吃它。
当你还没有吃,但想通过回顾主题来仔细检查一些事情时,验证是可行的方法。当你验证产品时,你实际上会食用它以验证它是否正确。
开发过程各个阶段的V&V
在开发生命周期的每个步骤中,都会进行验证和确认。
让我们仔细看看它们。
V和V任务 - 计划阶段
- 合同验证。
- 概念文档评估。
- 进行风险评估
需求阶段 – V & V任务
- 评估软件需求。
- 评估和分析接口。
- 创建系统测试计划。
- 创建验收测试策略。
设计阶段V&V任务
- 软件设计评估。
- 接口(UI)的评估/分析。
- 创建集成测试计划。
- 创建组件测试计划。
- 创建测试设计。
V&V任务 - 实现阶段
- 源代码评估。
- 文档评估。
- 创建测试用例。
- 创建测试过程。
- 执行组件测试用例。
V&V任务 - 测试阶段
- 执行系统测试用例。
- 执行验收测试用例。
- 更新可追溯性指标。
- 风险评估
V&V任务 - 安装和检查阶段
- 安装和配置审核。
- 安装候选版本的最终测试。
- 创建最终测试报告。
V&V任务 - 操作阶段
- 评估新的约束条件。
- 评估拟议的修改。
V&V任务 - 维护阶段
- 评估异常情况。
- 迁移评估。
- 评估重试特性。
- 评估拟议的修改
- 验证生产中的问题。
确认和验证的区别
验证 | 确认 |
---|---|
检查中间产品以查看它们是否满足该阶段的特定要求。 | 检查最终产品以查看它是否满足公司的要求。 |
检查产品是否根据要求和设计规范构建。 | 它评估软件是否适合使用并满足公司的要求。 |
检查“我们是否正在正确地创建产品?”。 | 检查“我们是否正在开发正确的产品?”。 |
这是在不运行程序的情况下完成的。 | 通过软件的执行完成。 |
包括所有静态测试方法。 | 包括所有动态测试方法。 |
审查、检查和走查只是一些例子。 | 各种测试,例如冒烟测试、回归测试、功能测试、系统测试和UAT,都是例子。 |
何时应该使用验证和确认?
这些是独立的流程,应该协同使用,以确保系统或应用程序满足要求和规范,并实现其预期目的。两者都是质量管理体系的关键要素。
产品通过验证步骤但未能通过验证阶段的情况并不少见。然而,尽管它满足了书面的标准和规范,但这些标准却无法满足用户的需求。因此,必须对这两个类别进行测试,以确保整体质量。
在开发、规模化或生产中,验证可以用作内部程序。另一方面,验证应作为外部程序使用,以获得利益相关者对适用性的批准。
用户验收测试 (UAT) 是验证还是确认?
验证应包括 UAT(用户验收测试)。它是系统或应用程序的现实世界验证,由实际用户执行,以确定系统是否“适用”。
结论
V&V 流程评估特定活动的产品是否符合标准并适合其预期用途。
最后,需要记住以下几点:
为避免任何误解,请记住,验证是指审查活动或静态测试方法,而验证是指实际测试执行活动或动态测试方法。
验证过程中可以使用或不使用产品。验证肯定需要产品。有时可以在反映最终系统的文档上进行验证。
测试人员不必完成所有验证和确认工作。正如本文前面提到的,其中一些工作由开发人员和其他团队处理。