SDLC vs STLC – 区别是什么?
软件开发生命周期 (SDLC) 和软件测试生命周期 (STLC) 尽管名称相似,但却是两种不同且独立的方法,用于确保软件开发项目成功。让我们了解如何充分利用两者来完成您的软件开发项目:
什么是软件开发生命周期?
软件开发生命周期 (SDLC) 指的是创建软件的过程。
根据 Winston Royce 博士于 1970 年发表的一篇研究论文,软件开发生命周期 (SDLC) 是交付软件的线性流程序列。该流程如下:
需求收集
一旦发现组织应用程序环境中的差距或机会,就需要充分理解和记录业务需求,以便选择最佳解决方案。在此阶段,避免立即跳到解决方案的诱惑至关重要,利益相关者可能需要指导和帮助,以保持对任何他们可能已经拥有的解决方案偏好的开放心态。
此时,务必确保当前应用程序不满足或无法满足要求。通过收集需求并审查当前应用程序组合,解决方案架构师、业务分析师以及其他具有类似技能的人员可以帮助完成此步骤。
此时,最好联系组织中的其他人,看看已识别的或类似的需求是否也在其他领域需要,以避免构建或采购重复的系统并允许系统重用。
此阶段的主要成果将是业务需求文档 (BRD),其中将列出所有必要的函数,可以使用 MoSCoW 方法(必须有/应该有/可以有/现在没有)进行优先级排序,并按业务领域进行适当的可追溯性。
设计
在新程序的需求已妥善记录并批准后,即可开始设计工作。在此阶段,企业应考虑其资源是否更好地用于构建自定义系统或购买市场上的产品。可能需要招标流程,例如投标请求 (RFP) 或信息请求 (RFI)。
一般来说,如果需要高度标准化的功能(例如,工资单、预约安排和电子销售点),通常最好为这些所谓的“记录系统”或“区分系统”购买现成的系统。“创新系统”被称为“创新系统”,当它们具有特定于行业或组织的需求或提供具有竞争优势的功能时,更有可能适合定制构建。
业务分析师和 UX 设计师可以在设计阶段进行协作,以开发系统的线框图或模型。技术架构师和解决方案设计师可以开始构建系统的架构并做出技术栈、托管和编程语言的决策,同时记住组织的现有技能和供应商。
设计阶段的主要输出因系统而异,但它们可能包括线框图、系统架构图、技术栈选择以及所需资源技能的指示。
构建
在构建阶段,软件开发人员将“需求”和“设计”阶段的输出转换为可用的软件。这可能包括创建前端、后端、数据库、微服务以及各种其他组件。
软件将被构建以提供需求文档中指定的功能,而最好的项目将在整个阶段保持最终用户的参与,以确保正在构建的内容与最初声明的需求紧密一致,因为构建的内容有时会偏离此目标。
测试
在测试过程中,测试分析师将对程序执行各种验证测试,包括性能测试、负载测试和探索性手动测试。主要目标是确保在构建阶段完成的工作质量足够高,能够承受在正常运行设置下系统将承受的要求,以及弄清楚当这些条件超过时会发生什么。
用户验收测试现在可以开始验证系统的行为是否符合需求收集阶段的既定期望,而构建阶段用户和开发团队之间的紧密协作有助于最大限度地减少返工并消除意外。
部署
在部署阶段,程序被放入所需的生产环境和平台,将在其中运行。这些环境可以是公司数据中心中的实际服务器,也可以是越来越流行的云托管平台。
预计在此阶段开始最终用户培训,以确保每个人都了解如何使用新系统,并将完成从先前遗留系统的任何数据传输,以避免需要“双重键入”。
应该已经开始与将在其“业务照常”状态下支持和维持系统的团队进行讨论,并且在培训阶段应考虑这些团队,以确保他们在项目团队解散后能够支持该系统。
维护
在维护阶段,系统被移交给将在公司剩余生命周期内支持它的团队。为了让服务台运营商知道如何将用户支持请求发送给合适的团队,需要开发适当的文档和帮助文件。
随着时间的推移,可能会对系统进行增强和更改,例如,如果发现新的需求或出现外部因素(例如法规更改),则必须考虑执行此操作的方法,即,是否将保留内部资源来进行此类更改,或者这些更改是否将临时外包给外部提供商。
查看我们的帖子,了解更多关于软件开发生命周期以及如何扩展它以确保在整个过程中内置安全性的信息:[实用指南] 安全软件开发生命周期。
软件测试生命周期 (STLC)
软件测试生命周期 (STLC) 是一种方法,用于确保从系统开发开始到结束都实施充分彻底、严格的测试。它分为五个阶段,如下所示:
需求分析
在需求分析阶段,测试团队审查在 SDLC 需求阶段编写的业务需求文档 (BRD),以识别新系统所需的重要结果和功能。
测试团队将与主要利益相关者和业务分析师一起审查 BRD,以确保每个人都了解正在创建的内容及其工作方式。他们还应考虑系统的业务关键性以及任何适用的法规要求,以确保满足任何合规性需求。
测试准备
一旦了解了功能和后果,测试团队就能规划如何实施测试。他们将为项目创建一个测试策略文档,概述他们将如何使用可用的不同技术,包括手动测试、自动化测试、集成测试和单元测试。他们可以开始列出需要编写的确切测试用例或脚本,以验证系统是否经过了彻底测试。
测试开发
在定义了高级测试用例和方法后,就可以开始细化测试脚本的工作,其中包含更多信息,例如需要评估的各个用户体验,包括积极路径和边缘情况。
测试环境搭建
在建立了可行的系统版本后,测试团队可以开始构建与生产环境和开发环境不同的适当测试环境。在这个测试环境中,他们将确保他们已经建立了正确的用户配置文件,具有正确的用户登录凭据和足够测试数据来运行他们的脚本。
测试执行和结束
最后,在建立稳定的环境后,测试团队执行他们准备的脚本并将结果报告给项目团队和利益相关者。随着项目团队处理结果然后重新测试,此步骤和其他步骤可能需要多次执行。
SDLC 与 STLC:有什么区别?
下表突出显示了 SDLC 和 STLC 之间的重大区别。
因素 | SDLC | STLC |
---|---|---|
标题 | 软件交付生命周期 (Software Delivery Lifecycle, SDLC) 是一个用来描述软件如何交付的术语。 | 软件测试生命周期 (Software Testing Life Cycle, STLC) |
摘要 | 关注软件开发 | 关注软件测试 |
目标 | 确保软件系统构建良好。 | 确保软件系统经过充分测试。 |
阶段 | 需求设计、构建、测试、部署和维护 | 分析需求、规划测试开发、测试执行和环境关闭 |
参与人员 | 整个项目团队 | 测试人员/质量保证工程师 |
输出 | 可使用的软件系统 | 经过彻底测试的软件系统 |
结论
总而言之,SDLC 和 STLC 是两个不同但互补的流程,在开发新系统时都必须考虑。
SDLC 参与新系统的开发,而 STLC 专注于其测试。
SDLC 是一个线性流程,确保您设计和构建正确的系统,而 STLC 是一种允许您彻底测试所开发内容的技术。
虽然 STLC 是一种独立的测试方法,但这并不排除在 SDLC 中包含质量保证。STLC 并不是优秀设计的替代品,也不是糟糕开发的补救措施;质量应该融入软件,而不是“测试出来”。
任何成功的新的软件系统几乎肯定都会包含 SDLC 和 STLC。
SDLC 以分阶段和系统化的方式提供对定义良好的软件项目的交付。STLC 使这些项目能够进行彻底的测试,以验证其效率、可靠性和实用性。