測試的目的是什么呢?這是一個(gè)看起來(lái)很簡(jiǎn)單、不太值得討論的問(wèn)題,但往往這樣的問(wèn)題其實(shí)是很難回答的,比如人生的意義是什么?好,現在我們就來(lái),列舉一下我們經(jīng)常聽(tīng)到的對這個(gè)問(wèn)題的回答:
“軟件測試的目的是盡可能發(fā)現并改正被測試軟件中的錯誤,提高軟件的可靠性!,這個(gè)定義聽(tīng)起來(lái)很正確,但用它來(lái)指導測試會(huì )帶來(lái)很多問(wèn)題。比如有的組織用發(fā)現的bug數來(lái)衡量測試人員的業(yè)績(jì),其實(shí)這就是這種測試目的論在后面作祟,其結果如何呢:其一,有一些不夠敬業(yè)的測試人員會(huì )找來(lái)一些無(wú)關(guān)痛癢的bug來(lái)充數,結果許多時(shí)間會(huì )被浪費在這些無(wú)關(guān)痛癢的bug上(其實(shí)應該修復,何時(shí)修復,嚴重程度是什么,優(yōu)先級是什么,等等);其二,測試人員會(huì )花很大力氣設計一些復雜的測試用例去發(fā)現一些迄今尚未發(fā)現的缺陷,而不關(guān)心這些缺陷是否在實(shí)際用戶(hù)的使用過(guò)程當中是否會(huì )發(fā)生,從而浪費了大量的寶貴時(shí)間。究其根源,就是因為對測試目的的這種錯誤理解造成的,為什么這么說(shuō)呢?因為軟件里bug的數量是無(wú)從估計的,那么如果測試的目的是為了找bug,那么測試工作將變成一項無(wú)法完成也無(wú)法衡量進(jìn)度而且部分無(wú)效的工作(因為有些bug在實(shí)際的運行過(guò)程當中根本不會(huì )發(fā)生)。
“測試的目的就是為了保證軟件質(zhì)量”,這個(gè)定義也是看似正確,但實(shí)際上,混淆了測試和質(zhì)量保證工作的邊界。軟件質(zhì)量要素有很多,包括:Understandability、Conciseness、Portability、Consistency、Maintainability、Testability、Usability、Structures、Efficiency、Security等等,所以,軟件質(zhì)量保證和測試其實(shí)關(guān)注的方向是不同的。
那么測試的目的應該是什么呢?IEEE在1983年提出了軟件測試的定義:
“使用人工或自動(dòng)手段來(lái)運行或測定某個(gè)系統的過(guò)程,其目的在于檢驗它是否滿(mǎn)足規定的需求或是弄清預期結果與實(shí)際結果之間的差別!
所以,簡(jiǎn)言之,測試的目的應該是驗證需求,bug(預期結果與實(shí)際結果之間的差別)是這個(gè)過(guò)程中的產(chǎn)品而非目標。測試人員應該象工兵一樣,在大部隊(客戶(hù))預期前進(jìn)的方向上探雷、掃雷(bug),而不需要去關(guān)心那些根本沒(méi)有人會(huì )去碰的地雷。衡量一個(gè)測試人員應該去衡量他/她測試了多少需求(測試工作量),漏過(guò)了多少bug(測試有效性)。(在后面的博文里我們會(huì )進(jìn)一步談測試后評估的重要性)
因此,我們可以看到有好的需求文檔/體系對測試工作的必要性,我們看到許多測試團隊在業(yè)務(wù)需求/軟件需求不完備的情況下,往往或重新編寫(xiě)測試需求。在未來(lái)的博文里,我們會(huì )在介紹為什么用例(Use
Case)技術(shù)會(huì )有助于開(kāi)發(fā)人員和測試人員的溝通。
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/