想寫出沒有bug的軟件太難。
而Bug可能只是網(wǎng)站上的字母的錯誤,也可能是宇宙飛船爆炸,甚至是核電廠發(fā)生故障的嚴重事故。有時僅僅是影響人們的體驗,有時確實嚴重威脅人類的生命安全。
有人參與,就可能犯錯,錯誤會來源于團隊成員對于同一需求的理解不同,每個人對技術的掌握程度不同,人有情緒,有疲憊,都可能造成錯誤,引入Bug。雖然軟件技術的發(fā)展,使得軟件開發(fā)人員使用高度分裝的框架,被廣泛證明成功的程序庫,極大減少自己寫軟件時犯的錯誤。典型的如Ruby On Rails的使用,很大程度上提升開發(fā)人員開發(fā)高安全標準的網(wǎng)站。然而,抽象漏洞定律指出,“所有不證自明的抽象,在某種程度上,都是有漏洞的?!?并不是說,我們在這些高級的框架和之上寫程序就完事大吉了,而是,我們在利用這些高級抽象工具時,并沒有時間深入理解里面的細節(jié),從而,可能導致更為嚴重的設計錯誤。
而上一篇什么是軟件測試已經(jīng)講到,軟件測試的重要內(nèi)容就是發(fā)現(xiàn)錯誤,找bug,因此,軟件測試與軟件開發(fā)就想人和人的影子,有軟件開發(fā)的地方就需要測試。
不過,往深了講,軟件測試的力度可大可小,就像影子,人一樣,影子的長短卻可能不一樣長。相對應,軟件的復雜度不變,需要的軟件測試的程度也是不同的,因為軟件產(chǎn)品所服務的對象與所做的事情不同。如果這個軟件僅僅是一個demo程序,或者一個實驗,而且程序的使用者僅僅是為了看看效果,對質(zhì)量要求不高,我們很可能簡單驗證一下。但是對于醫(yī)療,航天,核電等領域的軟件產(chǎn)品,無論如何,我們都必須全力以赴進行測試。
總之,軟件測試對于軟件開發(fā)的重要性取決于,出現(xiàn)bug時對軟件產(chǎn)品造成的影響的嚴重程度。