軟件測試是每一個軟件項目生命周期必不可少的一個部分,每個程序開發(fā)人員都要面對這個不可避免的事實??墒顷P(guān)于測試的一些觀點,也許不是每個人都能理解的。
針對公司的BUG數(shù)不斷修改,公司發(fā)布了一道政令:“每個程序開發(fā)人員必須對自己開發(fā)的程序負責(zé);若測試小組發(fā)現(xiàn)一個Bug,開發(fā)人員扣二十塊大洋;若客戶發(fā)現(xiàn)Bug,測試人員扣三十塊大洋?!闭钜怀觯w程序開發(fā)人員和測試人員反對??墒抢习宓囊庵臼遣豢筛淖兊模钸€是照常執(zhí)行。剛好一個從政令開始時開始運作,三個月后,項目結(jié)束順利上線,項目的一主要程序員發(fā)現(xiàn)自己的項目獎金全部用來換取Bug所扣的罰款。以后的幾個月時間內(nèi)后,公司的軟件質(zhì)量大幅提高,但項目進度遠遠、遠遠落后于以前的同等項目計劃。在第六個月的某一天,公司取消了這道政令,進度跟上,BUG數(shù)大幅提高。為什么會出現(xiàn)這樣的情況呢?
這里不得不提測試的幾個重要的觀點(個人觀點,僅供參考)。
一、軟件測試的定義和目的
軟件測試是根據(jù)軟件的規(guī)格說明書和實際應(yīng)用,設(shè)計一批測試案例,查找程序是否有存在錯誤(其中錯誤是泛稱,可以是功能性,也可以是指性能或者是說和用戶的交互性差等諸多方面)。那么,軟件測試的目的是什么呢,是用測試案例來發(fā)現(xiàn)程序的錯誤還是用測試案例驗證程序正確呢?其實,一個好的測試案例,就是可以重現(xiàn)程序中沒有發(fā)現(xiàn)過的錯誤;那么測試就是發(fā)現(xiàn)程序有錯,而不是驗證正確。這一點對測試很重要,因為它會指導(dǎo)測試人員去設(shè)計測試案例的方向性原則。假若測試人員意識形態(tài)中是驗證程序正確,那么他/她設(shè)計的測試用例帶有很多虛假的成份,考慮不全面或者說設(shè)計一些不容易暴露問題的測試案例。
軟件測試的目的是發(fā)現(xiàn)尚未找到的錯誤。
二、程序員要不要參于測試
測試人員要不要參加測試呢?可能各個人持有不同的看法。有人主張,有人反對。
現(xiàn)實生活中情形可能是這樣的,程序員,特別是經(jīng)驗不是很豐富的年輕程序員,對自己設(shè)計的程序,測試了好多次,都沒有發(fā)現(xiàn)問題。程序打包提交給測試人員或用戶,操作時發(fā)現(xiàn)了有Bug,更嚴重的情況是程序運行不下去。程序員當(dāng)然不服氣,氣沖沖地來進行操作演示,竟然沒有Bug,為什么呢?是不是程序很怕他的主人(程序員)?那倒不是,分析一下,原因很簡單,程序開發(fā)人員已經(jīng)習(xí)慣于自己的邏輯思維方法,下意識中避免了或繞開了其它邏輯判斷的條件,程序當(dāng)然不會出錯。而用戶或測試人員可能有別于程序人員的邏輯思維,當(dāng)兩者的邏輯思維不相同時,程序就可能出差啦,而且?guī)茁氏喈?dāng)高。
所以,我個人認為,程序開發(fā)人員不應(yīng)對自己的開發(fā)程序進行系統(tǒng)測試。
三、測試的原則
1)要把“盡早地不斷地測試”作為測試的座右銘;
2)測試只能證明錯誤存在,而不能證明問題不存在;
3)如果程序中查出的錯誤越多,則未查出的錯誤也越多。
4)測試應(yīng)當(dāng)運用實際數(shù)據(jù)進行測試,而不是測試人員進行想象中的數(shù)據(jù);
5)測試要細心,更要有無情的心;
四、測試、質(zhì)量、進度之間的關(guān)系
有人認為持久的測試和修改可以提高軟件的開發(fā)質(zhì)理。其實未必然。假若有一個粗心的天才和一個細心的白癡做一份試卷,粗心的天才可以通過檢查(測試)來提高成績,而細心的白癡再如何細心,再如何檢查(測試),也不會做試題。
所以說軟件的質(zhì)量是設(shè)計出來的,而不是測試出來的。
有人認為只要我的時間足夠多,軟件就會出現(xiàn)零錯誤。雖然多測試會發(fā)現(xiàn)并解決一些問題。但時間并不能解決全部的問題。一個稍微復(fù)雜一點的系統(tǒng),無認通過什么樣的手法,通過什么先進的測試理論來指導(dǎo)測試,想徹底消來錯誤,那是不可能的。君不同微軟天天在發(fā)布軟件升級包,是不是微軟的技術(shù)不行,設(shè)計的測試案例不夠多,還是測試的人數(shù)不多(全部上網(wǎng)的用戶全部在幫他測試),這樣算來微軟的測試時間并不短,為什么還要天天升級,因為程序的錯誤是不可能預(yù)見式的消滅的。
那如何來平衡這測試和時間之間的關(guān)系呢,軟件開發(fā)的成本以及程序所應(yīng)用的領(lǐng)域等多個方面來進行綜合考慮。對于一般的應(yīng)用系統(tǒng)(對于上天下海有關(guān)人命的系統(tǒng)另當(dāng)論處),界定一個相對的測試標準,告之程序開發(fā)人員和測試人員,讓他們進行遵循其游戲規(guī)則,不要讓程序員老覺得沒有修改完錯誤,測試人員老是認為自己的測試進行得不夠。這個游戲規(guī)則就是設(shè)計足夠好而多的測試用例,讓用戶可以將程序運行起來。畢竟,設(shè)計軟件最終的目的是程序在基本滿足要求的情況下,合法地獲取盡可能多的利潤。
【?發(fā)表評論?0條?】