`
CJxixi
  • 浏览: 106724 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

软件测试:V模型/X模型/H模型

阅读更多

X模型的目标是弥补V模型的一些缺陷。X模型真的能解决测试过程各方面的问题,例如交接、经常性的集成?

在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。在《软件测试:不可忽略的阶段》中已经详细讨论了V模型,这里只作一个概要的介绍。

V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。

user posted image





在V模型中,单元测试是基于代码的测试,最初由开发人员执行,以验证其可执行程序代码的各个部分是否已达到了预期的功能要求;

集成测试验证了2个或多个单元之间的集成是否正确,并有针对性地对详细设计中所定义的各单元之间的接口进行检查;

在所有单元测试和集成测试完成后,系统测试开始以客户环境模拟系统的运行,以验证系统是否达到了在概要设计中所定义的功能和性能;

最后,当技术部门完成了所有测试工作后,由业务专家或用户进行验收测试,以确保产品能真正符合用户业务上的需要。

尽管很多人对V模型表示了否定,但很少有人真正详细地讨论这些问题。Brian Marick(《The Craft of Software Testing (Prentice Hall, 1995)》一书的作者)曾如此表示。在STAR2000 (Software Testing Analysis and Review) 东部会议上,Marick曾经和Dorothy Graham(本系列文章的另一位作者)进行过一场论争,并在其个人网站www.testing.com上对V模型提出过一些中肯的反对意见。


X模型


Marick曾提出过一些观点和意见,其中首先是Marick不建议要建立一个替代模型。这里我很冒昧地引用了一些 Marick的想法,并重新经过组织,形成了“X模型”。其实并不是为了和V模型相对应而选择这样的名字,而是由于其它一些原因:X通常代表未知,而 Marick也认为他的观点并不足以支撑一个模型的完整描述,但其中已经有一个模型所需要的一些主要内容,其中也包括了象探索性测试(exploratory testing)这样的亮点。我还需要在使用文字方面也向Marick道歉,因为认同Marick观点的无疑大多属于X一代(X一代)。另外,我勾画了一张X形状的示意图,我相信该图能够很好地以另一种表达形式来体现Marick的观点。




由于X模型从没有被文档化,其内容一开始需要从在V模型的相关内容中进行推断,这在Marick的相关文章中已有体现。这里关于X模型的论述比较简短,因为它还没有完全从文字上成为V模型的全面扩展,而且我不想在这里重复在《软件测试:不可忽略的阶段》文章中所提到的很多测试技术的概念。

Marick对V模型的最主要批评是V模型无法引导项目的全部过程。他认为一个模型必须能处理开发的所有方面,包括交接,频繁重复的集成,以及需求文档的缺乏等等。


解决交接和频繁集成的周期的问题


Marick 认为一个模型不应该规定那些和当前所公认的实践不一致的行为。我也很认同这一点。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。(右上半部分),这些可执行程序还需要进行测试。已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。

由上图中可见,X模型还定位了探索性测试(右下方)。这是不进行事先计划的特殊类型的测试,诸如“我这么测一下结果会怎么样?”,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。Marick虽然没有对此进行明确的说明,但一定很乐意看到该方法的界定。

然而,关注于这样的低级别的行为可能会引起不同的议论。一个模型和一个单独的项目计划有所不同。模型不应该描述每个项目的具体细节,模型应该对项目进行指导和支持。当然,代码的交接也可以简单地认为是一种集成的形式。而V模型也并没有限制各种创建周期的发生次数。


H模型

h模型的示意图仅仅演示了在整个生产周期中,某个(测试)层次上的一次测试“微循环”。图中的“其他流程”可以是任意的开发流程,例如设计流程和编码流程,也可以是其他非开发流程,甚至是测试流程自身。向上的三
角箭头表示,在某个时间点,由于“其他流程”的进展而(由于先后关系)引发或者(由于因果关系)触发了测试就绪点,这个时候,只要测试准备活动完成,测试执行活动就可以(或者说,需要)进行了。
概括而言,h模型揭示了
1、 软件测试不仅仅指测试的执行,还包括很多其他的活动;
2、 软件测试是一个独立的流程,贯穿产品的整个周期,与其他流程并发的进行;
3、 软件测试要尽早准备,尽早执行;
4、 软件测试根据被测物的不同是分层次的,不同层次的测试活动可以是按照某个次序先后进行的,也可能是反复的。

采用h测试模型的三个理由
1、有利于测试的分工,从而降低成本,提高效率。
首先,h模型强调软件测试准备和测试执行分离。准备阶段和执行阶段有不同的测试活动,例如,测试准备活动,包括测试需求分析、测试计划、测试分析、测试编码、测试验证等等,而测试执行活动,则包括测试运行、测试报
告、测试分析等等。准备阶段和执行阶段有不同的工作侧重点,不同的测试活动也需要不同的知识和技能。显而易见,测试的设计人员比执行人员有更高的能力要求,不同的岗位可以聘用不同的人员。如果一个测试设计人员同时
被指派去执行测试,那既是人力资源的浪费,也可能挫伤设计人员的创造性合积极性。所以,软件测试分工带来的第一个直接好处就是降低人力成本。第二个直接好处就是提高效率。分工带来的间接的长期的好处是,软件测试可
以成为一个有职业前景的职位,这有利于吸引人才以此作为自己的职业生涯,从而形成软件测试领域的人力积累和良性循环。
2、有利于认识到测试的复杂性,从而赢得重视和尊重。
H模型可以促使人们充分认识到软件测试的复杂性。这儿的复杂不是指技术上的复杂,而是指过程上的复杂。正如传统的软件开发被简化为编程一样,软件测试也常常被简化为运行一下被测的软件,观察是否有异常的运行结果
。软件测试也有不同的阶段,有不同的活动,而且这些阶段和活动要被组成一个系统才能有效的运作。没有组织的,非结构化的软件测试除了浪费时间和金钱外,几乎不可能有实质性的产出。认识到复杂性才可能得到足够的重视
和必要的尊重。重视主要来自于管理层,而尊重则主要来自于平行的其它流程的人员,例如编程人员。尽管测试流程是一个独立的流程,但它必须被置于整个软件生产的流程系统中,作为一个有机的组成部分,并与其它流程有效
的交互,才可能发挥作用。
3、有利于了解测试投入的去向,从而得到测试效益的公正评判。
第三个理由与一个长期存在的“测试怪圈”有关。测试经理总是抱怨测试上投入不够;测试人员要么被看作是“无所事事”,要么被看作“忙而无功”;而管理层则因为测试上的投入没有一个可视的结果而拒绝加大投入;更糟
糕的是,用户在投诉软件的质量问题,组织的声誉和利润都每况愈下。H模型并不能扭转这种糟糕的局面,但它有助于跟踪测试投入的流向,例如,在各个测试活动上的投入分别有多少,比例是否合理,哪些是用于测试准备的,
而如果由于其它流程的差错导致重做准备,那么浪费的投入有多少。在h模型中,测试是一个有组织的、结构化的独立流程,既保证了自身的有序和结构清晰,也保证了流程之间的“界面”清晰。这样,软件测试就不是一笔糊涂
帐,才可能得到公正的投入-产出的评判,软件测试才可能避免成为“出气筒”和“替罪羊”的“宿命”。


分享到:
评论

相关推荐

    软件测试:V模型问题分析[4]

    软件测试:V模型问题分析[4]软件测试在这种情况下,左边的方块中最好被标记为:“在当前信息条件和情况下可以做的任何测试设计”。这样,当测试设计得自于系统中某一个组件的描述时,模型必须允许这样的测试在组件被...

    软件测试:V模型问题分析[1]

    软件测试:V模型问题分析[1]软件测试在本文中我要把V模型作为不好的模型的典型来进行分析。选择V模型作为分析的典型是因为V模型是最广为人知的测试模型。最典型的V模型版本一般会在其开始部分对软件开发过程进行描述...

    软件测试:V模型,还是X模型?

    在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和...

    软件测试:V模型问题分析[3]

    软件测试:V模型问题分析[3]软件测试到底选择哪一种方法,这需要一种折衷和权衡。设计桩模块和驱动模块要付出多少代价?这些模块如何进行维护?子系统是否会由此而掩盖了一些故障?在整个子系统范围内进行排错的困难...

    软件测试模型简介

    "软件测试模型简介" 软件测试模型是软件开发过程中不可或缺的一部分,它是软件开发的重要组成部分。软件测试模型的出现是为了更好地指导软件测试实践,提高软件开发的效率和效果。下面,我们将对主要的软件测试模型...

    3D模型-画

    而“0白.jpg”和“0黑.jpg”可能是测试图片或者用于色彩校准的图片,它们可以帮助用户在不同的背景下预览3D模型的效果。最后,“无框画--黑白树.max”可能是实际的3D模型文件,.max文件是Autodesk 3ds Max软件的原生...

    Unet眼底血管图像分割数据集+代码+模型+系统界面+教学视频.zip

    本资源配套对应的视频教程和图文教程,手把手教你使用Unet做眼底图像分割的训练、测试和界面封装,包含了Unet原理的解析、处理好的训练集和测试集、训练和测试的代码以及训练好的模型,并封装为了图形化界面,只需...

    testcafe_pom:具有页面对象模型结构的TestCafe项目

    具有页面对象模型的TestCafe项目 该自动化项目将验证以下AUT: https://www.saucedemo.com/ : https://www.saucedemo.com/ 先决条件 Github帐户,用于克隆和管理此存储库文件。 为JavaScript运行时环境和程序包管理...

    软件测试:V模型问题分析[2]

    软件测试:V模型问题分析[2]软件测试V模型有着很吸引人的对称外形,并且把很多人都带入了歧途。本文将集中讨论它在单元测试和集成测试中引起的问题。为了说明的方便,这里专门制作了以下图片,图中包括一个单独的...

    测试模型的V模型,W模型,X模型,H模型.doc

    X 模型和 H 模型也都是软件测试模型的变种,X 模型是 V 模型的改进版本,H 模型是将测试活动分为多个级别,每个级别都有其特定的测试目标和方法。 软件测试模型是软件开发过程中的重要组成部分,它们之间的关系是...

    软件测试模型-V模型

    软件测试模型-V模型软件测试模型-V模型软件测试模型-V模型软件测试模型-V模型

    软件评测师复习资料:有白盒/黑盒测试的方法及分类和软件测试的各种相关术语懂得定义和方法等等。

    软件测试过程模型如V模型、W模型和H模型各有优缺点,V模型强调与开发阶段的对应,W模型提倡测试与开发同步,而H模型则认为测试应独立并贯穿整个产品周期。 单元测试是对软件设计最小单位的模块进行的测试,目的是...

    软件测试双V模型模型示意图

    这是我手工绘制的V&V模型示意图,简单明了

    软件测试模型(参考)

    软件测试模型是指导软件开发过程中测试活动的重要理论框架,它们为测试团队提供了一种结构化的方法来组织和执行测试任务。以下是几种常见的软件测试模型的详细说明: 1. **瀑布模型**:这是一种早期的、线性的开发...

    yolov8训练好的汽车检测模型 ultralytics-main-yolov8-sts-kitti-car-data.zip

    1、yolov8训练好的汽车检测模型,包含训练好的汽车识别权重,从自动驾驶场景KITTI汽车检测数据集训练得到, 3、自动驾驶场景KITTI汽车检测数据集:https://download.csdn.net/download/zhiqingAI/85208797 4、并包含...

    软件测试V模型.doc

    本文主要探讨了两种常见的测试模型:V模型和X模型,这两种模型在软件测试领域具有广泛的影响力。 V模型是软件测试的经典模型,它的特点是形成一个倒V形状,强调测试与开发的对应关系。在V模型中,从左到右依次是...

    软件测试流程,V模型、W模型优缺点.pdf

    软件测试流程、V 模型、W 模型优缺点 软件测试流程是指在规定条件下对产品或程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试可以分为硬件测试、软件测试和嵌入式...

Global site tag (gtag.js) - Google Analytics