軟體缺陷產生的原因多種多樣,一般可能有以下幾種原因。

1. 需求表述、理解、編寫引起的錯誤。

2. 系統設計架構引起的錯誤。

3. 開發過程缺乏有效的溝通及監督,甚至沒有溝通或監督。

4. 程序員編程中產生的錯誤。

5. 軟體開發工具本身隱藏的問題。

6. 軟體複雜度越來越高。

7. 與用戶需求不符,即使軟體實現本身無缺陷。

8. 外界應用環境或電磁輻射導致的缺陷。

上述情況都可能產生缺陷,常見的缺陷分為以下4種情況。

1. 遺漏

規定或預期的需求未體現在產品中,可能在需求調研或分析階段未能將用戶規格全部分析實現,也可能在後續產品實現階段,未能全面實現。通俗而言,一是根本沒記錄需求,需求本身就遺漏了客戶的原始需求,二是需求是齊備完整的,但在設計開發階段,遺漏了某些需求。

【案例1 OA系統需求遺漏缺陷】

OA系統需求調研時,用戶提出需要實現發文回收功能,發出的通告信息可在對方未查收時撤銷,需求開發人員在需求調研階段並未記錄該需求,從而導致此需求遺漏。

另外一種情況是,需求開發人員在需求規格說明書中已經詳細闡明瞭需求,但研發人員在實現時遺漏了。

2. 錯誤

需求是正確,但在實現階段未將規格說明正確實現,可能在概要、詳細設計時產生了錯誤,也可能是編碼錯誤,即有此需求,但需求實現與用戶期望不一致。例如,排序功能,用戶期望的是按價格升序排列,實現時卻是降序排列。

【案例2 HTML代入注入錯誤】

OA系統中添加圖書類別時,類別名稱輸入HTML代碼,系統未做安全性防禦,未能屏蔽該代碼,從而導致成功添加對應代碼功能,如圖1所示。

圖1 OA系統缺陷示例

此處的缺陷是一個典型的功能錯誤,可定性為安全性缺陷,系統因注入的HTML代碼而顯示出刪除操作功能代碼。

3. 冗餘

需求規格說明並未涉及的需求被實現,即用戶未提及或無需的需求,在被測對象中得到了實現,如用戶未提及查詢結果分類顯示,但在實際實現中,卻以不同類別進行了顯示。

一般而言,冗餘功能從用戶體驗角度來看,如果不影響正常的功能使用,則可以保留,除非存在較大應用風險。

4. 不滿意

除了上述遺漏、錯誤、冗餘3種常見缺陷類型外,用戶對實現不滿意亦可稱為缺陷。例如,針對中老年人的系統在設計開發過程中,採用了時尚前衛的界面、細小雋秀的字體,導致終端用戶不適應、看不清,這樣即使所有需求都得到了正確的實現,但不符合用戶使用習慣,也是一種缺陷。

在測試過程中,測試工程師需要時刻記住,功能再完美、界面再漂亮的系統,如果不是用戶期望的,則該系統完全無效,所以測試過程中需處處以用戶為基準,從需求角度出發。

【案例3 用戶體驗缺陷】

圖2是用戶通過「我的辦公桌」流程鏈接跳轉後的顯示界面,在圖中可以看到:「請注意查看待辦流程:請假申請:[2006-01-01 04:37:37]」顯示時出現了不恰當的換行,04:37被錯誤換行,此種類型的錯誤即可認為是用戶體驗方面的缺陷。

圖2用戶體驗缺陷

文章來自匯智動力技術大佬寶哥

感興趣的ITer歡迎加q:2834267066交流

推薦閱讀:

相關文章