python測(cè)試中會(huì)反映什么問題?
我把測(cè)試當(dāng)做是文檔。這是我對(duì)代碼預(yù)期效果的文檔。測(cè)試告訴我,我(或我之前的人)如何期望代碼來工作,以及他們認(rèn)為事情會(huì)出錯(cuò)的地方。所以,當(dāng)我現(xiàn)在編寫測(cè)試時(shí),我會(huì)記住這一點(diǎn):
演示如何使用我正在測(cè)試的類/函數(shù)/系統(tǒng)。
展示出所有我認(rèn)為可能會(huì)出錯(cuò)的內(nèi)容。
上述的一個(gè)必然結(jié)果是,在大多數(shù)情況下,我測(cè)試的是行為,而不是實(shí)現(xiàn)。
我在#2中漏掉的東西就是bug的來源。
因此,每當(dāng)我發(fā)現(xiàn)一個(gè)bug時(shí),我都會(huì)確保代碼修復(fù)程序有相應(yīng)的測(cè)試(稱為回歸測(cè)試)來記錄信息:這是另一種可能出錯(cuò)的方法。
但是,僅僅編寫這些測(cè)試并不能提高代碼質(zhì)量,需要實(shí)際編寫代碼。但是我從閱讀測(cè)試中獲得的見解能幫助我寫更好的代碼。
但是,這不是唯一一種要做的測(cè)試。接下來就是部署環(huán)境登場的地方。
對(duì)于經(jīng)過良好測(cè)試的代碼也是如此:如果你的機(jī)器上沒有所需的庫,則會(huì)崩潰。
首先是你用來開發(fā)的機(jī)器(所有“它在我的機(jī)器上能正常工作!”這類meme(梗)的來源)。
其次是你用來測(cè)試的機(jī)器(可能與你用來開發(fā)的機(jī)器相同)。
最后,有你用來部署的機(jī)器(請(qǐng)不要讓它與你用來開發(fā)的機(jī)器相同)
如果測(cè)試和部署機(jī)器之間的環(huán)境不匹配,你就麻煩了。這就是部署環(huán)境的用武之地。
我們的機(jī)器上有本地開發(fā),它位于docker中。
我們有一個(gè)開發(fā)環(huán)境,其中機(jī)器安裝了一組庫(和開發(fā)工具),我們?cè)谏厦姘惭b在這些庫上編寫的代碼。其他依賴系統(tǒng)的所有測(cè)試都可以在這里進(jìn)行。
然后是beta / stage環(huán)境,它與生產(chǎn)環(huán)境完全一樣。
最后,生產(chǎn)環(huán)境,它們是運(yùn)行代碼并為實(shí)際客戶提供服務(wù)的機(jī)器。
目的是嘗試捕獲單元和系統(tǒng)測(cè)試發(fā)現(xiàn)不了的bug。例如,請(qǐng)求和響應(yīng)系統(tǒng)之間的API不匹配。
我想個(gè)人項(xiàng)目或小公司的情況會(huì)有很大不同。并非每個(gè)人都有資源來部署自己的基礎(chǔ)設(shè)施。但是,這個(gè)想法對(duì)于AWS和Azure等云提供商的服務(wù)也適用。
你可以為開發(fā)和生產(chǎn)設(shè)置單獨(dú)的集群。AWS ECS使用docker鏡像進(jìn)行部署,因此各環(huán)境之間相對(duì)一致。棘手的一點(diǎn)是其他AWS服務(wù)之間的集成。你是否從正確的環(huán)境中調(diào)用了正確的端點(diǎn)?
你甚至可以更進(jìn)一步:為其他AWS服務(wù)下載備用容器映像,并使用docker-compose設(shè)置本地完整環(huán)境。這樣能加速反饋循環(huán)。
好啦!今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量優(yōu)質(zhì)內(nèi)容與大家分享!
版權(quán)聲明:轉(zhuǎn)載文章來自公開網(wǎng)絡(luò),版權(quán)歸作者本人所有,推送文章除非無法確認(rèn),我們都會(huì)注明作者和來源。如果出處有誤或侵犯到原作者權(quán)益,請(qǐng)與我們聯(lián)系刪除或授權(quán)事宜。