我們不管是在日常的生活中,還是工作中,都應(yīng)該注意因?yàn)樾睦砹?xí)慣而出現(xiàn)錯(cuò)誤。軟件測(cè)試的目的是要證明程序中沒(méi)有錯(cuò)誤,那我們就會(huì)不自覺(jué)地朝這個(gè)方向去做;也就是說(shuō),我們會(huì)傾向于挑選那些使程序出錯(cuò)的可能性較小的測(cè)試數(shù)據(jù)。另一方面,如果我們的目標(biāo)是要證明程序中有錯(cuò),那就會(huì)選擇一些易于發(fā)現(xiàn)程序所含錯(cuò)誤的測(cè)試數(shù)據(jù)。而后一種態(tài)度會(huì)比前者給程序增添更多的價(jià)值。
1、程序測(cè)試的過(guò)程具有破壞性
測(cè)試的定義意味著程序測(cè)試的過(guò)程是具有破壞性的,其程度甚至達(dá)到了不可容忍的地步。社會(huì)上大多數(shù)人的人生觀是建設(shè)性的,而不是破壞性的。人們傾向于創(chuàng)造一個(gè)物品,而不是輕易毀壞—個(gè)物品。因此,程序測(cè)試的破壞性的定義使人們對(duì)程序測(cè)試工作望而生畏。程序測(cè)試定義還隱含著如何設(shè)計(jì)測(cè)試情況(測(cè)過(guò)數(shù)據(jù)),以及應(yīng)該由誰(shuí)和不應(yīng)由誰(shuí)來(lái)測(cè)試一個(gè)給定程序等等觀點(diǎn)。心理學(xué)研究還告訴我們,當(dāng)人在干一件已經(jīng)知道是不合適的或不可能做到的事時(shí),往往做得不好。
舉個(gè)例子,比如讓一個(gè)人在15分鐘解出一個(gè)刊登在星期曰《紐約時(shí)報(bào)》上的交叉填字字謎,10分鐘后我們會(huì)看到這人幾乎沒(méi)一點(diǎn)進(jìn)展,因?yàn)樗麜?huì)感到實(shí)際上不可能做到而放棄自已的努力。然而,如果我們要求花4小時(shí)解出這題,那也許就會(huì)看到他在開(kāi)頭的10分鐘內(nèi)有較大的進(jìn)展了。把程序測(cè)試定義為在程序中找出錯(cuò)誤的過(guò)程,就使測(cè)試成了可以做到的任務(wù),從而克服了心理上存在的問(wèn)題。另一個(gè)令人煩躁的問(wèn)題是即使程序完成了預(yù)期要求,仍可能含有錯(cuò)誤。也就是說(shuō),如果程序不按要求工作,它顯然有錯(cuò),但是如果程序做了不要它做的事,它也有錯(cuò)。
2、程序員應(yīng)避免測(cè)試自己的程序
開(kāi)發(fā)者被指定測(cè)試自己的代碼是一件很糟糕的事。開(kāi)發(fā)和測(cè)試生來(lái)就是不同的活動(dòng)。開(kāi)發(fā)是創(chuàng)造或者建立什么東西的行為,一個(gè)模塊或者整個(gè)系統(tǒng)。而測(cè)試的其中目的是證明一個(gè)模塊或者系統(tǒng)工作不正常。這兩個(gè)活動(dòng)之間有著本質(zhì)的矛盾。一個(gè)人不太可能把兩個(gè)截然對(duì)立的角色都扮演的很好。基于這個(gè)想法,應(yīng)該限制開(kāi)發(fā)者在測(cè)試中的參與。給他們比較合適的任務(wù)是進(jìn)行有可能的較低層的測(cè)試--單元測(cè)試。不同當(dāng)一個(gè)程序員在完成了設(shè)計(jì),編寫(xiě)程序的建設(shè)性工作后,要一夜之間突然改變他的觀點(diǎn),設(shè)法對(duì)程序形成一個(gè)完全否定的態(tài)度,那是非常困難的。
我們可以把測(cè)試看做是對(duì)一篇論文或—本書(shū)作校對(duì),或與寫(xiě)評(píng)論相類(lèi)似的工作。正如許多作者所知,校對(duì)或批評(píng)自己的著作是非常困難的。也就是說(shuō),在自已的工作中找出缺陷往往是人的心理狀態(tài)所不容的。
3、程庫(kù)設(shè)計(jì)機(jī)構(gòu)不應(yīng)測(cè)試自己的程序
在許多意義上來(lái)說(shuō),一項(xiàng)工程或一程序設(shè)計(jì)機(jī)構(gòu)是個(gè)有生命的有機(jī)體,它同樣有心理學(xué)問(wèn)題。再者,在大多數(shù)情況下,人們都是以在給定日期內(nèi),以一定代價(jià)編制程序的能力來(lái)衡量程序設(shè)計(jì)機(jī)構(gòu)和項(xiàng)目管理人員的。這祥做的一個(gè)理由是時(shí)間和成本指標(biāo)便于衡量,而程序的可靠性卻很難度量。要程序設(shè)計(jì)機(jī)構(gòu)在測(cè)試自己的程序時(shí)持客觀態(tài)度是困難的,因?yàn)槿绻谜_的定義看待測(cè)試,就不大可能按預(yù)定計(jì)劃完成測(cè)試也不大可能把耗費(fèi)的代價(jià)限制在要求的范圍以?xún)?nèi)。
4、軟件生產(chǎn)的三個(gè)因素
質(zhì)量、進(jìn)度和費(fèi)用。計(jì)算技術(shù)的進(jìn)步,意味著在經(jīng)濟(jì)領(lǐng)域中信息系統(tǒng)更新的速度更快。新的硬件技術(shù)的發(fā)展,均會(huì)使軟件過(guò)時(shí),系統(tǒng)交付使用的時(shí)間變得日益重要,新產(chǎn)品在其性能和費(fèi)用上被其他產(chǎn)品取代之前的推銷(xiāo)時(shí)間,即市場(chǎng)窗口就已經(jīng)縮小了。