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