W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
原文鏈接:https://gopl-zh.github.io/ch11/ch11.html
Maurice Wilkes,第一個(gè)存儲(chǔ)程序計(jì)算機(jī)EDSAC的設(shè)計(jì)者,1949年他在實(shí)驗(yàn)室爬樓梯時(shí)有一個(gè)頓悟。在《計(jì)算機(jī)先驅(qū)回憶錄》(Memoirs of a Computer Pioneer)里,他回憶到:“忽然間有一種醍醐灌頂?shù)母杏X(jué),我整個(gè)后半生的美好時(shí)光都將在尋找程序BUG中度過(guò)了”??隙◤哪侵蟮拇蟛糠终5拇a農(nóng)都會(huì)同情Wilkes過(guò)分悲觀的想法,雖然也許會(huì)有人困惑于他對(duì)軟件開(kāi)發(fā)的難度的天真看法。
現(xiàn)在的程序已經(jīng)遠(yuǎn)比Wilkes時(shí)代的更大也更復(fù)雜,也有許多技術(shù)可以讓軟件的復(fù)雜性可得到控制。其中有兩種技術(shù)在實(shí)踐中證明是比較有效的。第一種是代碼在被正式部署前需要進(jìn)行代碼評(píng)審。第二種則是測(cè)試,也就是本章的討論主題。
我們說(shuō)測(cè)試的時(shí)候一般是指自動(dòng)化測(cè)試,也就是寫一些小的程序用來(lái)檢測(cè)被測(cè)試代碼(產(chǎn)品代碼)的行為和預(yù)期的一樣,這些通常都是精心設(shè)計(jì)的執(zhí)行某些特定的功能或者是通過(guò)隨機(jī)性的輸入待驗(yàn)證邊界的處理。
軟件測(cè)試是一個(gè)巨大的領(lǐng)域。測(cè)試的任務(wù)可能已經(jīng)占據(jù)了一些程序員的部分時(shí)間和另一些程序員的全部時(shí)間。和軟件測(cè)試技術(shù)相關(guān)的圖書或博客文章有成千上萬(wàn)之多。對(duì)于每一種主流的編程語(yǔ)言,都會(huì)有一打的用于測(cè)試的軟件包,同時(shí)也有大量的測(cè)試相關(guān)的理論,而且每種都吸引了大量技術(shù)先驅(qū)和追隨者。這些都足以說(shuō)服那些想要編寫有效測(cè)試的程序員重新學(xué)習(xí)一套全新的技能。
Go語(yǔ)言的測(cè)試技術(shù)是相對(duì)低級(jí)的。它依賴一個(gè)go test測(cè)試命令和一組按照約定方式編寫的測(cè)試函數(shù),測(cè)試命令可以運(yùn)行這些測(cè)試函數(shù)。編寫相對(duì)輕量級(jí)的純測(cè)試代碼是有效的,而且它很容易延伸到基準(zhǔn)測(cè)試和示例文檔。
在實(shí)踐中,編寫測(cè)試代碼和編寫程序本身并沒(méi)有多大區(qū)別。我們編寫的每一個(gè)函數(shù)也是針對(duì)每個(gè)具體的任務(wù)。我們必須小心處理邊界條件,思考合適的數(shù)據(jù)結(jié)構(gòu),推斷合適的輸入應(yīng)該產(chǎn)生什么樣的結(jié)果輸出。編寫測(cè)試代碼和編寫普通的Go代碼過(guò)程是類似的;它并不需要學(xué)習(xí)新的符號(hào)、規(guī)則和工具。
![]() | ![]() |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: