在软件测试中学习 V-Model

V-Model 是一种高度严格的 SDLC 模型,其中每个开发阶段之后都有一个测试阶段。V 模型是瀑布模型的变体,其中测试与每个阶段的开发同步进行

软件工程术语

  • 软件开发生命周期 (SDLC) - SDLC 代表软件开发生命周期。开发人员执行一系列任务以创建和构建高质量的软件。

  • 软件测试生命周期 (STLC) - 是软件测试生命周期的首字母缩写词。它是由测试人员有条不紊地执行以测试您的软件产品的一组任务。

  • 瀑布模型- 瀑布范式是将软件开发活动分为几个阶段的顺序模型。每个阶段都旨在用于特定活动。在瀑布范例中,测试过程仅在系统实施后才开始。

为了理解 V-Model,让我们举个例子。

假设您的任务是为客户创建定制软件。无论您的技术经验如何,尝试对完成工作所需采取的行动顺序做出有根据的预测。

这是正确的顺序。

软件开发周期的各个阶段在每个步骤中进行的活动
Requirement Stage of gathering从客户那里获得尽可能多的关于必要程序的细节和规格的信息。这是收集需求的阶段。
Stage 1: Design规划编程语言(Java、PHP、.net)以及数据库(Oracle、MySQL等)。这将适用于项目,以及某些高级架构和功能。
Build Stage在设计阶段之后,构建步骤开始,这无非是软件的实际编码。
Stage of testing之后,您测试软件以确保它是根据客户的规格构建的。
Stage of deployment在适当的环境中安装程序。
Maintenance Stage一旦您的系统准备好使用,如果客户要求,您可能需要更改代码。

软件开发的瀑布技术由所有这些层组成。

瀑布模型的缺点

如您所见,模型的测试仅在实现完成后才开始。

但是,如果您正在处理具有复杂系统的大型项目,则很容易在需求阶段忽略重要方面。在这种情况下,客户将收到完全错误的产品,您可能必须重新启动项目。或者,如果您正确地记录了需求,但在软件的设计和体系结构中犯了严重错误,则必须重新设计整个软件以纠正错误。

根据对数百个项目的评估,在需求和设计过程中引入的问题约占所有缺陷的一半。

此外,随着开发生命周期的推进,修复故障的成本也会增加。在生命周期中,越早发现缺陷,纠正它的成本就越低。俗话说“一针及时救九针”。

V 模型就是答案。

为了解决这个问题,我们创建了测试的 V 模型,其中包括针对开发生命周期的每个阶段的测试阶段。

