zhangyunli1113 发表于 2007-8-31 03:17:38

软件测试是什么?

什么是软件测试呢?先来看两个比较流行的定义:
    第一个是,1983年IEEE提出的:它说软件测试是使用人工或自动手段来运行或测试某个系统的过程,其目的是检验它是否满足规定的需求户则弄清与其结果与实际结果之间的差别。
    第二个是,G.Myers提出的,他认为软件测试是:1.程序测试是为了发现错误而执行程序的过程;2.好的测试方案是极可能发现迄今为止尚未发现的的错误的测试方案;3.成功的测试是发现了至今为止尚未发现的错误的测试。
   这两个定义是现在对软件测试的比较普遍的认识,但是我认为这两个定义,对现在的测试来说都是不能很精确的解释测试的真正工作性质。其中最明显的一点就是,他们都很明确的说明了测试是一个过程!我认为测试是一个过程不是软件生命周期中的一个阶段,这是无可厚非的,但是在上边两个定义中都是说是软件或系统执行或运行的过程,这就有有些偏颇。为什么呢?
   首先、一个理想的软件测试是贯穿在整个软件测试过程中的,也就是说,在软件生命周期的初期软件需求分析阶段,软件测试就应该进入软件生命周期,在这个阶段文档的形成期,如果说要对程序执行就不现实了,可是在该时期对需求分析文档的测试——SRS的测试能说他不是测试?
   其次、就测试技术来说。我们现在就测试技术来说,包括动态测试与静态测试。动态测试进行时必须运行被测软件,这个是符合以上两个定义的;但是对于静态测试,它主要有包括人工静态分析和技术评审。而在人工静态分析中,主要包括两项工作:代码走读与正规检视。代码走读主要对象就是代码,有时是LLD;正规检视,主要关注的就是设计文档,有时可以是代码,然后对他们的规范化进行检查。技术评审,一般针对的对象就是SRS、LLD、HLD、计划、测试方案等文档。由此看来在静态测试的主要工作中,程序或系统的运行是没有必要的也是不可实现的。由此看来现在的测试技术下,测试工作的进行也是可以不运行程序就可以进行的。
    第三、由我们先子比较认同的软件测试的V&V模型来看,在器模型的中间向下行走的分支,测试工作就已经开始进行,而在这整个分支中,都为执行程序或系统。
    第四、在测试工作的管理上。无论是同行评审、需求管理、配置管理都几乎是不存在程序运行的。
    总之,软件测试仅说是一个程序或系统的执行过程是不全面的。那也只能在软件测试理论还不成熟的的环境下可以讨论的,而在今天比较关心项目流程时候再延续那种第一是不太科学的。
    我认为软件测试其实就是一个通过采用一定的技术,运用一定的手段,结合科学的流程管理使软件产品缺陷尽可能减少,功能尽可能接近我们预期目标的过程。
   通过上边的这句话,我们不难理解软件测试了,技术是依据,我们只有有了比较良好的成熟的技术作为我们工作的依据,我们在做工作时才知道怎么做,如何做;手段包括手动或自动化的,运用自动化工具可以有效提高我们工作效率;流程是根本,只有有一个科学有效的流程管理,我们的工作才能有效进行,我们才知道我们什么时候做什么,这时期我该做什么,不该做什么。测试的目的就是产品缺陷尽可能少,躬耕尽可能接近目标。
    这些都是个人理解,有什么不足或错误请诸位高手多指点批评!sdlkfj3

[ 本帖最后由 zhangyunli1113 于 2007-8-31 03:18 编辑 ]

lihongwei 发表于 2007-8-31 23:34:51

厉害啊!张美女sdlkfj6
页: [1]
查看完整版本: 软件测试是什么?