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