Go 語言 測試

2023-03-14 16:46 更新

原文鏈接:https://gopl-zh.github.io/ch11/ch11.html


第11章 測試

Maurice Wilkes,第一個存儲程序計算機EDSAC的設(shè)計者,1949年他在實驗室爬樓梯時有一個頓悟。在《計算機先驅(qū)回憶錄》(Memoirs of a Computer Pioneer)里,他回憶到:“忽然間有一種醍醐灌頂?shù)母杏X,我整個后半生的美好時光都將在尋找程序BUG中度過了”??隙◤哪侵蟮拇蟛糠终5拇a農(nóng)都會同情Wilkes過分悲觀的想法,雖然也許會有人困惑于他對軟件開發(fā)的難度的天真看法。

現(xiàn)在的程序已經(jīng)遠比Wilkes時代的更大也更復(fù)雜,也有許多技術(shù)可以讓軟件的復(fù)雜性可得到控制。其中有兩種技術(shù)在實踐中證明是比較有效的。第一種是代碼在被正式部署前需要進行代碼評審。第二種則是測試,也就是本章的討論主題。

我們說測試的時候一般是指自動化測試,也就是寫一些小的程序用來檢測被測試代碼(產(chǎn)品代碼)的行為和預(yù)期的一樣,這些通常都是精心設(shè)計的執(zhí)行某些特定的功能或者是通過隨機性的輸入待驗證邊界的處理。

軟件測試是一個巨大的領(lǐng)域。測試的任務(wù)可能已經(jīng)占據(jù)了一些程序員的部分時間和另一些程序員的全部時間。和軟件測試技術(shù)相關(guān)的圖書或博客文章有成千上萬之多。對于每一種主流的編程語言,都會有一打的用于測試的軟件包,同時也有大量的測試相關(guān)的理論,而且每種都吸引了大量技術(shù)先驅(qū)和追隨者。這些都足以說服那些想要編寫有效測試的程序員重新學(xué)習(xí)一套全新的技能。

Go語言的測試技術(shù)是相對低級的。它依賴一個go test測試命令和一組按照約定方式編寫的測試函數(shù),測試命令可以運行這些測試函數(shù)。編寫相對輕量級的純測試代碼是有效的,而且它很容易延伸到基準測試和示例文檔。

在實踐中,編寫測試代碼和編寫程序本身并沒有多大區(qū)別。我們編寫的每一個函數(shù)也是針對每個具體的任務(wù)。我們必須小心處理邊界條件,思考合適的數(shù)據(jù)結(jié)構(gòu),推斷合適的輸入應(yīng)該產(chǎn)生什么樣的結(jié)果輸出。編寫測試代碼和編寫普通的Go代碼過程是類似的;它并不需要學(xué)習(xí)新的符號、規(guī)則和工具。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號