V-model的验证阶段分为很多阶段

  • 单元测试- 单元测试计划 (UTP) 在 V 模型的模块设计过程中创建。这些 UTP 用于在代码或单元级别查找和修复问题。单元是可能独立存在的最小事物,例如程序模块。当与其他代码/单元分开时,单元测试确认最小的对象可以适当地执行。

  • 组件测试- 这些测试确保程序中最小的组件正常工作。组件可以是模块、单元或类,具体取决于编程语言。因此,这些测试将被称为模块测试、单元测试或类测试。组件测试根据组件规范在提供输入后检查组件的输出。这些是 BDD 的测试驱动方法的特性文件。组件测试的特点是单独评估单个组件,而不与其他组件进行通信。因为不涉及额外的组件,所以发现问题要容易得多。

    通常,使用测试框架来实现测试,例如 JUnit、CPPUnit 或 PyUnit,仅举几个突出的单元测试框架。可以使用我们的代码覆盖率分析工具 Coco 监控和检查代码覆盖率,以确保测试覆盖尽可能多的组件源代码。

    除了功能测试(例如代码复杂性、适当的文档)之外,组件测试还可以涵盖非功能性因素,例如效率(例如,存储消耗、内存消耗、程序计时等)和可维护性。Coco 的代码复杂度分析和功能分析器也可以协助完成这些任务。

  • 集成测试- 集成测试确保单独设计和测试的组件可以按计划进行组合和交互。一个软件系统的测试可能只涵盖两个单独的组件、组件组,甚至是单独的子系统。在较低的组件测试级别对组件进行评估后,通常会完成集成测试。功能定义、系统架构、用例和流程描述都可以用于创建集成测试。集成测试侧重于组件接口(或子系统接口),并揭示由它们的交互引起但如果单独测试组件则不会触发的缺陷。

    集成测试还可能侧重于与应用程序环境交互的其他软件或硬件组件。与组件集成测试相反,这通常称为系统集成测试。

    测试驱动程序也可能是一个单元测试框架,这取决于程序的类型。我们的 Squish GUI Tester 可以运行 GUI 应用程序的测试。与被测应用程序一起,Squish 可以自动化子系统或外部系统,例如配置工具。

  • 系统测试- 系统测试步骤检查整个软件系统。系统测试是从用户的角度构建的,关注功能和非功能应用程序需求,而集成测试主要关注技术规范。性能、负载和压力测试是后者的例子。

    尽管已经评估了组件及其集成,但仍需要进行系统测试以确保满足功能软件要求。如果不执行整个软件系统,则根本无法评估某些功能。其他文件,例如用户手册或风险分析文档,经常包含在系统测试中。

    系统测试应在尽可能接近生产环境的环境中进行。如果可行,使用与生产系统相同的硬件、操作系统、驱动程序、网络基础设施或外部系统,并尽可能避免使用占位符。另一方面,生产环境不应该用作测试环境,因为在系统测试过程中发现的任何问题都可能影响生产系统。

    为了避免耗时的手动测试,系统测试应该自动化。由于图像识别和光学字符识别,Squish 现在可以自动化任何 GUI 程序并触发和馈送非 GUI 进程。除了通过 GUI 验证应用程序输出之外,Squish 还可以访问存在于 GUI 和非 GUI 对象中的内部应用程序数据。在单个自动化测试中测试多个应用程序,即使它们使用不同的 GUI 工具包;嵌入式设备测试;访问外部系统,如数据库系统;和半自动测试,包括手动验证和确认,涵盖了大部分系统测试要求。

  • 验收测试- 内部验收测试,例如,尚未发布的软件版本,是可能的。内部验收测试通常由不参与开发或测试过程(例如产品管理、销售或客户服务)的人员执行。

    另一方面,验收测试可能是由要求开发的公司或软件的最终用户执行的外部测试。

    在客户验收测试期间,决定程序的最终版本是否符合高级标准也可能是客户的工作,部分或全部。编写报告是为了跟踪测试结果并促进开发实体与客户之间的沟通。

    与客户验收测试相比,用户验收测试 (UAT) 可能是最终软件发布之前的倒数第二个阶段。这是一个以用户为中心的测试,以确保产品真正支持需要完成的工作流程。这些测试可能包括可用性和整体用户体验等因素。

    根据软件的类型,在验收测试上花费的时间和精力可能会有所不同。可以对为特定客户创建的定制开发进行广泛的测试和报告。对于现成的软件,这个测试阶段的工作量较少,验收测试可能只包括确认安装和一些程序。

    验收测试通常是手动测试,其中只有一小部分是自动化的,特别是因为它们可能只在开发过程结束时运行一次。另一方面,验收测试侧重于流程和用户交互,因此我们提倡使用 Squish 自动化验收测试。所有利益相关者都可以将 BDD 用作单一语言和规范。考虑在软件生命周期的整个过程中或敏捷项目中的多次迭代中对许多软件版本进行验收测试所花费的时间和精力。从中长期来看,测试自动化将为您节省大量时间。

除了 V 模型,还有迭代开发方法,其中软件分阶段开发,每个阶段添加一个新功能。

每个阶段都包含自己的一组开发和测试任务。

快速应用程序开发和敏捷开发是迭代开发生命周期的两个很好的例子。

什么时候应该使用 V-Model?

  • 当有明确和明确的要求时。

  • V 型模型应用于具有明确定义和固定要求的中小型项目。

  • 当具有所需技术技能的样本技术资源可用时,应使用 V 型模型。

V 模型的好处(优点)

  • 简单易懂。

  • 计划和测试设计等测试方法发生在编码之前。

  • 这可以帮助您节省大量时间。因此,它比瀑布模型更有可能成功。

  • 防止瑕疵向下流动。

  • 这种方法适用于标准简单的小型计划。

V 模型的缺点(缺点)

  • 极其坚硬和不灵活。

  • 这对于大型项目来说并不理想。

  • 没有早期的软件原型,因为它是在实施阶段开发的。

  • 如果中间有任何修改,则必须更新测试文档以及所需的论文。

结论

有多种开发生命周期模型可供选择。用于项目的开发模型由项目的目标和目标决定。

  • 测试不是一项独立的活动,它必须适合项目的开发过程。

  • 测试应该在任何模型的所有级别进行,从需求到维护。