软件测试模型综述

 引言

  当前主流的软件生命周期模型有瀑布模型、原型模型、螺旋模型、增量模型、渐进模型、快速软件开发以及Rational统一过程等,但是在这些模型中,软件测试的价值并未得以足够的体现,也没有给软件测试以足够的重视,利用这些模型无法更好的指导测试工作。本文对软件测试模型做了循序渐进的剖析,可以让测试相关工作者能够对软件测试模型能够有个较为深入的认识。

  二、模型解读

  1.V模型

  在软件测试方面,V模型是最广为人知的模型,他是软件开发瀑布模型的变种,V模型是在快速应用开发(RapApplicationDevelopment,RAD)模型基础上演变而来,由于整个开发过程构成一个V字型而得名,详情见图1。尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。

  

图1.V模型

  从上图可以看出:

  强调软件开发的协作和速度,反映测试活动和分析设计关系,将软件实现和验证有机结合起来;

  明确界定了测试过程存在不同的级别;

  明确了不同的测试阶段和研发过程中的各个阶段的对应关系;

  仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析;

  系统设计的验证,一直到后期的验收测试才被发现;

  没有明确的说明早起的测试,不能体现“尽早地、不断地进行软件测试”的原则。

  2.W模型

  V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,演化为W模型(如下图)。在模型中不难看出,开发是“V”,测试是与此并行的“V”,详情见图2。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活动应遵循IEEE1012-1998《软件验证与确认(V&V)》的原则。

  W模型由Evolutif公司提出,相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

  W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。

  W模型,也就是双V模型,并不是在V模型上又搞出一个来,而是开发阶段与测试设计阶段同步进行,比如在进行需求分析,软件功能规格说明书评审,软件功能规格说明书基线化后,系统测试计划,方案,用例也设计完毕,接着是概要设计与集成测试设计,详细设计与单元测试设计,直到编码完成后,进行代码审查,继续执行单元测试、集成测试、系统测试。

  

图2.W模型

  从上图可以看出:

  W模型强调测试伴随着整个软件开发周期,测试与开发并行进行,有利于尽早发现问题;

  测试的对象不单单是程序,还有需求和设计等;

  W模型有利于即时了解项目的测试风险,及早制定应对方案,加快项目进度;

  软件开发和测试保持着线性的前后关系,无法支持迭代、自发性以及需求变更调整等。

3.H模型

  在H模型中,软件测试的过程活动完全独立,形成一个独立的流程,贯穿于整个软件的声明周期,与其他流程并发进行,某个测试点准备就绪后就可以从测试准备阶段进行到测试执行阶段,软件测试活动可以根据被测产品的不同而分层进行,详情如图3。

  图3.H模型

  从上图可以看出:

  软件测试不仅仅指测试的执行,还包括很多其他的活动;

  软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行;

  软件测试要尽早准备,尽早执行;

  软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的;

  把软件的开发视为需求、设计、编码等一系列串行活动,但实际上,这些活动可以交叉的进行,严格的划分只是一种理想状态。

  4.X模型

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

  

图4.X模型

  从上图可以看出:

  X模型并不要求在进行作为创建可执行程序(图中右上方)的一个组成部分的集成测试之前,对每一个程序片段都进行单元测试(图中左侧的行为);

  X模型没能提供是否要跳过单元测试的判断准则;

  X模型填补了V模型和X模型的缺陷,并可为测试人员和开发人员带来明显的帮助;

  X模型还定位了探索性测试(右下方)。这是不进行事先计划的特殊类型的测试,诸如“我这么测一下结果会怎么样?”,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。

  X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-09 17:04:42

软件测试模型综述的相关文章

软件测试模型

对于软件测试模型网上也有很多关于它的解释,下面我也从他们各自的特点及优缺点方面,简单给大家介绍一下: 一.V模型 1.1 V模型特点 (1)V模型有阶段性.顺序性和依赖性: (2)V模型的测试策略既包括低层测试又包括高层测试(低层测试为了检查源代码,高层测试为了使整个系统满足用户的需求): (3)V模型有质量保证的观点. 1.2 V模型优点 (1)应用瀑布模型的思想将复杂的测试工作按阶段划成各个小阶段来实现: (2)从多角度测试系统:将系统从模块到集成再到系统和用户测试的思路可以使系统缺陷尽可能

《中国人工智能学会通讯》——9.25 搜索引擎点击模型综述

