软件测试是检查软件是否满足预期的行为。软件测试可以向用户或发起人提供有关软件质量及其失败风险的客观、独立的信息。软件测试可以确定软件针对特定场景的正确性,但不能确定所有场景的正确性。

根据预言机测量正确性的标准,软件测试采用可能识别问题的原则和机制。预言机的示例包括规范、合同、可比产品、同一产品的过去版本、对预期或预期目的的推断、用户或客户期望、相关标准和适用法律。
软件测试本质上通常是动态的;运行软件以验证实际输出与预期的匹配。它本质上也可以是静态的;审阅代码及其相关文档。
软件测试通常用于回答以下问题:软件是否做了它应该做的事情和它需要做的事情?

从软件测试中学到的信息可用于改进软件开发过程。
一种通常建议的自动化测试方法是“测试金字塔”,其中大多数测试是单元测试,然后是一组较小的集成测试,最后是一些端到端测试。