软件测试概述
Bd)N+WWNf ?0 软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。软件测试技术第一门户j4f%yf"|F
软件测试技术第一门户*w w,XH ~+~给软件带来错误的原因很多,具体地说,主要有如下几点:
oq'j9])`2o9Tz0软件测试技术第一门户3@h#[HD^$`①、交流不够、交流上有误解或者根本不进行交流软件测试技术第一门户F3pPZHh
软件测试技术第一门户[rim.e7^C,b,e?在应用应该做什么或不应该做什么的细节(应用的需求)不清晰的情况下进行开发。
M,gh QGK u0qN:BT0软件测试技术第一门户{%Yp/^J-_②、软件复杂性软件测试技术第一门户3n~`H:nog3w.y A
软件测试技术第一门户*guU u)} c l^!y图形用户界面(GUI),客户/服务器结构,分布式应用,数据通信,超大型关系型数据库以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代软件开发经验的人很难理解它。软件测试技术第一门户|5t'G*r3v0L p.T/S
软件测试技术第一门户 Ymg]I③、程序设计错误软件测试技术第一门户'Ja5w4w^ dTE%\
软件测试技术第一门户J h5WrHT象所有的人一样,程序员也会出错。软件测试技术第一门户+Sk.i:u%H YZ
软件测试技术第一门户(f1_*Y_0C④、需求变化软件测试技术第一门户(|"O6j%W,jZ
软件测试技术第一门户0mV0h J(K需求变化的影响是多方面的,客户可能不了解需求变化带来的影响,也可能知道但又不得不那么做。需求变化的后果可能是造成系统的重新设计,设计人员的日程的重新安排,已经完成的工作可能要重做或者完全抛弃,对其他项目产生影响,硬件需求可能要因此改变,等等。如果有许多小的改变或者一次大的变化,项目各部分之间已知或未知的依赖性可能会相互影响而导致更多问题的出现,需求改变带来的复杂性可能导致错误,还可能影响工程参与者的积极性。
f"zhXH.W/h(D/X0软件测试技术第一门户t7Rx*V t.I'\6k A&g⑤、时间压力软件测试技术第一门户 Eg9t*u{8QeX
软件测试技术第一门户)aS6Y?P*h]软件项目的日程表很难做到准确,很多时候需要预计和猜测。当最终期限迫近和关键时刻到来之际,错误也就跟着来了。
-V:@/y5I rMFO2KM0J-cz%r4fR?-|:n0Ia0⑥、自负人更喜欢说:
\ Dmtx_aB0软件测试技术第一门户/NT)?'T(N'没问题'
F,j:{Trq[0软件测试技术第一门户 x+yx `y[C.^ K'这事情很容易'软件测试技术第一门户i*h6PT0V:L-C\(I`a
软件测试技术第一门户L|9`oUcy,kN'几个小时我就能拿出来'
k.o9i#fk(Q0软件测试技术第一门户)?xu"Q!aR{太多不切实际的‘没问题’,结果只能是引入错误。软件测试技术第一门户h3u9Zw7Jr)@V.F
.AXv~ d!@*f+`b0⑦、代码文档贫乏软件测试技术第一门户n hZx6r b*|7H
1rLcR']Mm8\0 贫乏或者差劲的文档使得代码维护和修改变的异常艰辛,其结果是带来许多错误。事实上,在许多机构并不鼓励其程序员为代码编写文档,也不鼓励程序员将代码写得清晰和容易理解,相反他们认为少写文档可以更快的进行编码,无法理解的代码更易于工作的保密(“写得艰难必定读的痛苦”)。
-]Q*a/{zE%K5W0软件测试技术第一门户6EK] RKB⑧、软件开发工具软件测试技术第一门户Xi7vm"V$?7w^o M!q
8~3CVisc0 可视化工具,类库,编译器,脚本工具,等等,它们常常会将自身的错误带到应用软件中。就象我们所知道的,没有良好的工程化作为基础,使用面向对象的技术只会使项目变得更复杂。 为了更好地解决这些问题,软件界做出了各种各样的努力。
.i\5|kP(GU0-tIHw9ny0 人们曾经认为更好的程序语言可以使我们摆脱这些困扰,这推动了程序设计语言的发展,更多的语言开始流行,为了使程序更易于理解开发了结构化程序设计语言,如PL/1,PASCAL等;为了解决实时多任务需求开发了结构化多任务程序设计语言,如Modula,Ada等;为了提高重用性开发了面向对象的程序设计语言,如Simlasa等;为了避免产生不正确的需求理解,开发形式化描述语言,如HAL/S等,这使得建立基于自然语言的描述成为可能,人们以形式化语言来描述需求;为了支持大型数据库应用,开发了可视化工具,如Visual Studio、Power Builder等。程序语言对提高软件生产效率起到了一定的积极作用,但它对整个软件质量尤其是可靠性的影响,与其他因素相比作用较小。
Lj DtGsD+R1zP4bz+~1o0软件测试技术第一门户"Xx%`H"Y8|;S可能是因为程序语言基于严格的语法和语义规则,人们企图用形式化证明方法来证明程序的正确性。将程序当作数学对象来看待,从数学意义上证明程序是正确的是可能的。数学家对形式化证明方法最有兴趣,在论文上谈起来非常吸引人,但实际价值却非常有限,因为形式化证明方法只有在代码写出来之后才能使用,这显然太迟了,而且对于大的程序证明起来非常困难。 受到其他行业项目工程化的启发,软件工程学出现了,软件开发被视为一项工程,以工程化的方法来进行规划和管理软件的开发。