软件测试是任何一种旨在评价一个程序和系统的属性和能力的活动,以及判定程序或系统是否满足了所要求的结果。尽管测试对于软件质量是很关键的,且被程序员和测试工程师广泛使用,但是软件测试仍然还是一种艺术,其原因还是对于软件原理的理解有限。软件的测试的难处来自于软件的复杂性:我们甚至不能对一个中等复杂程度的程序进行完整的测试。测试不只是排错(debugging)。测试的目的可以是质量保证,验证和确认,或者可靠性估计。测试也可以用来作为通用的度量数据。纠错测试和可靠性测试是测试的两个主要方式。软件测试在预算、时间和质量要求上取得平衡。

  一、概述

  软件测试是这样的一个过程,它执行一个程序或一个系统,目的是发现错误。或者,它包括这样一些活动,只要这些活动是评价一个程序(或系统)的属性和能力、以决定程序或系统是否满足了要求。软件和物理加工不一样,物理加工接受了输入,就产生输出。软件不一样的地方在于它的失效方式不同。绝大部分物理系统以固定(通常比较少)的方式失效。然而,软件却有多种奇异的失效方式。检测所有的失效模式,通常是行不通的。

  和大多数物理系统不同,软件中的大部分缺陷是设计的错误,不是制造上的缺陷。软件不会用坏,也不会磨损—一般地说,若不升级和退市,它就不会改变。所以,软件一旦发布了,设计上的缺陷或者叫bug就会埋入到软件之中并一直留在那里,直到有一天它会被触发而发作。

  在一个中等大小的软件模块里,软件的bugs几乎总是存在的。这不是因为程序员的粗心和不负责任,而是因为软件的复杂性通常是不可处理的,人管理复杂性的能力是有限的。还有一点,对应复杂系统,设计的缺陷是不可能根除的。

  全文链接:http://www.51testing.com/html/54/n-217754.html