转:软件测试模型: V模型,W模型,X模型,H模型

目录

一. 敏捷测试

二. 什么是单元测试?

三. 什么是集成测试?

四. 什么是系统测试?

五. 什么是验收测试?

六. 软件测试模型

1. V模型

2. W模型

3. X模型

4. H模型

七. 测试模型的总结

八. 在实际工作中应灵活地运用各类模型的优点.

先介绍一下 "敏捷开发模型" 的测试模型, 即 敏捷测试, 有以下几个方案.

一. 敏捷测试

1. 不依赖文档.

       由于不依赖文档, 因此要时常和项目组的人沟通 测试人员自己的文档不再需要写测试用例, 而是需要画出思维导图, 将自己的测试点整理出来.

       有些公司虽然使用的是敏捷开发模型, 但要求测试和研发人员要按照传统模型的文档来写, 因为文档十分重要, 是后期了解项目的依据. 因此 测试用例, 需求文档, 研发设计文档都要求按照传统模型进行. 假如一点都不依赖文档, 测试或者开发人员一旦离职, 项目是无法说得清楚的, 因为需求文档和项目差异太大了, 这些变更都在开发人员和测试人员的大脑里, 他们离职了就带走了.

       因此有些公司要求重点写文档. 但有的公司要求其它文档轻, 核心文档重.

2. 迭代周期频繁.

       由于项目迭代周期频繁, 工作量大, 压力大, 因此需要调整自己, 适者生存. 


先介绍一下单元测试, 集成测试, 系统测试, 验收测试的基本概念.

针对一个功能点四类测试所花费的时间(时间从少到多升序): 单元测试< 集成测试< 验收测试=< 系统测试

二. 什么是单元测试?

       单元测试(unit testing), 是指对软件中的最小可测试单元进行检查和验证.

       对于单元测试中单元的含义, 一般来说, 要根据实际情况去判定其具体含义, 如C语言中单元指一个函数, Java里单元指一个类, 图形化的软件中可以指一个窗口或一个菜单. 总的来说, 单元就是人为规定的最小的被测功能模块.

       单元测试是在软件开发过程中要进行的最低级别的测试活动, 软件的独立单元将在与程序的其他部分相隔离的情况下进行测试.

       单元测试(模块测试)是开发者编写的一小段代码, 用于检验被测代码的一个很小的, 很明确的功能是否正确. 通常而言, 一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为.

       单元测试是由程序员自己完成的, 最终受益的也是程序员自己. 程序员有责任编写功能代码, 同时也有责任为自己的代码编写单元测试. 执行单元测试, 就是为了证明这段代码的行为和我们期望的一致. 

三. 什么是集成测试?

        集成测试, 也叫组装测试或联合测试. 在单元测试的基础上, 将所有模块按照设计要求(如根据结构图)组装成为子系统或系统, 进行集成测试.

        实践表明, 一些模块虽然能够单独地工作, 但并不能保证连接起来也能正常的工作. 一些局部反应不出来的问题, 在全局上很可能暴露出来.

        集成测试最简单的形式是: 把两个已经测试过的单元组合成一个组件, 测试它们之间的接口. 从这一层意义上来讲, 组件是指多个单元的集成聚合. 在现实方案中, 许多单元组合成组件, 而这些组件又聚合为程序的更大部分. 方法是测试片段的组合, 并最终扩展成进程, 将模块与其他组的模块一起测试. 最后, 将构成进程的所有模块一起测试. 此外, 如果程序由多个进程组成, 应该成对测试它们, 而不是同时测试所有进程. 

四. 什么是系统测试?

        系统测试(System Testing)是对整个系统的测试, 将硬件, 软件, 操作人员看作一个整体, 检验它是否有不符合系统说明书的地方. 

        这种测试可以发现系统分析和设计中的错误.如安全测试是测试安全措施是否完善, 能不能保证系统不受非法侵入. 再例如, 压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取)等情况下是否还能正常地工作.

        系统测试是将经过集成测试的软件, 作为计算机系统的一个部分, 与系统中其他部分结合起来, 在实际运行环境下对计算机系统进行的一系列严格有效地测试, 以发现软件潜在的问题, 保证系统的正常运行.

