測試的目的是什麼呢?這是乙個看起來很簡單、不太值得討論的問題,但往往這樣的問題其實是很難回答的,比如人生的意義是什麼?好,現在我們就來,列舉一下我們經常聽到的對這個問題的回答:
「軟體測試的目的是盡可能發現並改正被測試軟體中的錯誤,提高軟體的可靠性。」,這個定義聽起來很正確,但用它來指導測試會帶來很多問題。比如有的組織用發現的bug數來衡量測試人員的業績,其實這就是這種測試目的論在後面作祟,其結果如何呢:其一,有一些不夠敬業的測試人員會找來一些無關痛癢的bug來充數,結果許多時間會被浪費在這些無關痛癢的bug上(其實應該修復,何時修復,嚴重程度是什麼,優先順序是什麼,等等);其二,測試人員會花很大力氣設計一些複雜的測試用例去發現一些迄今尚未發現的缺陷,而不關心這些缺陷是否在實際使用者的使用過程當中是否會發生,從而浪費了大量的寶貴時間。究其根源,就是因為對測試目的的這種錯誤理解造成的,為什麼這麼說呢?因為軟體裡bug的數量是無從估計的,那麼如果測試的目的是為了找bug,那麼測試工作將變成一項無法完成也無法衡量進度而且部分無效的工作(因為有些bug在實際的執行過程當中根本不會發生)。
「測試的目的就是為了保證軟體質量」,這個定義也是看似正確,但實際上,混淆了測試和質量保證工作的邊界。軟體質量要素有很多,包括:understandability、conciseness、portability、consistency、maintainability、testability、usability、structures、efficiency、security等等,所以,軟體質量保證和測試其實關注的方向是不同的。
那麼測試的目的應該是什麼呢?ieee在2023年提出了軟體測試的定義:
「使用人工或自動手段來執行或測定某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。」
所以,簡言之,測試的目的應該是驗證需求,bug(預期結果與實際結果之間的差別)是這個過程中的產品而非目標。測試人員應該象工兵一樣,在大部隊(客戶)預期前進的方向上探雷、掃雷(bug),而不需要去關心那些根本沒有人會去碰的地雷。衡量乙個測試人員應該去衡量他/她測試了多少需求(測試工作量),漏過了多少bug(測試有效性)。(在後面的博文裡我們會進一步談測試後評估的重要性)
因此,我們可以看到有好的需求文件/體系對測試工作的必要性,我們看到許多測試團隊在業務需求/軟體需求不完備的情況下,往往或重新編寫測試需求。在未來的博文裡,我們會在介紹為什麼用例(use case)技術會有助於開發人員和測試人員的溝通。
軟體測試的目的
軟體測試的目的是以最少的人力 物力和時間找出軟體中潛在的各種錯誤和缺陷,通過修正各種錯誤和缺陷提高軟體質量,迴避軟體發布後由於潛在的軟體缺陷和錯誤造成的隱患所帶來的商業風險,一句話就是規避風險。乙個好的測試用例在於發現從前未發現的錯誤 乙個成功的測試是發現了從前未發現的錯誤的測試。所以更為合適的定義...
軟體測試的目的
軟體 測試的目的決定了如何去組織 測試。如果測試的目的是為了盡可能多地找出錯誤,那麼測試就應該直接針對軟體比較複雜的部分或是以前出錯比較多的位置。如果測試目的是為了給終端使用者提供具有一定可信度的質量評價,那麼測試就應該直接針對在實際應用中會經常用到的商業假設。不同的機構會有不同的測試目的 相同的機...
軟體測試 軟體測試的定義 軟體測試的目的
軟體測試的定義 軟體測試已有了行業標準 ieee ansi 1983年ieee提出的軟體工程術語中給軟體測試下的定義是 使用人工或自動的手段來執行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。這個定義明確指出 軟體測試的目的是為了檢驗軟體系統是否滿足...