当前位置:网站首页>【软件测试】04 -- 软件测试与软件开发
【软件测试】04 -- 软件测试与软件开发
2022-07-05 06:39:00 【衍生星球】
软件测试与软件开发
软件开发与软件测试都是软件项目中非常重要的组成部分,软件开发是生产制造软件产品,软件测试是检验软件产品是否合格,两者密切合作才能保证软件产品的质量。
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模型进行模块化的、探索性的方向测试。
边栏推荐
- 2022 winter vacation training game 5
- Rehabilitation type force deduction brush question notes D1
- Preemption of CFS scheduling
- confidential! Netease employee data analysis internal training course, white whoring! (attach a data package worth 399 yuan)
- ROS2——ROS2对比ROS1(二)
- Skywalking全部
- mysql设置触发器问题
- Technology blog learning website
- 微信小程序路由再次跳轉不觸發onload
- 解读最早的草图-图像翻译工作SketchyGAN
猜你喜欢
Rehabilitation type force deduction brush question notes D1
2. Addition and management of Oracle data files
Vant weave swipecell sets multiple buttons
Use ffmpeg to rotate, flip up and down, and flip horizontally
Genesis builds a new generation of credit system
VLAN experiment
Redis-01. First meet redis
postmessage通信
Orin 两种刷机方式
Game theory acwing 893 Set Nim game
随机推荐
Skywalking全部
Use the Paping tool to detect TCP port connectivity
Find the combination number acwing 889 01 sequence meeting conditions
Redis-02. Redis command
Vscode editor
Configuration method and configuration file of SolidWorks GB profile library
new和malloc的区别
微信小程序路由再次跳轉不觸發onload
H5内嵌App适配暗黑模式
Utf8 encoding
在本地搭建一个微服务集群环境,学习自动化部署
Volcano 资源预留特性
Design specification for mobile folding screen
MQClientException: No route info of this topic: type_ topic
乐鑫面试流程
The “mode“ argument must be integer. Received an instance of Object
confidential! Netease employee data analysis internal training course, white whoring! (attach a data package worth 399 yuan)
2022 winter vacation training game 5
Written examination notes
ROS2——初识ROS2(一)