五. 什么是验收测试?

        验收测试是部署软件之前的最后一个测试操作. 在软件产品完成了单元测试, 集成测试和系统测试之后, 产品发布之前所进行的软件测试活动. 它是技术测试的最后一个阶段, 也称为 "交付测试".

        验收测试的目的是确保软件准备就绪, 并且可以让最终用户将其用于执行软件的既定功能和任务.

        验收测试是向未来的用户表明系统能够像预定要求那样工作. 经集成测试后, 已经按照设计把所有的模块组装成一个完整的软件系统, 接口错误也已经基本排除了, 接着就应该进一步验证软件的有效性, 这就是验收测试的任务, 即软件的功能和性能如同用户所合理期待的那样.


六. 软件测试模型

软件测试有4个模型: V模型, W模型, X模型, H模型. 

1. V模型

 

V模型每个阶段"测试人员" 的工作:

研发阶段:

  • 研发第一阶段"用户需求"阶段, 测试人员不参与
  • 研发第二阶段"需求分析与系统设计"阶段, 测试人员需要学习需求, 确定测试范围, 并制定测试计划
  • 研发第三阶段"概要设计"阶段, 测试人员需要将测试计划细化.
  • 研发第四阶段"详细设计"阶段, 测试人员不参与. 第三第四阶段测试人员参与度很低, 基本是不参与的
  • 研发第五阶段"编码"阶段, 是V模型里的黄金分割线. 在这个阶段, 测试人员的核心工作是"编写测试用例".

此时, V模型里左边的研发线结束, 下来开始V模型里右边的测试线, 测试线和研发线是一一对应的

测试阶段:

  • 测试第一阶段"单元测试"阶段, 详细设计阶段对应的是单元测试阶段. 这个阶段普通测试人员不参与. 由白盒测试工程师和研发人员参与

       单元测试用的是"白盒测试"方法

  • 测试第二阶段"集成测试"阶段, 集成测试阶段对应的是概要设计阶段, 这个阶段既涉及到了代码, 又涉及到了功能, 因此这个阶段仍然是由白盒测试工程师和研发人员参与.

       集成测试用的是"灰盒测试(白+黑)"方法

  • 测试第三阶段"系统测试"阶段, 是测试人员花费时间最长的阶段.

       这个阶段, 测试人员需要完成的工作有五项: 数据搭建, 环境准备, 测试执行, 缺陷管理, 测试报告的输出

       系统测试用的是"黑盒测试"方法, 人员就是普通功能测试

  • 测试第四阶段"验收测试"阶段

       验收测试用的是"黑盒测试"方法, 测试人员是"用户"

2. W模型

      W模型也可以看做是 "双V模型", 有两个 V, 一个是研发V, 一个是测试V, 将研发和测试的工作并行了起来, 使研发和测试的工作可以同时进行, 因此解决了V模型的三个缺点

研发V中: V模型的左边的阶段是不变的, 黄金分割线是 "编码" 阶段

  1.  右边第一个阶段对应集成测试的是 "集成" 阶段;
  2.  右边第二个阶段对应系统测试的 "实施" 阶段,
  3.  右边第三个阶段对应验收测试的 "交付" 阶段. 交付之后用户才可以验收

测试V中: V模型的右边的阶段是不变的, 黄金分割线是 "单元测试" 阶段

  1.    左边第一个阶段对应用户需求的是 "验收测试准备" 阶段, 为验收测试阶段做准备
  2.    左边第二个阶段对应需求分析与系统的是 "系统测试准备" 阶段, 为系统测试阶段做准备, 提前准备好项目需要用到 的测试工具以测试方法等
  3.    左边第三个阶段对应概要设计的是 "集成测试准备" 阶段, 为集成测试做准备,
  4.    左边第四个阶段对应详细设计的是 "单元测试准备" 阶段, 为单元测试做准备, 需要提前掌握单元测试相关知识, 提前搭建好单元测试框架.

       在V模型中, 用户需求, 概要设计, 详细设计阶段, 测试人员参与度很低, 基本不参与, 但是在W模型中, 测试人员是需要参与的. 测试人员在W模型的所有阶段全程参与.

