构建模型:开发和测试的区别
一、开发模型
开发模型是在软件开发过程中用于组织和管理项目的一种方法或框架。这些模型规定了开发团队应该如何进行需求分析、设计、编码、测试和部署等活动,以确保项目能够按计划顺利完成。
(一)瀑布模型
- 瀑布模型是一种线性顺序的开发模型,各个开发阶段按顺序依次完成。
- 每个阶段的输出成果是下一个阶段的输入。
优点: 每个阶段做什么、产出什么非常清晰;
缺点: 依赖于早期进行的唯一一次需求调查,不能适应需求的变化,风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。
适用项目: 适合项目需求稳定、变化少的情况。
(二)螺旋模型
- 螺旋模型将开发过程视为一个循环的螺旋,每个循环包括计划、风险分析、工程构建和评审等阶段。
- 强调风险管理和迭代开发。
优点: 强调风险管理,有助于识别和解决问题。
缺点: 较为复杂,需要更多的资源和时间。
适用项目: 适应大规模、复杂的项目。
(三)增量、迭代模型
增量模型将项目划分为多个部分(增量),每个增量依次开发并集成到现有系统中。
迭代模型将开发过程划分为多个迭代周期,每个周期包含需求分析、设计、编码、测试等活动。每个迭代周期都会增加新的功能或改进。
-
增量开发: 想象你要建造一座房子。你决定采用增量开发的方式。首先,你打算建造房子的主体结构,也就是房子的框架和基本外壳。这个主体结构就是第一个增量,而且它是一个完整的、可以使用的部分。一旦主体结构建好了,你可以在里面住,虽然还没有进行内部装修。然后你开始增量开发房子的各个部分,例如厨房、浴室、卧室等。每个部分都是一个独立的增量,你可以逐步添加它们,直到整座房子完工。
-
迭代开发: 你要设计一个新的手机应用程序。你决定采用迭代开发的方式。在第一个迭代周期中,你开始设计应用程序的核心功能,例如用户登录和基本界面。你开发这些功能,测试它们,然后发布应用程序的第一个版本。这个版本功能可能还不完美,但它是一个完整的、可用的应用程序。接下来,你进入第二个迭代周期,这次你可能添加了一些新功能,例如用户个人资料页面和社交分享功能。你再次测试并发布第二个版本。每个迭代周期都增加新的功能或改进现有功能,直到应用程序变得非常完善。
(四)敏捷开发
敏捷开发通常指的是一种 软件开发方法论 ,它强调在不断变化的需求和环境下,以合作、灵活、迭代的方式开发软件。敏捷开发的目标是通过更频繁的交付可用的软件版本来满足客户需求,同时允许团队在项目进展中灵活地调整和改进。
Scrum
(斯克拉姆)是常见的敏捷开发方法;scrum
由product owner
(产品经理)、scrum master
(项目经理)和team
(研发团队)组成。
- 其中产品经理负责整理用户需求,定义其商业价值,对其进行排序,制定发布计划,对产品负责。
- 项目经理负责召开各种会议,协调项目,为研发团队服务。
- 研发团队则由不同技能的成员组成(前端、UI、后端……),通过紧密协同,完成每一次迭代的目标,交付产品。
二、测试模型
(一)V 模型
V 模型是一种软件开发和测试的模型,它将开发阶段和测试阶段划分为对应的两个V 字形,每个开发阶段都有相应的测试阶段与之对应。
- 用户需求: 产品经理与客户和用户沟通,收集和整理用户的需求,形成需求文档 。需求文档是软件开发的基础,它描述了用户想要的软件功能、性能、界面、安全等方面的要求。
- 需求分析与系统设计: 开发团队 对需求文档进行评审 ,以确保所有的需求得到明确的描述和理解,通俗来讲就是验证需求是否正确。还要确定编程语言、框架之类。
- 概要设计: 看项目结构如何设计。
- 详细设计: 每个接口涉及哪些库表,涉及哪些任务。
- 编码: 代码。
- 单元测试: 测试每一个方法(接口)。
- 集成测试: 讲一部分的方法集成到一起测试。
- 系统测试: 对整体测试,确保模块与模块之间没有影响。在系统测试阶段,需要进行功能测试、性能测试、安全测试等。
- 验收测试: 客户或用户对系统进行验收测试,确保系统满足需求文档中的所有需求。
优点:
- 清晰的开发流程: V模型提供了一个清晰的开发流程,将开发活动与验证和验证活动相对应。这有助于团队明确了解每个阶段的任务和交付成果。
缺点:
- 修复Bug困难: 由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。
- 难以应对变化: 实际中,由于需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大,灵活度较低。
(二)W 模型(双 v 模型)
W 模型是一种软件开发和测试的模型,它由两个 V 字形模型组成,相对于 V 模型,W 模型增加了软件各开发阶段中应同步进行的验证和确认活动。一个 V 是开发的生命周期,另一个 V 是测试的生命周期。
优点:
- 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试。
- 更早地介入到软件开发中,能尽早地发现缺陷进行修复。
- 测试与开发独立起来,并与开发并行。
缺点:
- 在模型中,需求、设计、编码等活动被视为串行,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一阶段工作,这样就无法支持迭代的开发模型。
- 对于需求和设计的测试技术要求很高,实践起来很困难。
上一篇: 理解迭代和增量型开发的生命周期
推荐阅读
-
2024 OSCAR|开源系统构建路径模型的见解和建议即将发布
-
解析Linux驱动开发3中的devfs、udev、procfs、sysfs和debugfs的区别没有那么难
-
谷歌与MIT合作开发AI生成带光照和反射的逼真3D模型图像
-
揭秘五大测试开发模型:瀑布、增量、螺旋、V模型和敏捷迭代的解析
-
我的阅读心得:《软件工程》第七章-探讨软件过程模型:螺旋模型和迭代开发
-
理解软件测试与四大开发模型:瀑布、螺旋、递增迭代和敏捷开发
-
理解开发模型:瀑布、增量、迭代和敏捷的方法与技巧 - 笔记分享
-
构建模型:开发和测试的区别
-
理解迭代模型在软件测试中的应用 - 敏捷开发视角下的详细解析
-
搞清楚迭代、原型、螺旋和敏捷模型的区别