软件测试是评估软件产品以检测错误和故障并确保其适用性的过程。它可以手动执行(测试人员使用他们的技能、经验、直觉和知识)或自动执行(测试人员的操作由测试脚本引导)。
测试过程的基本目标是确保开发过程满足软件系统的所有指定要求,并且系统中没有未检测到的错误。但是,测试的总体目标是通过尽早检测缺陷来为客户或最终用户提供价值。
测试发生在整个软件开发生命周期 (SDLC) 的不同阶段。测试也可能发生在每个阶段完成之后或每个开发阶段的某些检查点之后。软件在发布使用之前所经历的不同阶段称为软件测试生命周期 (STLC)。
在这篇关于 STLC 的文章中,我们将讨论软件测试的基础知识、软件测试生命周期的各个阶段、方法及其最佳实践。
让我们开始吧!
什么是软件测试生命周期?
STLC 是一个迭代的循环过程,其目标是防止软件中出现错误。它包括测试分析、计划、设计、设置、执行和测试关闭活动。由于软件的复杂性,只进行一次测试是无法保证产品没有错误的。因此,在软件测试生命周期的每个阶段都执行多项测试。
在生命周期的任何时候,可以同时或单独实施不同类型的测试。示例包括可用性测试、回归测试、探索性测试和健全性测试——对于所有这些不同类型,都有许多子类别。每个类别都有自己的特殊用途,并会根据情况而有所不同。
STLC 有以下几个阶段,我们将在后面的章节中详细讨论:
- 需求分析
- 测试计划
- 测试用例设计与开发
- 测试环境设置
- 测试执行
- 测试周期结束
软件测试生命周期的特征
- STLC 是确保高质量软件的分步方法。
- 提高敏捷测试过程的一致性和效率。
- 一旦需求确定或软件需求规范 (SRS) 文档准备就绪,STLC 过程就应该开始。
- 为每个项目方面明确定义目标和期望。
- 当软件或产品还处于STLC的早期阶段时,测试人员就可以分析和确定测试范围并编写有效的测试用例。它有助于缩短测试周期时间并提供更高的产品质量。
- 确保在添加附加功能之前测试并通过这些功能。
SDLC和STLC的区别
软件开发生命周期或 SDLC 是任何软件开发中最重要的阶段之一。在此阶段,将采取各种步骤来开发产品并使其做好上市准备。软件测试是 SDLC 过程中最关键的部分之一。它有一个完整的生命周期,称为软件测试生命周期或 STLC。那么,SDLC和STLC有什么区别呢?
软件测试生命周期阶段
重要的是要了解软件测试生命周期的各个阶段,以便更好地决定如何测试您的软件。测试生命周期的一个关键方面是确定要对您的软件执行哪个测试阶段。此过程的第一步是确定您是否需要对产品进行测试。
如果您的产品是一个收集数据的应用程序,那么与处理金融交易的银行网站相比,它对测试的需求会更少。一些产品可能会经历所有阶段的测试,而其他产品可能只进行部分测试。例如,一个纯粹作为营销工具存在的网站可能不需要通过可用性测试以外的任何测试。
测试可以随时进行,每个阶段都应该至少执行一次,然后才能进入下一个阶段。每个阶段都独立于其余阶段,因此如有必要,您可以只执行一个阶段。
典型的软件测试生命周期包括以下阶段;让我们详细了解每个阶段。
需求分析
需求分析是软件测试生命周期的初始阶段。此阶段从测试的角度检查功能和非功能需求,以确定可测试的需求。客户、解决方案架构师、技术主管、业务分析师和其他利益相关者与质量保证团队沟通并理解客户的要求,以便根据客户的规范定制测试。
准入条件
- 规范文档和应用程序体系结构是必须可用的两个文档。
- 必须明确规定上述文件的验收标准和可用性。
需求分析阶段的活动
- 确定需求并确定需求的优先级。
- 可行性和需求分析的头脑风暴会议。
- 创建客户、解决方案架构师、技术主管、业务分析师等需要回答的问题列表。
测试计划
利用前一阶段需求分析中收集的信息,QA 团队朝着规划测试过程的方向前进了一步。软件测试生命周期最关键的阶段是测试计划或测试策略。将用于测试程序的所有测试策略都在此阶段定义。
测试负责人在此阶段确定整个项目的成本估算和工作量。在这里,各种测试活动与资源分析一起计划和制定策略,这提高了计划阶段的有效性并有助于实现测试目标。
没有有效的工具,软件测试就无法发挥价值,尤其是在执行自动化测试时。在此阶段计划选择正确的软件测试工具。市场上有各种用于执行软件测试的工具。当您想要进行大规模测试时,选择像 LambdaTest 这样的基于云的自动化测试工具是正确的选择。
准入条件
- 包含要求的文档。
- 应提供一份关于自动化标准的报告。
测试计划阶段的活动
- 描述了目标和范围。
- 选择要执行的测试类型以及每种类型的独特方法。
- 确定和分配角色和职责。
- 找到测试所需的测试资源和设备。
- 选择正确的测试工具。
- 计算完成测试活动所需的时间和精力。
- 正在进行风险分析。
测试用例设计与开发
需求已经过检查,QA 团队已经创建了一个测试计划作为回应。是时候通过将其转化为测试用例来发挥创造力并塑造该测试策略了。为了检查和验证每个测试计划,根据测试策略和特定规范设计和开发测试用例。
在 STLC 中设计测试用例是一个非常重要的过程,因为它将有助于确定产品中的缺陷。也可称为缺陷识别或缺陷分析。为了设计测试用例,首先,我们需要有一个定义功能和非功能测试范围的需求文档。
这个需求文档可以由业务分析人员来准备,它还应该包括软件产品所有可能的用户场景。一旦我们有了需求文档,我们将进行测试用例设计。
设计测试用例包括两个步骤:
1. 测试用例的识别
2.测试用例分析
第一步是识别所有可能的测试用例,覆盖所有的用户场景,然后最后,在分析之后,我们需要删除不适合执行的测试用例或优先级低或不重要的测试用例。可能无法发现任何缺陷的测试用例。当测试设计步骤完成时,QA 团队开始编写有效的测试用例。
准入条件
- 规范文档。
- 自动化可行性报告。
测试用例设计和开发阶段的活动
- 设计、创建、审查和批准测试用例。
- 检查、修订和批准相关的现有测试用例。
- 如有必要,将创建、检查和批准自动化脚本。
测试环境设置
在设计和开发测试用例后,为建立和复制进行实际测试活动的理想条件和环境因素,软件测试过程需要一个适当的平台和环境,其中包括必要和必要的硬件和软件。
此阶段包括准备测试环境。测试环境建立了评估软件的参数。因为这是一个独立的活动,它可以与测试用例开发过程同时运行。
测试环境因组织而异。在某些情况下,测试环境是由开发人员或测试人员搭建的,而在另一些情况下,测试环境是由客户根据他们的需要和要求搭建的。
测试团队准备冒烟测试,而客户或开发人员准备测试环境。冒烟测试的目的是通过确定其就绪性和稳定性来验证测试环境。
准入条件
- 测试策略应该随时可用。
- 冒烟测试用例应该随时可用。
- 测试结果应该是可用的。
测试环境设置阶段的活动
- 测试数据已设置。
- 收集了必要的硬件和软件,并创建了测试环境清单。
- 已设置网络配置和测试服务器。
- 概述并解释了管理和维护测试环境的过程。
- 大气层经过烟雾测试以确保准备就绪。
测试执行
QA 团队现在准备好进行一些实际的测试操作,因为他们拥有测试用例、测试数据和适当的测试环境。测试团队根据前几个阶段准备的测试用例和测试计划,即测试计划和测试用例开发阶段,执行本阶段的测试用例。
通过的测试用例会得到一个分数。当测试用例失败时,错误跟踪系统用于将缺陷或问题传达给开发团队。
这些错误也可以连接到测试用例以供将来参考。在理想情况下,每个失败的测试用例都与缺陷相关联。开发团队解决错误后,将重新运行相同的测试用例以确保它确实已修复并按预期工作。
生成的报告显示通过、阻止、失败或未运行的测试用例的数量,以及其他信息。
准入条件
- 测试策略文件。
- 测试场景示例。
- 来自测试的数据。
测试执行阶段的活动
- 按照测试计划,执行测试用例。
- 将实现的结果与预期的结果进行对比。
- 定位和发现缺陷。
- 记录缺陷并报告发现的错误。
- 将故障映射到测试用例并更新需求的可追溯性矩阵。
- 在开发团队纠正或消除错误后重新测试。
- 回归测试(如果需要)。
- 跟踪缺陷直到它被修复。
测试周期结束
测试执行阶段的完成和软件产品的交付标志着测试结束阶段的开始。这是评估整个周期的阶段。除了测试结果之外,其他与测试相关的特征,例如达到的质量、测试覆盖率、测试指标、项目成本、遵守最后期限等,也会被考虑和分析。
该团队还分析了软件测试生命周期过程中进展顺利的方面以及可能需要改进的方面。为确定严重性和问题,生成测试用例报告。测试指标和关闭报告是在测试周期完成后创建的。
准入条件
- 报告测试用例的执行情况。
- 报告缺陷。
- 应该完成测试用例的执行。
测试周期收尾阶段的活动
- 检查整个测试程序。
- 讨论是否需要修改退出标准、测试计划、测试用例等。
- 测试结果的分析和检查。
- 收集所有测试可交付成果,包括测试计划、测试策略、测试用例等,并保持最新。
- 已创建测试指标和测试关闭报告。
- 缺陷的严重性和优先级是有序的。
软件测试生命周期方法论
在软件测试中,有多种方法来执行软件测试过程。
有四种类型的方法论:
- 瀑布模型
- V型
- 螺旋模型
- 敏捷模型
瀑布模型
最早引入的流程模型之一是瀑布模型。它非常基本且易于使用。它的功能类似于向下流动的瀑布。在此模型中,每个阶段都应在下一阶段执行之前完成,确保没有阶段重叠。
瀑布模型有五个阶段,一个接一个完成。他们是:
- 需求分析
- 系统设计
- 执行
- 系统测试
- 系统部署
- 系统维护
在测试开始之前,第一步确定所有需求,称为需求分析阶段。开发人员在下一步构建项目工作流程,称为系统设计阶段。系统设计阶段的预期工作在实施阶段实施。接下来是测试步骤,每个模块的功能都根据标准进行验证。
下一阶段是部署阶段,然后是维护阶段,这是一个持续的过程。在此阶段,开发人员解决随着时间的推移软件使用引起的任何问题。出现问题时,开发人员对其进行修补,然后软件返回测试。重复此过程,直到所有缺陷都已解决。
瀑布模型的优点
- 每个阶段都有审查程序和定义的可交付成果。
- 阶段之间没有重叠,因为它们一次完成一个。
- 它适用于具有明确定义的需求且在开发过程中不会发生变化的项目。
瀑布模型的缺点
- 对于冗长的项目,它并没有显示出良好的结果。
- 它带有很大的危险和不确定性。
- 对于需要修改的可能性很高或中等的项目,它的表现非常糟糕。
- 对于复杂的、面向对象的任务,它表现平平。
- 如果在整个生命周期中修改范围,则可能会放弃整个项目。
- 在生命周期的最后阶段,产生了功能性软件。
V型
瀑布模型是一种过时的模型,存在许多缺陷和局限性。因此,创建了 V 模型来克服这些限制。
验证和验证模型是 V 模型的另一个名称。它被视为瀑布模型的发展。V 模型中的任务是同时完成的。在左侧,它描述了软件开发操作,而在右侧,它描述了正在进行的测试阶段。
这意味着软件开发周期的每个元素都与软件测试阶段密不可分。该模型同样遵循瀑布方法,因为没有重叠的阶段,一旦前一阶段完成,下一阶段就会开始。
在此体系结构中,测试阶段必须与软件开发阶段同时进行规划。验证阶段在设计或规划阶段之后开始,接着是编码阶段,最后是验证步骤。
这一阶段还包括模块设计,确保所有模块相互兼容。编码步骤在验证阶段完成后开始。
编码是按照标准和规则进行的。验证阶段在编码阶段之后。软件经过测试,包括单元测试、集成测试、系统测试和验收测试,以确保它满足客户的需求和期望并且没有缺陷。
V型的优点
- 它易于理解和操作。它的易用性使其更易于管理。
- 没有阶段重叠。
- 它是需求明确的地方的理想选择,例如小型项目。
- 每个阶段都有其评估程序和一组可交付成果。
V 模型的缺点
- 不推荐用于复杂的、面向对象的程序。
- 不适合冗长的项目。
- 不适合在项目期间需求可能发生变化的可能性为中到高的项目。
螺旋模型
V 模型和瀑布模型仅推荐用于需求明确指定的较小项目。螺旋模型适用于较大的项目。
顺序线性开发模型和迭代开发过程模型结合在这个范例中。这意味着它类似于瀑布方法,但侧重于风险评估。在螺旋模式中,一项特定的活动在一次迭代中完成。这就是它被称为螺旋的原因。
为构建整个软件而创建的每个螺旋都遵循相同的程序。螺旋模型有四个阶段。他们是:
- 确定目标
- 风险分析
- 开发和测试
- 审查和评估
瀑布模型和螺旋模型阶段之间的唯一差异是风险分析。
螺旋模型的优点
- 与前两个模型不同,它可以适应变化。但是,要求应该表达清楚,并且不应在整个过程中更改。
- 它使用户能够在早期阶段测试系统。
- 更准确地捕获需求。
- 它规定将开发过程划分为更小的部分,允许及早创建风险较高的部分,从而实现更好、更准确的风险管理。
螺旋模型的缺点
- 程序非常复杂。
- 不可能提前预测项目的完成日期。
- 低风险计划不应采用它,因为它可能成本高昂且没有必要。
- 螺旋迭代没有尽头。
- 作为几个中间步骤的结果,需要过多的文档。
敏捷模型
为了克服这些挑战,在整个软件测试生命周期中,在敏捷范例中使用更长的测试和开发迭代。它是目前最流行的模型。如果您仍在使用瀑布方法,那么是时候转向敏捷方法了。以下是您需要了解的一些要点从瀑布测试转向敏捷测试。
客户有能力对项目进行调整以改进它并消除缺陷。换句话说,在测试过程中发现的任何错误都可以在现场纠正或修改,而无需中断测试过程。
由于企业当前的敏捷开发趋势,团队现在必须自动化他们的测试周期。这使他们能够更快地宣传新功能并获得优势。敏捷方法包括七个阶段。他们是:
- 计划
- 设计
- 开发
- 测试
- 部署
- 审查
- 发布
一个接一个地遵循这些阶段是很重要的。同样重要的是要记住,要确保应用程序为现实世界做好准备,它们必须在真实世界的用户条件下进行测试。这也意味着团队必须能够立即访问装有真实操作系统和浏览器的真实设备以进行测试。现在,跟上这样一个内部设备实验室需要大量的金钱、时间和精力。
避免成本和精力的最佳方法是选择基于云的 Web 测试平台。LambdaTest 是一个基于云的跨浏览器测试平台,非常适合这里。它提供基于云的可扩展基础架构,并提供包含 3000 多种浏览器、设备和操作系统组合的在线浏览器场。您可以将 LambdaTest 与在线 Selenium Grid 的强大功能结合使用,在几秒钟内运行数千个并行测试,从而减少测试执行时间并提供更快的代码更改反馈。
敏捷模型的优势
- 在敏捷模型中,流程被分成许多单独的模型,以便开发人员可以分别处理它们。
- 它提出了一种迭代和增量的软件测试和开发方法。
- 它让消费者可以提前了解项目,并允许他们定期做出决定和修改。
- 与其他模型相比,敏捷技术被认为是一种非结构化模型。
- 在测试会话之间,可以纠正问题、错误和缺陷。
- 它需要较少的计划,并且项目或测试过程在短迭代中完成。
它具有很多优点,适合组织坚持使用敏捷方法。
软件测试生命周期的最佳实践
以下是软件测试生命周期中遵循的一些最佳实践。
- 在决定测试范围时,请咨询重要的业务用户。
- 用户反馈用于确定基本业务流程。
- 由于它们占用了用户的大部分时间和资源,因此可以确保测试策略涵盖对那些基本业务操作的测试。
- 确定对用户体验产生负面影响的最常见故障或问题。
- 测试计划为重要流程提供干净的用户体验。
- 计划进行测试以确保产品满足所有用户要求。