陳詩瑤 張登翔
摘 要:軟件測試并不能保證軟件永遠(yuǎn)完美無瑕,可是如果沒有軟件測試人員,軟件出現(xiàn)的問題會更多。造成軟件不完美的原因很多,本文從多角度分析了軟件不完美的原因。
關(guān)鍵詞:軟件;軟件測試;軟件缺陷;bug
引言
隨著科技的發(fā)展,為了提高用戶體驗(yàn),無論是手機(jī)還是電腦,系統(tǒng)經(jīng)常提醒我們需要進(jìn)行軟件更新,為什么軟件需要更新呢?軟件為何不能一次性做到最好,達(dá)到一勞永逸的效果呢?軟件測試人員都做了什么?
完美是指完備美好,沒有缺陷。不完美即不是完備美好,有缺陷,對于軟件而言,就是bug。永遠(yuǎn),這是個時間限制期,將不完美在時間線上無限延長。也就是說,任何情況下,沒有哪一個軟件是完美的。
一、軟件測試的流程
軟件測試的目的是發(fā)現(xiàn)軟件的缺陷,驗(yàn)證軟件是否滿足用戶需求,并通過分析軟件錯誤產(chǎn)生的原因,以幫助發(fā)現(xiàn)當(dāng)前開發(fā)工作所采用的軟件過程的缺陷,以便進(jìn)行軟件過程改進(jìn)。軟件缺陷發(fā)現(xiàn)越早,成本越低。
軟件測試的流程大體如下:
(1)產(chǎn)品經(jīng)理提供產(chǎn)品需求文檔PRD(Product Requirements Document),測試人員進(jìn)行需求分析和文檔審查;(2)設(shè)計測試計劃,如對所需工時進(jìn)行計劃,并進(jìn)行同行評審;(3)測試人員進(jìn)行測試用例設(shè)計并進(jìn)行同行評審;(4)執(zhí)行測試,對測試場景的執(zhí)行;(5)測試人員發(fā)現(xiàn)問題,發(fā)現(xiàn)bug,測試和開發(fā)人員進(jìn)行處理;(6)問題處理完畢后,回歸測試,重復(fù)再次執(zhí)行前面的測試;(7)測試完成,編寫測試報告;(8)等待測試驗(yàn)收,驗(yàn)收通過,編寫測試報告,進(jìn)行測試總結(jié);(9)軟件符合要求,軟件上線,用戶使用。
一個軟件的上線,要經(jīng)歷業(yè)務(wù)方、項(xiàng)目經(jīng)理、產(chǎn)品經(jīng)理、舌蕨設(shè)計師、軟件開發(fā)人員、軟件測試人員等,可是經(jīng)歷了如此多的流程和人員,為何用戶使用到的軟件永遠(yuǎn)不完美呢?
二、軟件不完美的原因
(一)軟件測試做不到完全測試
完全測試軟件是不可能的,軟件的輸入量太大、輸出結(jié)果太多或者路徑組合場景太多,通過軟件測試不可能完全消除錯誤,無法做到對軟件進(jìn)行完全的測試。
例如,測試一個計算器,無法做到將計算器每一個輸入和輸出都測試一遍。測試完1+1,1+2,……1+999999999999,2+1,2+2……2+999999999999,……,還有加減乘除、平方、根號、倒數(shù)、小數(shù)等,其輸入輸出量巨大。無論從哪個角度,測試人員都無法做到對計算器的每一個結(jié)果都進(jìn)行測試。所以,軟件測試是做不到完全測試的。
(二)軟件測試總是會漏掉某些缺陷
軟件測試人員不能對軟件進(jìn)行完全的測試,但不完全測試又會漏測軟件bug。
測試人員對軟件測試的時間越久,發(fā)現(xiàn)的軟件缺陷越多,但是測試費(fèi)用也就越高,測試成本增大。相反,若測試人員對軟件測試的時間較短,測試費(fèi)用的確有所降低,但是發(fā)現(xiàn)的軟件缺陷數(shù)量越少,這樣的軟件上線,給用戶使用,就會暴露出很多問題。綜上所述,這本身就是一個矛盾體。而軟件需要上線,測試最后都會有終止時間,這就要求測試人員學(xué)會找到軟件測試的平衡點(diǎn)。其實(shí)軟件缺陷在漏掉的數(shù)量達(dá)到某一個點(diǎn)之后,就沒有明顯的變化了。測試人員就要找到軟件的最優(yōu)測試量——指測試不多不少,在有限的時間里,盡可能多的找出軟件缺陷,將巨大的缺陷減少到一個可以控制的范圍。測試人員需要針對風(fēng)險做出明智的選擇,對軟件的測試需要平衡好哪些測試是重要的,哪些測試是不重要,將風(fēng)險盡可能降低。如某些要求先保證軟件主流程正常進(jìn)行,再細(xì)看軟件細(xì)節(jié)是否爭取。
(三)測試人員不能報告潛在的軟件缺陷
當(dāng)測試人員對軟件進(jìn)行一段時間的測試后,即使這段時間很長很長,測試人員也不能完全確保該軟件就沒有軟件缺陷了。測試人員可以報告出軟件存在哪一個缺陷,卻不能匯報軟件缺陷沒有了。也就是,軟件測試人員可以說現(xiàn)存在幾個bug,卻不能說一定沒有bug了。
(四)不是所有的軟件缺陷都需要修復(fù)
不僅僅是找出軟件缺陷需要時間,修復(fù)軟件缺陷也是需要時間的,開發(fā)人員修復(fù)之后,測試人員還需要將軟件再次進(jìn)行回歸測試,即再一次驗(yàn)證,這需要時間去處理??墒乾F(xiàn)實(shí)生活中,軟件的開發(fā)測試周期有相應(yīng)的時間節(jié)點(diǎn),團(tuán)隊(duì)需要將軟件在規(guī)定的時間發(fā)布出去供用戶使用,在時間不是很充裕的情況下,會經(jīng)過多方面的協(xié)商與溝通,做出一定的取舍,可能就會出現(xiàn)帶軟件缺陷上線的情況,上線的軟件缺陷會留著下一次解決或優(yōu)化。
(五)軟件測試人員的疲憊感導(dǎo)致軟件漏測
測試人員對軟件進(jìn)行長時間的測試,會產(chǎn)生一定的疲勞,且生成定性思維,可能就會測試不出某些問題。此時,測試人員進(jìn)行適當(dāng)?shù)男菹⒄{(diào)整或更換另外人員進(jìn)行測試,這樣對于軟件的保障會更好。
(六)社會科技進(jìn)步,導(dǎo)致軟件顯得不完美
人類社會在不斷進(jìn)步,科技技術(shù)也在更新?lián)Q代,當(dāng)初各方面都比較完美的軟件,隨著時間的推移,早期的軟件已不能滿足人們的需求,這也就演變?yōu)檐浖娜毕輪栴}。軟件只有通過不斷的升級才能保持現(xiàn)在的完美。
抑或是,開發(fā)軟件的過程中,軟件是可以跟上時代的潮流,可經(jīng)過一段時間,待軟件開發(fā)出來,已經(jīng)被時代拋棄,軟件不夠完美。
(七)其他
1.若使用自動化測試,自動化測試技術(shù)不夠完善,也不能完全測試軟件,就需要將測試程序進(jìn)行不斷的更新,不斷完善自動化程序。
2.如果僅僅依賴黑盒測試,不能做到很好的測試。一個軟件的完美程度和團(tuán)隊(duì)人員的水平有一定的關(guān)系,好的團(tuán)隊(duì)開發(fā)出來的軟件也許會更完美。
3.開發(fā)過程中,產(chǎn)品的需求文檔有時處于一直更新的狀態(tài),沒有固定不變的版本。造成軟件需要多次更改,致使最后的軟件不完美。
4.測試人員的數(shù)量是有限的,軟件測試是有時間期限的,有限數(shù)量的軟件測試人員需要在有限的時間內(nèi)測試軟件,不能做到對軟件的完美測試。
5.發(fā)現(xiàn)軟件缺陷越多,就說明該軟件的缺陷越多。發(fā)現(xiàn)一個bug,周圍可能就會出現(xiàn)一群bug,也許這一群bug都是由于某一個bug而導(dǎo)致的。
6.某天開發(fā)人員心情不是很好,那他當(dāng)天開發(fā)出的軟件可能軟件質(zhì)量不是很好,缺陷就會稍微多一些。每個人的都有自己的習(xí)慣,一個人可能會經(jīng)常在某一個地方犯同樣的錯誤。
7.每個用戶的習(xí)慣不同,A用戶認(rèn)為是缺陷,B用戶可能剛好認(rèn)為挺不錯。
三、結(jié)束語
軟件永遠(yuǎn)是不完美的,恰巧是軟件不完美,才需要進(jìn)行優(yōu)化,使其更加完美,我們也需要接受軟件的不完美。軟件開發(fā)人員應(yīng)該秉著嚴(yán)謹(jǐn)?shù)膽B(tài)度進(jìn)行軟件開發(fā),不能抱著測試人員在測試時會進(jìn)行兜底的心態(tài)。同樣,軟件測試人員是第一個使用軟件的人,應(yīng)該時刻站在用戶的角度來看軟件,提升軟件的滿意度。當(dāng)出現(xiàn)問題時,測試和開發(fā)人員都需要從自身的角度看問題,從中吸取經(jīng)驗(yàn),提高軟件的完美度。開發(fā)和測試人員應(yīng)該想著為人民服務(wù)的心態(tài)開發(fā)和測試軟件,從用戶角度看待軟件。只有團(tuán)隊(duì)齊心協(xié)力,將軟件做到更好,使軟件更加完美。
參考文獻(xiàn):
[1]RON PATTON. 軟件測試: 第2版 : 英文[M]. 2006.