通常軟件測試會暴露軟件中的缺陷,經過修正后可以保證軟件系統的功能滿足需求并正確運行。但是,在系統測試和確認測試中,測試人員容易遺漏一些隱藏的缺陷。眾所周知,軟件測試不可能發現所有的缺陷,而軟件開發周期各個階段仍然存在注入缺陷的可能,但是,有一些缺陷是測試中容易忽略的,也就是說,通過測試方法和用例可以充分暴露這些缺陷,遺憾的是,它們往往被忽略或者某種原因忘記測試了,這就給軟件留下了隱患或者危機。這些容易被忽略的缺陷包括:
1、安裝缺陷
通常項目組完成代碼后,發布時候安裝打包是最后一個環節,而軟件測試人員通常在測試的時候,沒有仔細的測試這一部分,而把用例集中在其他功能上。安裝時候的缺陷通常通過拷貝而不是運行安裝程序方式給測試人員安裝軟件,結果正式安裝時候出現問題,引起例如控件沒有注冊,注冊表沒有導入等。刪除時候沒有注意安裝文件夾是否存在用戶文件,造成數據丟失;使用絕對路徑;安裝順序沒有說明書。
2、配置文件
有些文件在ini等配置文件中寫出了管理員口令密碼等信息,而且是明文的!這是一個安全隱患。另外,有些安裝文件的 XML 文件,為了方便在數據庫和中間層連接文件中寫入了Admin 口令和密碼。作為一個合格的軟件測試人員,必須檢查這些可以用記事本打開的文件。因為,一個稍有常識而且喜歡探索的用戶,可能從中獲取信息而成為不自覺的黑客。所以,配置文件可能成為軟件安全方面的一個缺陷。
3、網頁安全缺陷
現在網站開發已經注意到:登陸網站進入其內部網頁后,直接拷貝網址,然后粘貼到另一IE 窗口輸入,可以繞過登陸直接訪問。也許商業網站很關注這個問題,但是很多行業軟件卻很容易忽略。
網頁安全缺陷還可能存在于 IE 彈出的子窗口。有些設計不嚴格的軟件,在主頁面關閉的時候子頁面還可以運行,這是一個明顯的漏洞,而且還大大增加了錯誤發生的幾率。
4、判斷順序/邏輯缺陷
對界面進行多個輸入判斷的時候,非常容易出現這種問題。例如判斷年月順序,判斷長度,判斷非空等。假如操作員僅僅滿足單個條件,保存不能成功;而按界面從上之下順序一一滿足條件之后,保存是沒有問題的。但是,改變一下輸入的次序,校驗失效。例如,一一滿足條件之后,不保存,倒過來將上面的輸入改成非法輸入,然后保存,結果居然也能成功,這是因為原先的判斷由于發生過,或者根據語句順序只檢查最后一個判斷,所以沒有報錯。這種錯誤尤其在 Java scrīpt 腳本的頁面中要注意。能夠保存不能保證數據正確,有可能引起系統崩潰或者后續數據錯誤。所以,在測試的時候,不要按照正常的順序輸入,而是要打亂步驟,看看代碼是否強健,是否在判斷邏輯上沒有錯誤。良好的代碼應該經得起折騰,至少保存時會再此全部進行判斷,而不只是簡簡單單走到判斷的最后一行。
5、調試語句和冗余信息
維護項目和升級改造的推廣系統最容易潛伏這類缺陷。典型表現在沒有刪除或者屏蔽調試語句。彈出一個界面不友好的提示信息,會使不明真相的用戶產生誤以為系統發生了嚴重故障,從而引起對軟件的不信任感。頁面中某個角落存在當前客戶不需要的冗余按鈕和功能也是一種缺陷。多余的功能會使用戶以為是額外附加部分而去使用,其結果可想而知;而多余的按鈕會誤導好奇心強的用戶操作,產生不必要的錯誤。
同樣值得關注的還有參數設置,由于沒有實際數據,開發人員在調試或者單元測試的時候,習慣性的進行自我設定而忘了刪除,軟件測試人員可能會忽略掉了這部分測試,也可能導致在客戶現場發生錯誤而影響系統發布和驗收。
6、不可重現的故障
新參加軟件測試的人員或者新來的開發人員總是要問,不可重現的缺陷是否需要記錄,有必要嗎?回答是肯定的。測試必須如實的記錄發生的問題,也許不能重現,或者使非軟件系統本身問題,但是,可能這些偶然性背后是有規律的,不記錄這些,就不可能發現這些規律。
7、多節點的逆向流轉缺陷
原文轉自:http://www.anti-gravitydesign.com