软件测试是为了发现错误而执行程序的过程,其目的在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。测试主要是由人而不是由机器执行,因而存在心理学的问题。
  软件测试技术大体上可以分成白盒测试和黑盒测试。白盒测试技术依据的是程序的逻辑结构,主要包括逻辑覆盖和路径测试技术等;黑盒测试技术依据的是软件行为的描述,主要包括等价类划分、边界值分析和状态测试等。
  程序的静态测试是在不执行程序的条件下,有条理地仔细审查软件设计、体系结构和代码,从而找出软件错误的过程,其主要方法包括同行审查、代码会审、代码走查等。
  由于软件错误的复杂性,软件测试需要综合应用测试技术,并且实施合理的测试步骤,即单元测试、集成测试、确认测试和系统测试。单元测试集中于每一个独立的模块;集成测试集中于模块的各组装;确认测试集中检验是否符合需求规格说明书中确定的各种需求;系统测试集中检验系统所有元素之间协作是否合适,整个系统的性能和功能是否满足。
  软件调试则是在软件测试成功后开始的工作,其任务是进一步诊断和改正程序中的错误。软件调试是程序员自己进行的技巧性很强的工作,调试工作的困难与人的心理因素和技术因素都有关系,需要繁重的脑力劳动和丰富的经验。
  软件测试中存在许多机械的和重复性的工作,对此可以应用计算机进行自动化测试,从而可以大大促进软件测试的质量和产品化。但测试自动化具有局限性,不可能取代手工测试。