学习记录:什么是软件测试?

什么是软件测试strong>

软件测试是评估和验证软件产品或应用程序是否完成其应做的工作的过程。测试的好处包括防止错误、降低开发成本和提高性能。

有许多不同类型的软件测试,每种都有特定的目标和策略:

  • 验收测试:验证整个系统是否按预期工作。
  • 集成测试:确保软件组件或功能一起运行。
  • 单元测试:验证每个软件单元是否按预期执行。单元是应用程序中最小的可测试组件。
  • 功能测试:根据功能需求,通过模拟业务场景来检查功能。黑盒测试是验证功能的常用方法。
  • 性能测试:测试软件在不同工作负载下的表现。例如,负载测试用于评估真实负载条件下的性能。
  • 回归测试:检查新功能是否破坏或降低功能。当没有时间进行完整的回归测试时,健全性测试可用于在表面级别验证菜单、功能和命令。
  • 压力测试:测试系统在失败之前可以承受多大的压力。被认为是一种非功能性测试。
  • 可用性测试:验证客户使用系统或 Web 应用程序完成任务的能力。

在每种情况下,验证基本要求都是一项关键评估。同样重要的是,探索性测试可以帮助测试人员或测试团队发现可能导致软件错误的难以预测的场景和情况。

即使是一个简单的应用程序,也可能要接受大量不同的测试。测试管理计划有助于优先考虑哪些类型的测试提供最大的价值——给定可用的时间和资源。通过运行最少数量的测试来查找最多数量的缺陷来优化测试效率。

软件测试的演变

软件测试伴随着软件的开发而出现,软件的开发刚好在第二次世界大战之后开始。计算机科学家汤姆·基尔伯恩 (Tom Kilburn) 编写了第一款软件,该软件于 1948 年 6 月 21 日在英国曼彻斯特大学首次亮相。它使用机器代码指令执行数学计算。

调试是当时的主要测试方法,并在接下来的二十年中一直如此。到 1980 年代,开发团队不再考虑隔离和修复软件错误,而是在实际环境中测试应用程序。它为更广泛的测试奠定了基础,其中包括作为软件开发生命周期一部分的质量保证过程。

“在 1990 年代,出现了从测试到称为质量保证的更全面的过程的转变,它涵盖了整个软件开发周期,并影响了测试用例的规划、设计、创建和执行、对现有测试用例的支持和测试的过程。环境,” Alexander Yaroshko 在 uTest 开发人员 站上的帖子中说。

“测试达到了一个全新的水平,这导致了方法论的进一步发展,出现了用于管理测试过程的强大工具和测试自动化工具。”(1)

持续测试

传统上,软件测试与开发的其余部分是分开的。它通常在产品构建或执行阶段之后的软件开发生命周期后期进行。测试人员可能只有一个小窗口来测试代码——有时就在应用程序上市之前。如果发现缺陷,可能几乎没有时间重新编码或重新测试。按时发布软件但需要错误和修复的情况并不少见。或者测试团队可能会修复错误但错过发布日期。

在周期的早期进行测试活动有助于将测试工作放在最前沿,而不是作为开发的事后考虑。较早的软件测试还意味着解决缺陷的成本较低。

许多开发团队现在使用一种称为持续测试的方法。它是 DevOps 方法的一部分 – 开发和运营在整个产品生命周期中进行协作。目的是在平衡成本、质量和风险的同时加速软件交付。使用这种测试技术,团队无需在测试开始之前等待软件构建完成。他们可以在周期中更早地运行测试,以便在更容易修复时更快地发现缺陷。

为什么软件测试很重要

在开发软件时,很少有人会反对质量控制的需要。延迟交付或软件缺陷会损害品牌声誉——导致客户沮丧和流失。在极端情况下,错误或缺陷可能会降低互连系统的性能或导致严重故障。

考虑到由于安全气囊传感器检测器的软件缺陷,日产汽车不得不召回超过 100 万辆汽车。或者是导致价值 12 亿美元的军用卫星发射失败的软件错误。(2) 数字不言自明。2016 年,美国的软件故障使经??济损失了 1.1 万亿美元的资产。更重要的是,它们影响了 44 亿客户。(3)

虽然测试本身需要花钱,但如果公司拥有良好的测试技术和质量保证流程,他们每年可以节省数百万美元的开发和支持费用。早期的软件测试会在产品上市之前发现问题。开发团队越早收到测试反馈,他们就能越早解决以下问题:

  • 建筑缺陷
  • 糟糕的设计决策
  • 无效或不正确的功能
  • 安全漏洞
  • 可扩展性问题

当开发为测试留下足够的空间时,它会提高软件的可靠性,并以很少的错误交付高质量的应用程序。满足甚至超过客户期望的系统可能会带来更多的销售额和更大的市场份额。

有效软件测试的主要特征

软件测试遵循一个共同的过程。任务或步骤包括定义测试环境、开发测试用例、编写脚本、分析测试结果和提交缺陷 告。

测试可能非常耗时。对于小型构建,手动测试或临时测试可能就足够了。但是,对于较大的系统,工具经常用于自动执行任务。自动化测试可帮助团队实施不同的场景、测试差异化因素(例如将组件移动到云环境中),并快速获得关于哪些有效哪些无效的反馈。

一个好的测试方法包括应用程序编程接口 (API)、用户界面和系统级别。同样,自动化的测试越多,越早运行越好。一些团队构建内部测试自动化工具。但是,供应商解决方案提供的功能可以简化关键测试管理任务,例如:

持续测试:项目团队在每个构建可用时对其进行测试。这种类型的软件测试依赖于与部署过程集成的测试自动化。它使软件能够在流程的早期在真实的测试环境中得到验证——改进设计并降低风险。

配置管理:组织集中维护测试资产并跟踪要测试的软件构建。团队可以访问资产,例如代码、需求、设计文档、模型、测试脚本和测试结果。好的系统包括用户身份验证和审计跟踪,以帮助团队以最少的管理工作满足合规性要求。

服务虚拟化:测试环境可能不可用,尤其是在代码开发的早期。服务虚拟化模拟缺失或尚未完成的服务和系统,使团队能够减少依赖并更快地进行测试。他们可以重用、部署和更改配置来测试不同的场景,而无需修改原始环境。

缺陷或错误跟踪:监视缺陷对于测试和开发团队测量和提高质量都很重要。自动化工具允许团队跟踪缺陷、衡量其范围和影响,并发现相关问题。

指标和 告: 告和分析使团队成员能够共享状态、目标和测试结果。高级工具集成项目指标并在仪表板中显示结果。团队可以快速查看项目的整体健康状况,并可以监控测试、开发和其他项目元素之间的关系。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月16日
下一篇 2021年8月16日

相关推荐