软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
Glenford J.Myers曾对软件测试的目的提出过以下观点:
(1) 测试是为了发现程序中的错误而执行程序的过程。
(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3) 成功的测试是发现了至今为止尚未发现的错误的测试。
(4) 测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
(5) 这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
(6) 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
(7) 另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。