• 功能测试: 根据功能要求,模拟业务场景以检查功能。黑匣测试是一种验证功能的常见方法。
  • 性能测试: 测试软件在不同工作负载条件下的运行情况。例如,负载测试用于评估实际负载条件下的性能。
  • 回归测试: 检查新功能是否破坏或降低功能。在没有时间进行完整回归测试时,可以使用健全性测试验证表面级别的菜单、功能和命令。
  • 安全测试: 验证您的软件是否会受到黑客攻击或存在其他恶意类型的漏洞,恶意用户可能会利用这些漏洞拒绝访问您的服务,或导致这些服务无法正常运行。
  • 压力测试: 测试系统在发生故障之前可以承受多大压力。压力测试被认为是一种非功能测试。
  • 可用性测试: 验证客户能否有效地使用系统或 Web 应用程序完成任务。
  • 在每种情况下,验证基本要求都是一项关键评估。同样重要的是,探索性测试帮助测试人员或测试团队发现可能导致软件错误且难以预测的场景和情况。

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

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

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

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

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

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

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

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

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

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

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