9.25 搜索引擎点击模型综述 在这个信息爆炸的时代,搜索引擎已成为人们在互联网的数据海洋中遨游不可或缺的工具.无论是查找信息.获取资源,还是寻求帮助.发现机遇,都离不开搜索引擎的指引与参考.可以说,搜索引擎已经成为了互联网中的"基础设施".根据中国互联网络中心(CNNIC)发布的中国互联网络发展状况统计报告显示,截止 2016 年 1 月 , 已有82.3% 的互联网用户使用搜索引擎 , 在互联网网络应用中排名第二 ; 而在移动端也有 77.1% 的用户使用移动端搜索引擎 , 在移动

了解软件测试模型总结

从各种资料上找到以下几种测试模型,拷贝粘贴,内容并非本人原创,只是为了方便学习和记忆.总结如下: 1.V模型 在http://www.aliyun.com/zixun/aggregation/10185.html">软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型.V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑.V模型中的过程从左到右,描述了基本的开发过程和测试行为.V模型的价值在于它

《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论

第1篇 软件测试设计技术 软件测试技术实战:设计.工具及管理 如何把用户的需求转换为软件测试设计,这是软件测试工程师的工作重心所在.本书第一篇通过6个章节来讲述一下如何进行软件测试设计. 本篇共分以下几个章节. 第1章,软件测试的基本知识:首先讲解一些软件测试的基本知识,如果你对软件测试的基本概念已经非常熟悉了,那么就可以简单浏览,甚至跳过本章的内容. 第2章,传统的软件测试的设计方法:本章主要介绍软件测试中最经典的5个黑盒测试方法(等价类/边界值.决策表.状态转换图.决策树和正交测试法)和7个

JAVA 内存模型(一)

综述: 简单的说,Java的内存模型定义了在一个线程对一个共享变量进行修改后,修改后的共享变量什么时候对其它线程可见. 作用: 对于程序员 JMM给程序员呈现出来的是具有顺序一致性的强内存模型.(通俗点就是所见即所得) 对于处理器与编译器 JMM给处理器与编译器提供了一个比较弱的happens-before内存模型,这样尽可能多的给处理器与编译器优化代码的空间. 处理器与编译器的优化技术 编译器优化的重排序. 编译器在不改变单线程程序语义的前提下,可以对我们编写的代码进行重排.如下: publi

boost::asio译文

Christopher Kohlhoff Copyright 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完成独

号外! 大维度机器学习也有计算框架了

简介 为支持超大维度机器学习模型运算,腾讯数据平台部与香港科技大学合作开发了面向机器学习的分布式计算框架--Angel 1.0. Angel是使用Java语言开发的专有机器学习计算系统,用户可以像用Spark, MapReduce一样,用它来完成机器学习的模型训练.Angel已经支持了SGD.ADMM优化算法,同时我们也提供了一些常用的机器学习模型:但是如果用户有自定义需求,也可以在我们提供的最优化算法上层比较容易地封装模型. Angel应用香港科技大学的Chukonu 作为网络解决方案, 在高

《异构信息网络挖掘: 原理和方法》—— 导读

前 言     当下大数据技术发展变化日新月异,大数据应用已经遍及工业和社会生活的方方面面,原有的数据管理理论体系与大数据产业应用之间的差距日益加大,而工业界对于大数据人才的需求却急剧增加.大数据专业人才的培养是新一轮科技较量的基础,高等院校承担着大数据人才培养的重任.因此大数据相关课程将逐渐成为国内高校计算机相关专业的重要课程.但纵观大数据人才培养课程体系尚不尽如人意,多是已有课程的"冷拼盘",顶多是加点"调料",原材料没有新鲜感.现阶段无论多么新多么好的人才培养

Incorporating Copying Mechanism in Sequence-to-Sequence Learning

今天分享的paper是Incorporating Copying Mechanism in Sequence-to-Sequence Learning,作者来自香港大学和华为诺亚方舟实验室. 本文的模型通过借鉴人类在处理难理解的文字时采用的死记硬背的方法,提出了COPYNET.将拷贝模式融入到了Seq2Seq模型中,将传统的生成模式和拷贝模式混合起来构建了新的模型,非常好地解决了OOV问题.解决问题的思路与之前的一篇有关Pointer的文章十分类似.decoder部分不断地变复杂,考虑的因素越来