目前,有許多描述軟件故障的術語,比如:缺陷( defect)、失效(failure )、錯誤(error )、故障( fault)等等,這些術語之間有著細微的差別,但是又難以說清,總之,有的軟件故障隱藏在代碼中。
如果按照正常的運行順序、給出合乎常規(guī)的輸入數據就不會輕易暴露出異常,但是無論這些術語之間存在著怎樣的差別,可以將所有的軟件故障都稱之為軟件缺陷,因此,軟件測試的目標就是用有效的技術和方法發(fā)現軟件中存在的軟件缺陷。
根據軟件開發(fā)過程,可以將如下幾種情況定義為軟件缺陷:軟件沒有完成需求規(guī)格說明書給出的功能需求。由于理解上的偏差,軟件設計沒有嚴格遵循。由于編碼實現與軟件設計之間的接口出現了問題,使得軟件出現了不應有的錯誤,有時甚至無法運行。
軟件功能超出了產品說明書預先指明的范圍。軟件沒有達到產品說明書雖未指出但應該達到的目標。軟件測試人員在實施靜態(tài)分析時,發(fā)現編碼實現冗余,導致運行速度緩慢??蛻粽J為軟件有缺陷,不能滿足其要求。
當然,在實際的軟件開發(fā)過程中,還需要其他一些有效的措施來減少軟件缺陷的產生。比如,在進行軟件測試之前,根據被測軟件的特點組織相關專家進行分析,明確何種類型的軟件故障會出現在被測軟件中,就可以有的放矢地地實施軟件測試。
推薦閱讀: