软件测试与软件开发

  软件开发与软件测试都是软件项目中非常重要的组成部分,软件开发是生产制造软件产品,软件测试是检验软件产品是否合格,两者密切合作才能保证软件产品的质量。

  1.软件测试与软件开发的关系

  软件中出现的问题并不一定都是由编码引起的,软件在编码之前都会经过问题定义、需求分析、软件设计等阶段,软件中的问题也可能是前期阶段引起的,如需求不清晰、软件设计有纰漏等,因此在软件项目的各个阶段进行测试是非常有必要的。测试人员从软件项目规划开始就参与其中,了解整个项目的过程,及时查找软件中存在的问题,改善软件的质量。软件测试在项目各个阶段的作用如下所示。

  (1)项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。

  (2)需求分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时制订系统测试计划。

  (3)概要设计与详细设计阶段:制订单元测试计划和集成测试计划。

  (4)编码阶段:开发相应的测试代码和测试脚本。

  (5)测试阶段:实施测试并提交相应的测试报告。

  软件测试贯穿软件项目的整个过程,但它的实施过程与软件开发并不相同。软件开发是自顶向下、逐步细化的过程,软件计划阶段定义软件作用域,软件需求分析阶段建立软件信息域、功能和性能需求等,软件设计阶段选定编程语言、设计模块接口等;软件测试与软件开发过程相反,它是自底向上、逐步集成的过程,首先进行单元测试,排除模块内部逻辑与功能上的缺陷,然后按照软件设计需求将模块集成并进行集成测试,检测子系统或系统结构上的错误,最后运行完整的系统,进行系统测试,检验其是否满足软件需求。

  软件测试与软件开发的关系可用图1表示,其中图b为图a的细化。

  2.常见的软件测试模型

  在软件开发过程中,人们根据经验教训并结合未来软件的发展趋势总结出了很多软件开发模型,如瀑布模型、快速原型模型、迭代模型等,这些模型对软件开发过程具有很好的指导作用,但遗憾的是它们对软件测试并没有给予足够的重视,利用这些模型无法更好地指导软件测试工作。软件测试是与软件开发紧密相关的一系列有计划的活动,是保证软件质量的重要手段,因此人们又相继设计了很多软件测试模型用于指导测试工作。

  软件测试模型兼顾了软件开发过程,对软件开发和测试进行了很好的融合,它既明确了软件开发与测试之间的关系,又使测试过程与开发过程产生交互,是测试工作的重要参考依据。

  软件测试模型对测试工作具有指导作用,对测试效果与质量都有很大的影响,很多测试专家在实践中不断改进创新,创建了很多实用的软件测试模型。下面介绍几种比较重要的软件测试模型。

  ①V模型

  V模型是由保罗·鲁克(Paul Rook)在20世纪80年代提出的,它是软件测试模型中最具有代表性的模型之一。V模型是瀑布模型的变种,在瀑布模型的后半部分添加了测试工作,如图2所示。

  V模型描述了基本的开发过程与测试行为,主要反映了测试活动分析与设计之间的关系。它非常明确地表明了测试过程所包含的不同级别,以及测试各阶段与开发各阶段所对应的关系。V模型的左边是自上而下、逐步细化的开发过程,右边是自下而上、逐步集成的过程,这也符合了软件开发与软件测试的关系。

  V模型应用瀑布模型的思想将复杂的测试工作分成了目标明确的小阶段来完成,具有阶段性、顺序性和依赖性,它既包含了对于源代码的底层测试,也包含了对于软件需求的高层测试。但是V模型也有一定的局限性,它只有在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,因此它不能发现需求分析等早期的错误,这为后期的系统测试、验收测试埋下了隐患。

  ②W模型

  W模型是由V模型演变而来的,它强调测试应伴随整个软件生命周期。其实W模型是一个双V模型,软件开发是一个V模型,而软件测试是与开发同步进行的另一个V模型,如图3所示。

  W模型的测试范围不仅包括程序,还包括需求分析、软件设计等前期工作,这样有利于尽早地全面发现问题。但是W模型也有自己的局限性,它将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。

  ③H模型

  为了解决V模型与W模型存在的问题,有专家提出了H模型,H模型将测试活动完全独立了出来,形成一个完全独立的流程,这个流程将测试准备活动和测试执行活动清晰地体现出来。测试流程和其他工作流程是并发执行的,只要某一个工作流程的条件成熟就可以开始进行测试。例如在概要设计工作流程上完成一个测试,其过程如图4所示。

  图4只是体现了软件生命周期中概要设计层次上的一个测试“微循环”。在H模型中,测试级别不存在严格的次序关系,软件生命周期的各阶段的测试工作可以反复触发、迭代,即不同的测试可以反复迭代地进行。在实际测试工作中,H模型并无太多指导意义,读者重点是理解其中的设计意义。

  ④X模型

  X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行迭代测试,如图5所示。

  X模型左边描述的是针对单独程序片段进行的相互分离的编码和测试,多个程序片段进行频繁的交接,在X模型的右上部分,将多个片段集成为一个可执行的程序再进行测试。通过集成测试的产品可以进行更大规模的集成,也可以进行封装提交给客户。

  在X模型的右下部分还定位了探索性测试,它能够帮助有经验的测试人员发现更多测试计划之外的软件错误,但这对测试人员要求会高一些。

  上面共介绍了4种软件测试模型,在实际测试工作中,测试人员更多的是结合W模型与H模型进行工作,软件各个方面的测试内容是以W模型为准,而测试周期、测试计划和进度是以H模型为指导。X模型更多是作为最终测试、熟练性测试的模板,例如对一个业务测试已经有2年时间,则可以使用X模型进行模块化的、探索性的方向测试。

