有關(guān)自己與之間的淵源而言,獲悉這個(gè)領(lǐng)域的時(shí)間不長,接觸的時(shí)間就更可謂短暫,但仔細(xì)想來,還要從大學(xué)期間說起比較好。
這個(gè)概念第一次出現(xiàn)在我的眼前時(shí),是大四上學(xué)期開的軟件工程這個(gè)科目中所涉及到的一點(diǎn)點(diǎn)。由于某些因素,使我在大學(xué)期間忽略了對測試領(lǐng)域相關(guān)知識(shí)的儲(chǔ)備。第二次面對它時(shí),是考研復(fù)習(xí)準(zhǔn)備階段。那時(shí),我對測試這個(gè)領(lǐng)域也僅僅只是知道,就是中文書面表達(dá)的“測試”這兩個(gè)漢字的含義而已。
工作的前兩年里,或許是因?yàn)閺氖碌氖怯嘘P(guān)算法方面性質(zhì)的工作,所以并未對測試這個(gè)領(lǐng)域給予過多的關(guān)注,還好,或多或少還是接觸到了一些。直到最近一年多來,由于一個(gè)大型項(xiàng)目人手不夠的緣故,所以臨時(shí)從自己負(fù)責(zé)的另一個(gè)研究項(xiàng)目中抽過來(剛好該項(xiàng)目階段性完成),負(fù)責(zé)有關(guān)此項(xiàng)目的測試部署與規(guī)劃。而這個(gè)時(shí)候,才能說是:真正意義上接觸到了軟件測試這個(gè)領(lǐng)域。
雖然,在此項(xiàng)目中也有自己開發(fā)的一些模塊、算法及一些模塊、算法的優(yōu)化跟重構(gòu)。但,從這個(gè)項(xiàng)目階段性結(jié)束后自己的體會(huì)而言,給我感悟最深的還是有關(guān)軟件測試這個(gè)領(lǐng)域的。通過在這個(gè)項(xiàng)目里的工作,讓我真正體會(huì)到了:軟件測試是一門藝術(shù)。恰恰也是因?yàn)檫@個(gè)緣故,這也才讓我開始有了想重新認(rèn)識(shí)和品位測試藝術(shù)這一領(lǐng)域的奧妙所在。
喜歡在網(wǎng)上書店中遛達(dá),看到不錯(cuò)的書就買下。為什么不去書店?一個(gè)字,懶唄!總覺得,有那去書店的時(shí)間,完全可以好好睡一美覺,亦或可親手烹制一頓美味可口的美食。哎,反正就是,懶得走出家門去逛街!
恰巧,此次瀏覽書籍時(shí),無意間看到了《The Art of Software Testing》這本書。在看了大家所給予它極高的評價(jià)留言后,雖然有些疑惑(畢竟這個(gè)時(shí)代,槍手太多了!),但我深信:一本書能夠“活”25年,應(yīng)該還是很不簡單的。于是,就半信半疑的訂購了這本書,期望能夠從這本書中獲悉到有用的知識(shí),來豐富一下自己面對這個(gè)領(lǐng)域時(shí)的貧乏困境,亦作為知識(shí)儲(chǔ)備。
暈,這么薄!這是我拿到這本書后的第一反應(yīng)。
真的!沒有預(yù)料到這書會(huì)這么??!原以為這本經(jīng)典的書,會(huì)諸如《C++ Primer》、《The C++ Programming Language》、《Programming Windows》等這些著作那么厚。而當(dāng)翻看了幾章后,覺得確實(shí)很經(jīng)典,也明白了為什么這本書會(huì)“活”了25年。于是,就誕生了我對這本書的第二感覺:薄而精!看來是需要自己多花些時(shí)間去慢慢的品味,這樣才方可體味到最純最美的底醞。
打住自己對這本書的侃侃而談(怕跑題太遠(yuǎn),拽不回來),還是關(guān)注一下軟件測試這個(gè)領(lǐng)話題吧!
軟件測試,怎么說呢?就自身經(jīng)歷而言,確實(shí)如書上所說:測試依然是軟件開發(fā)中的“黑色藝術(shù)”。大學(xué)期間,計(jì)算機(jī)課程開的不少,沒聽說有專門開一門關(guān)于測試的課程。所以,在學(xué)生階段,測試就屬于是個(gè)被拋棄掉的名詞!畢業(yè)時(shí),不是做軟件就是去搞網(wǎng)絡(luò),沒有聽到一個(gè)同學(xué)去應(yīng)聘測試的!工作中,有專門的測試組(或部門),就更不用自己怎么上心去研究了!如今的氛圍就是:紅的夠紅,黑的夠黑!那叫一個(gè)“?!?!哎,為什么不實(shí)行“兩手都要抓,兩手都要硬”的政策呢(一己之見,偏頗在所難免)?或許,我還不明白:“術(shù)業(yè)有專攻”的深刻含義吧!
算了,最后還是談?wù)剬@本書的總觀吧!
該書是針對測試這一主題進(jìn)行的實(shí)踐探討,而不是理論研究,順便捎帶了些對新的語言和過程的探討;
前言中提到了一個(gè)最為重要而又是長期、基本的指南:如何確保所開發(fā)的所有軟件做了其應(yīng)該做的,并且同樣重要的是,未做其不應(yīng)該做的?
引言里指出一條著名的經(jīng)驗(yàn):即在一個(gè)典型的編程項(xiàng)目中,軟件測試或系統(tǒng)測試大約占用50%的項(xiàng)目時(shí)間和超過50%的總成本。
有創(chuàng)意!這是我對該書第一章的評價(jià),也是唯一一次在看新書開篇時(shí),能夠把第一章給透透徹徹看完的。為何?還不是實(shí)在不能恭維有些書籍在開篇就進(jìn)行枯燥而繁多的總結(jié)性、介紹性的文字。雖心里也清楚這些文字存在的重要性。但每每,還總是先粗略瞄過,在通讀全書后,才會(huì)再次認(rèn)認(rèn)真真的看那些文字(這時(shí),才真的能感悟到“提綱攜領(lǐng)”的中文含義啊)。
創(chuàng)意在于:它只通過展示一次自評價(jià)測試,就能吸引我的眼球,并涌出一種想繼續(xù)向下讀的沖動(dòng);更能引起對自身一些有關(guān)邏輯思維(考慮欠周全、縝密,存在盲點(diǎn))、聯(lián)想能力(需拓展思維,要富于聯(lián)想與想像,即:思維“活”起來)、角度問題(要巧妙轉(zhuǎn)換角度)等方面,所可能存在的不足進(jìn)行深思。當(dāng)然,能夠引起深思的緣故,還不是在于那個(gè)評價(jià)測試嘛!提起來,汗顏!依據(jù)所謂的測試用例(即:特定的數(shù)據(jù)集合)自測試后,發(fā)現(xiàn)自己只能考慮到11項(xiàng)(總14項(xiàng))需要測試的關(guān)鍵點(diǎn)。
文尾,談?wù)勛髡邔Α败浖y試”這個(gè)概念的定義吧。所謂軟件測試,就是一個(gè)過程或一系列過程,用來確認(rèn)計(jì)算機(jī)代碼完成了其應(yīng)該完成的功能,不執(zhí)行其不該有的操作。軟件應(yīng)當(dāng)是可預(yù)測且穩(wěn)定的,是不會(huì)給用戶帶來意外驚奇的。
“軟件測試是一項(xiàng)技術(shù)性工作,但同時(shí)也涉及經(jīng)濟(jì)學(xué)和人類心理學(xué)的一些重要因素”,這是該書第二章中最吸引我的話,耐人深思。而對于該章的內(nèi)容,我個(gè)人覺得可概括為以下三個(gè)方面: 心理學(xué)角度:駁斥了一些社會(huì)普遍存在的錯(cuò)誤認(rèn)識(shí),并給出了測試的正確定義及在含義上進(jìn)行了延伸。(用寫文章上常用的術(shù)語來說,是:先破后立。)
經(jīng)濟(jì)學(xué)角度:驗(yàn)證軟件測試不能夠發(fā)現(xiàn)“所有”的錯(cuò)誤。(術(shù)語是:各個(gè)擊破。)
歸納了軟件測試中的一些基本原則(術(shù)語是:歸納與演繹。),及三個(gè)重要的測試原則:
軟件測試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;
一個(gè)好的測試用例具有較高的發(fā)現(xiàn)某個(gè)尚未發(fā)現(xiàn)的錯(cuò)誤的可能性;
一個(gè)成功的測試用例能夠發(fā)現(xiàn)某個(gè)尚未發(fā)現(xiàn)的錯(cuò)誤。
文尾,值得一提的是:在本章能明顯感到作者側(cè)重于從心理學(xué)角度來分析一些潛在的問題。