开发V和测试V的黄金分割线 "编码" 和 "单元测试" 是对应的

  •        对于编码阶段:  在V模型的"编码"阶段中, 测试人员做的工作是 编写测试用例; 而在W模型的"编码"阶段中, 测试人员既要编写测试用例又要单元测试
  •        对于单元测试阶段:  单元测试完成一个模块就可以进行测试. 而在W模型的其他阶段中, 测试人员的工作和 V模型中的工作是一样的, 此处不再赘述.

W模型整体来看也是 "串型"的, 比如没有进行设计, 是无法直接拿着需求进行编码的; 没有编码是不能进行单元测试; 因此,W模型是有缺点的, W模型不适合 "敏捷" 这种需求频繁变更的开发模型.

3. X模型

        X模型是对V模型的改进, X模型提出针对单独的程序片段进行相互分离的编码和测试. 此后通过频繁的交接, 通过集成, 最终合成为可执行的程序.

        X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试, 此后将进行频繁的交接, 通过集成, 最终成为可执行的程序. 然后再对这些可执行程序进行测试. 已通过集成测试的成品可以进行封装并提交给用户, 也可以作为更大规模和范围内集成的一部分. 多根并行的曲线表示变更可以在各个部分发生.

        X模型还定位了探索性测试, 这是不进行事先计划的特殊类型的测试, 这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误. 但这样可能对测试造成人力, 物力和财力的浪费, 对测试员的熟练程度要求比较高.

4. H模型

        H模型中, 软件测试过程活动完全独立, 贯穿于整个产品的周期, 与其他流程并发地进行, 某个测试点准备就绪时, 就可以从测试准备阶段进行到测试执行阶段. 软件测试可以尽早的进行, 并且可以根据被测物的不同而分层次进行.

        H模型揭示了一个原理: 软件测试是一个独立的流程, 贯穿产品整个生命周期, 与其他流程并发地进行. H模型指出软件测试要尽早准备, 尽早执行. 不同的测试活动可以是按照某个次序先后进行的, 但也可能是反复的, 只要某个测试达到准备就绪点, 测试执行活动就可以开展.

七. 测试模型的总结

1. V模型

     V模型是软件开发瀑布模型的变种, 主要反映测试活动与分析和设计的关系;

     局限性: 把测试作为编码之后的最后一个活动, 需求分析等前期产生的问题直到后期的验收测试才能发现

2. W模型

     在V模型的基础上, 增加了开发阶段的同步测试, 形成W模型; 测试和开发同步进行, 有利于尽早发现问题

     局限性: 仍把开发活动看成是从需求开始到编码结束的串型活动, 只有上一阶段完成后, 才可以开始下一阶段的活动, 不能支持迭代, 自发性以及变更调整

3. H模型

     在H模型中, 软件测试过程完全独立, 贯穿整个项目的周期, 与其他流程并发地进行, 某个测试点准备就绪时, 就可以从测试准备阶段进行到测试执行阶段; 软件测试可以进行尽早进行; 软件测试可以根据被测物的不同而分层次进行

八. 在实际工作中应灵活地运用各类模型的优点.

V模型: 强调了在整个软件开发项目中需要经历的若干个测试级别, 并与每一个开发级别对应; 忽略了测试的对象不应该仅仅包括程序, 没有明确指出对需求和设计的测试

W模型: 补充了V模型中忽略的内容, 强调了测试计划等工作的先行和对系统需求和系统设计的测试; 与V模型相同, 没有对软件测试的流程进行说明

H模型: 强调测试独立的, 只要测试准备完成, 就可以执行测试.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值