【软件测试】04 -- 软件测试与软件开发相关推荐

  1. 《软件测试》第二章 软件开发的过程

    <软件测试>第二章 软件开发的过程 2.1 产品的组成部分 2.1.1 软件产品需要多少投入 2.1.2 软件产品由哪些部分组成 2.2 软件项目成员 2.3 软件开发生命周期模式 2.3 ...

  2. 软件测试和软件开发哪个发展更好

    经常有想转IT行业的同学,在了解软件测试和软件开发之后不知道转那个岗位好,今天就系统的,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求.性格要求.入职门槛.知识结构.竞争压力.职业发展.职 ...

  3. 测试——开发模型(瀑布模型,螺旋模型,增量,迭代,敏捷)和测试模型(V模型,W 模型),软件开发生命周期与软件测试生命周期的对比

    目录: 软件测试生命周期与软件开发生命周期 开发模型 2.1 瀑布模型 2.2 螺旋模型 2.3 增量 和 迭代 2.4 敏捷 测试模型 3.1 V模型 3.2 W模型 1. 软件开发生命周期与软件测 ...

  4. 软件测试和软件开发哪个更好?

    经常有想转IT行业的同学,在了解软件测试和软件开发之后不知道转那个岗位好,今天就系统的,从多个维度来比较软件测试与软件开发,具体包括从基本素质要求.性格要求.入职门槛.知识结构.竞争压力.职业发展.职 ...

  5. 软件测试和软件开发哪个发展更好?我来告诉你怎么选

    目录 一.基本素质要求 二.性格要求 三.入职门槛 四.转行难度 五.知识结构 六.竞争压力 七.职业发展 八.职业前景 总结 一.基本素质要求 这里的基本素质包括比如速辑思维能力.分析问题能力.沟通 ...

  6. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  7. 【软件测试】软件测试学习笔记(一)

    文章目录 一.软件测试基础 1.1.软件概述 1.1.1.软件生命周期 1.1.2.软件开发模型 1.1.2.1.瀑布模型 1.1.2.1.1.瀑布模型的特点 1.1.2.1.2.瀑布模型的优缺点 1 ...

  8. 5软件开发与软件测试

    软件开发与软件测试 前言 瀑布模型 V模型 总结 前言 软件测试与软件开发过程是相辅相成.相互依赖.相互转换的过程. 瀑布模型 瀑布模型规定了软件生命周期中的各项活动,包括需求分析.概要设计.编码.测 ...

  9. winfrom软件开发汽车测试_ETci — 全自动软件测试调度(持续集成)平台

    ET·ci 提供了编译- 测试- 发布解决方案,包括:自动提取配置库代码进行自动构建, 自动调度静态测试工具(如QAC)进行静态测试,自动调度单元测试工具(如Tessy)开展动态测试,自动调度HIL ...

  10. 软件开发质量的双保险 — 1.设计验证与软件测试

    提到对软件的质量检查,马上想到的是"软件测试",软件测试的目的主要是检查"开发程序"是否符合"软件设计"的要求,程序中是否有bug等,也就是 ...

最新文章

  1. 放弃手工标记数据吧!斯坦福大学开源弱监督框架
  2. android开发 常用技巧
  3. 为什么我们需要Logstash,Fluentd等日志摄取器?
  4. php文字左右滚动代码,JavaScript
  5. 假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象
  6. 力扣-204 计数质数
  7. 使用Palette来对图片进行颜色提取
  8. 一键将RHEL的YUM源更换为CentOS源
  9. 从上帝视角看支付——支付总架构解析
  10. 318公路是中国最长最美国道,沿途风景绝佳,进藏必去的最佳路线
  11. 苹果开发者账号申请 之 公司开发者账号申请2021年
  12. 偏微分方程离散化matlab,[数学]偏微分方程的离散化方法4.ppt
  13. 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
  14. eclipse 显示中文或者英文
  15. Boost在Windows XP运行的编译方法
  16. BBEdit使用教程
  17. 快手抖音上热门涨粉后怎么赚钱引流变现四大技巧-阿甘电商
  18. jquery+javascript编写国籍控件
  19. php tp5在线解压压缩文件
  20. Python快速刷题网站——牛客网 数据分析篇(十一)

热门文章

  1. Android Studio通过模拟器联网
  2. 主机如何做好防勒索病毒措施
  3. Ubuntu 无法连接网络
  4. APM32 系列 MCU 获得 IAR Embedded Workbench 和 SEGGER J-Link Debug Probes 的全面支持
  5. 线程有哪些状态?每个状态是什么意思?又是如何切换的?
  6. matlab实验7符号计算器,MATLAB自学笔记(二十一):符号微积分、积分变换、代数方程以及可视化...
  7. UVA 10827 Maximum sum on a torus .
  8. svg 地图 及path的渲染
  9. 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第九章 深入理解GPS
  10. 校园网多拨网速叠加思路