测试的根本目的就是为了发现尽可能多的缺陷。这里的缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。因此,测试是一种“破坏性”行为。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。即软件测试是为了“证伪”而非“证真”。把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的。软件测试要设法使软件发生故障,暴露软件错误, 能够发现错误的测试是成功的测试,否则是失败的测试。
  软件测试目的决定了如何去组织测试。如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。
  测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例(一组输入数据和与之对应的预期的输出结果,在设计测试用例时,应包括合理的输入数据和不合理的输入数据),利用这些用例执行程序,找出软件潜在的缺陷一个好的测试用例很可能找到至今为止尚未发现的缺陷的用例;一个成功的测试则是指揭示了至今为止尚未发现的缺陷的测试。
  主观上由于开发人员思维的局限性,客观上由于目前开发的软件系统都由相当的复杂性,决定了在开发过程中出现软件错误是不可避免的。若能及早排除开发中的错误,就可以排除给后期工作带来的麻烦,也就避免了付出高昂的代价,从而大大地提高了系统开发过程的效率,因此,软件测试在整个软件开发生命周期各个环节中都是不可缺少的。
  软件测试总的目标是:确保软件的质量,所以测试并不仅是个技术问题,更是个职业道德问题。