主页 topics 什么是软件测试?软件测试如何工作? 什么是软件测试?
通过 IBM 测试您的软件 订阅有关云计算的最新消息
包含电脑显示器、服务器、云朵、点的组合拼贴插图
什么是软件测试?

软件测试过程是指,评估和验证软件产品或应用程序是否按预期方式运行。良好测试的好处包括防止错误和提高性能。

验证应用程序质量以确保它满足用户要求

当今的软件测试在持续进行时最有效,这表明测试从设计期间开始,在构建软件时继续进行,甚至在部署到生产环境后也进行测试。持续测试意味着,组织不必等待部署了所有部分,即可开始测试。左移和右移也是最近在软件社区中获得关注的测试理念,前者将测试移到更接近于设计阶段,后者是指由最终用户执行验证。在您了解测试策略和管理计划后,在需要快速交付的情况下,将测试的各个方面自动化就变得至关重要。

战略应用程序现代化推动数字化转型

战略应用程序现代化是转型成功的关键之一,可以提高年收入并降低维护和运行成本。

相关内容

注册以获取有关 DaaS 的指南

软件测试类型

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

  • 验收测试:验证整个系统是否按预期方式工作。
  • 代码检查:确认新软件和修改的软件遵循组织的编码标准和最佳实践。
  • 集成测试:确保软件组件或功能一起运行。
  • 单元测试:验证每个软件单元是否按预期方式运行。单元是应用程序中的最小可测试组件。
  • 功能测试:根据功能要求,模拟业务场景以检查功能。黑匣测试是一种验证功能的常见方法。
  • 性能测试:测试软件在不同工作负载条件下的运行情况。例如,负载测试用于评估实际负载条件下的性能。
  • 回归测试:检查新功能是否破坏或降低功能。在没有时间进行完整回归测试时,可以使用健全性测试验证表面级别的菜单、功能和命令。
  • 安全测试:验证您的软件是否会受到黑客攻击或存在其他恶意类型的漏洞,恶意用户可能会利用这些漏洞拒绝访问您的服务,或导致这些服务无法正常运行。
  • 压力测试:测试系统在发生故障之前可以承受多大压力。压力测试被认为是一种非功能测试。
  • 可用性测试:验证客户能否有效地使用系统或 Web 应用程序完成任务。

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

即使是简单的应用程序,也可能要进行大量各种各样的测试。根据可用的时间和资源,测试管理计划帮助确定哪些类型的测试最有价值。可以运行最少数量的测试以发现最多数量的缺陷,从而优化测试有效性。

测试管理计划
软件测试历史

软件测试是伴随软件发展而出现的,它的雏形出现在第二次世界大战结束后不久。计算机科学家 Tom Kilburn 被认为是编写第一款软件的人,该软件于 1948 年 6 月 21 日在英国曼彻斯特大学首次亮相。它使用机器代码指令执行数学计算。

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

软件开发
为什么软件测试如此重要?

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

例如,由于安全气囊传感器探测器的软件缺陷,日产不得不召回超过 100 万辆汽车;软件错误还导致价值 12 亿美元的军用卫星发射失败。1 数字不言自明。2016 年,软件故障使美国经济损失了 1.1 万亿美元的资产。更严重的是,这些软件故障影响了 44 亿客户。2

尽管测试本身需要投入资金,但如果公司采用良好的测试技术和 QA 流程,每年可以节省数百万美元的开发和支持费用。早期的软件测试可以在产品上市之前发现问题。开发团队越早收到测试反馈,他们就可以越早解决问题,例如:

  • 架构缺陷
  • 设计决策失误
  • 功能无效或不正确
  • 安全漏洞
  • 可扩展性问题

如果开发为测试留出足够的空间,则会提高软件可靠性,并交付几乎没有错误的高质量应用程序。满足甚至超过客户期望的系统可能带来更多的销售额和更大的市场份额。

软件测试最佳实践

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

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

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

连续性测试

项目团队在每个内部版本完成时对其进行测试。这种类型的软件测试依赖于与部署过程集成在一起的测试自动化。该功能可以在部署过程早期在真实测试环境中验证软件,从而改进设计并降低风险。

配置管理

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

服务虚拟化

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

缺陷或错误跟踪

缺陷监控对于测试和开发团队衡量和提高质量至关重要。通过使用自动化工具,团队可以跟踪缺陷,衡量其范围和影响并发现相关的问题。

指标和报告

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

成功案例

一家领先的欧洲银行在应用程序测试期间利用服务虚拟化,以消除外部连接成本。 阅读成功案例
相关解决方案 IBM® Engineering Workflow Management

IBM Engineering Workflow Management 可助力团队管理计划、任务和项目状态,从而充当所需工作和已交付工作之间的关键环节。

IBM Engineering Test Management

IBM Engineering Test Management 是一个协作式质量管理解决方案,提供从需求到缺陷的端到端测试规划和测试资产管理。

IBM DevOps Test

全面的测试和虚拟化平台有助于确保整个软件生命周期的应用程序质量。

IBM DevOps Test Workbench

IBM DevOps Test Workbench 提供软件测试工具来支持 API 测试、功能用户界面测试、性能测试和服务虚拟化。

IBM DevOps Test Virtualization

IBM® DevOps Test Virtualization 支持在开发生命周期中进行频繁的早期测试。

IBM DevOps Automation

IBM DevOps Automation 使用生成式 AI 和自动化帮助提高生产率,降低业务风险并更快地交付应用程序。

IBM DevOps Deploy

IBM DevOps Deploy 是一种应用程序发布解决方案,它将自动化融入持续交付和持续部署流程中,并提供强大的可见性、可跟踪性和审计功能。

IBM DevOps Velocity

Velocity 自动执行发布生命周期中的流程,并收集 DevOps 流程洞察。

软件测试资源 什么是持续测试?

持续测试在加速软件开发、提高代码质量和避免代价高昂的瓶颈方面发挥着至关重要的作用。

什么是软件开发?

软件开发是指一系列计算机科学活动,专用于完成创建、设计、部署和支持软件的过程。

持续测试简明介绍

本电子书探讨了为什么更早、更频繁的测试对于实现 IBM DevOps 加快软件交付的目标至关重要。

IBM Developer (DevSecOps)

以开发人员为中心的深层次资源,旨在帮助改善您的软件生命周期体验。

IBM DevOps Automation 社区

一个平台,您可以通过网络研讨会、博客和其他精彩内容了解最新信息。与世界各地的同行讨论软件测试和 DevOps。

采取后续步骤

您准备好实施 DevOps 了吗?要按照市场需求的速度交付软件和服务,团队必须快速迭代和试验,并在反馈和数据的驱动下频繁部署新版本。最成功的云开发团队通过现代 DevOps 文化和实践,采用云原生架构,并使用一流的工具组装工具链,实现了生产力的大幅提升。

探索 DevOps 解决方案 免费试用
数据来源

1 什么是软件测试?”(ibm.com 外部链接),Thomas Hamilton,guru99.com,更新日期:2024 年 1 月 3 日

2故障经济:计算软件故障的成本”(ibm.com 外部链接),Dalibor Siroky,2017 年 10 月 30 日