大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

11個(gè)錯(cuò)誤會(huì)在你測(cè)試代碼時(shí)出現(xiàn)


  我遇到的大多數(shù)開(kāi)發(fā)人員都不怎么熱衷于測(cè)試。有些會(huì)去做測(cè)試,但大多數(shù)都不測(cè)試,不愿意測(cè)試,或者勉而為之。我喜歡測(cè)試,并且比起編寫(xiě)新的代碼,愉快地花更多的時(shí)間在測(cè)試中。我認(rèn)為,正是因?yàn)閷W⒂跍y(cè)試,我才可以花更少的時(shí)間來(lái)編寫(xiě)新的代碼或de bug,并且非常有成效。

 

  如果你不確定要不要編寫(xiě)測(cè)試或者并不常寫(xiě)測(cè)試,那么,下面這些內(nèi)容將指導(dǎo)你往一個(gè)更好的方向發(fā)展。

 

  1.沒(méi)有測(cè)試

 

  我們很容易毫無(wú)原因地掉入這個(gè)陷阱。從現(xiàn)在開(kāi)始,制定計(jì)劃添加測(cè)試到你現(xiàn)在正在處理的代碼中,并添加測(cè)試到將來(lái)的項(xiàng)目中。

 

  2.沒(méi)有從項(xiàng)目一開(kāi)始就啟動(dòng)測(cè)試

 

  我們很難再回過(guò)頭去添加測(cè)試,并且可能需要改變架構(gòu)才能添加測(cè)試,這樣做將需要你花更長(zhǎng)的時(shí)間才能產(chǎn)出可信任的代碼。從一開(kāi)始就在項(xiàng)目的生命周期添加測(cè)試可以節(jié)省時(shí)間和精力。

 

  3.編寫(xiě)失敗的測(cè)試

 

  TDD方法的普及將紅—綠—重構(gòu)的理念帶到軟件測(cè)試世界。這個(gè)理念常常被誤認(rèn)為應(yīng)該“通過(guò)編寫(xiě)一個(gè)失敗的測(cè)試開(kāi)始”。其實(shí)并非如此。在寫(xiě)代碼之前創(chuàng)建測(cè)試的目的是定義系統(tǒng)的正確行為應(yīng)該是什么。在許多情況下,它是一個(gè)失敗的測(cè)試(紅色表示),但它可能會(huì)通過(guò)一個(gè)非決定性的或未實(shí)現(xiàn)的測(cè)試來(lái)表示。

 

  4.擔(dān)心未實(shí)現(xiàn)測(cè)試

 

  軟件開(kāi)發(fā)中的一個(gè)大問(wèn)題就是,代碼和任何關(guān)于系統(tǒng)實(shí)際上應(yīng)該做什么的文檔之間的溝壑。通過(guò)擁有一個(gè)名稱中明確定義你想要實(shí)現(xiàn)的預(yù)期行為的測(cè)試,你將從測(cè)試中得到一定的價(jià)值,即使將怎么寫(xiě)測(cè)試目前還不得知。

 

  5.沒(méi)有很好地命名測(cè)試

 

  命名軟件這件事出了名的很難做好,這同樣適用于測(cè)試。關(guān)于如何命名測(cè)試有幾種流行的約定。無(wú)論你使用哪一種都沒(méi)有關(guān)系,只要你能夠一貫使用,并準(zhǔn)確描述正在測(cè)試什么。

 

  6.讓測(cè)試做太多事情

 

  又長(zhǎng)又復(fù)雜的名字通常說(shuō)明了你想同時(shí)測(cè)試多件事情。單個(gè)測(cè)試應(yīng)該只測(cè)試一件事情。如果失敗了也應(yīng)該在代碼中注明是什么地方出了錯(cuò)。你沒(méi)有必要為了知道代碼中出了什么問(wèn)題而查看是哪部分測(cè)試失敗。這并不意味著你不應(yīng)該在測(cè)試中有多個(gè)斷言,但這些斷言應(yīng)該緊密相關(guān)。例如,一個(gè)查看訂單處理系統(tǒng)輸出,并確認(rèn)輸出中是否有一個(gè)單一項(xiàng)目以及它是否包含具體項(xiàng)目的測(cè)試,是ok的。但一個(gè)驗(yàn)證相同系統(tǒng)的輸出的測(cè)試,既創(chuàng)建一個(gè)特定項(xiàng)目,又記錄到數(shù)據(jù)庫(kù)中,還發(fā)送確認(rèn)電子郵件,就不行了。

 

  7.沒(méi)有實(shí)際測(cè)試代碼

 

  經(jīng)常可以看到測(cè)試新手創(chuàng)建過(guò)于復(fù)雜的模型以及不能實(shí)際測(cè)試代碼的設(shè)置程序。他們可能會(huì)驗(yàn)證模擬代碼是否正確,或者模擬代碼是否和真正代碼做相同的事情,或沒(méi)有任何斷言而只是執(zhí)行代碼。這樣的“測(cè)試”都是白費(fèi)力氣,特別是如果它們的存在只是為了提高代碼覆蓋率水平的話。

 

  8.擔(dān)心代碼覆蓋率

 

  代碼覆蓋率的理念很崇高,但往往實(shí)際價(jià)值有限。知道運(yùn)行測(cè)試的時(shí)候有多少代碼被執(zhí)行應(yīng)該是有用的,但因?yàn)樗豢紤]正在執(zhí)行代碼的測(cè)試的質(zhì)量,因此就變得沒(méi)有意義。代碼覆蓋率在它數(shù)值非常高或非常低的時(shí)候,是挺博人眼球的。如果非常高,就表明,比起帶來(lái)的價(jià)值,過(guò)多的代碼可能正在被測(cè)試。非常低的代碼覆蓋率表明有可能代碼的測(cè)試不夠。因?yàn)檫@樣模棱兩可的意思,有的人就不知道單一片段的代碼是否應(yīng)該進(jìn)行測(cè)試。我用一個(gè)簡(jiǎn)單的問(wèn)題來(lái)明確這一點(diǎn):代碼是否包含重大的復(fù)雜性?如果包含,那么你需要一些測(cè)試。如果沒(méi)有的話,你就不需要。測(cè)試屬性訪問(wèn)器不過(guò)是浪費(fèi)時(shí)間。如果它們失敗的話,那么比起你正在寫(xiě)的代碼,你的代碼體系出現(xiàn)了一些更根本的問(wèn)題。如果你不用看一段代碼,就立即知道一切,那么它就不重大。這不僅適用于代碼,也適用于你寫(xiě)代碼。如果我們?cè)谌我恻c(diǎn)重訪代碼,那么它就需要測(cè)試。如果在現(xiàn)有代碼中發(fā)現(xiàn)過(guò)bug,那就說(shuō)明這一塊的代碼對(duì)其復(fù)雜性沒(méi)有進(jìn)行充分的測(cè)試。

 

  9.著眼于一種類型的測(cè)試

 

  一旦你開(kāi)始測(cè)試,很容易只糾結(jié)于一種風(fēng)格的測(cè)試。這是一個(gè)錯(cuò)誤。只用一種類型的測(cè)試,你就不能充分測(cè)試系統(tǒng)的所有部分。你需要單元測(cè)試來(lái)確認(rèn)代碼的各個(gè)組件是否能夠正確工作。你需要集成測(cè)試來(lái)確認(rèn)不同組件是否能夠協(xié)同工作。你需要自動(dòng)化UI測(cè)試來(lái)驗(yàn)證軟件是否可以如預(yù)期使用。你需要為任何不容易自動(dòng)化的部分和探索性嘗試進(jìn)行手動(dòng)測(cè)試。

 

  10.著眼于短期測(cè)試

 

  來(lái)自于測(cè)試的價(jià)值大多數(shù)會(huì)隨著時(shí)間的推移而獲得。測(cè)試不應(yīng)該只存在用于確認(rèn)事情是否正確寫(xiě)入,而應(yīng)該隨著時(shí)間的推移繼續(xù)起作用,并且對(duì)于代碼庫(kù)做其他的改變。有回歸錯(cuò)誤或新的異常,那么測(cè)試應(yīng)該重復(fù)運(yùn)行以盡早發(fā)現(xiàn)問(wèn)題,這將意味著錯(cuò)誤和異常可以更快,更便宜和更容易被修改。沒(méi)有變化(人為錯(cuò)誤)可自動(dòng)和快速執(zhí)行的測(cè)試,是為什么編碼測(cè)試如此有價(jià)值的原因。

 

  11.作為一個(gè)開(kāi)發(fā)者,依靠于別人來(lái)運(yùn)行(或編寫(xiě))測(cè)試

 

  如果不運(yùn)行,那么測(cè)試幾乎沒(méi)有價(jià)值。如果測(cè)試不能被運(yùn)行,那么就可能遺漏bug。自動(dòng)運(yùn)行的測(cè)試(作為一個(gè)持續(xù)集成系統(tǒng)的一部分)是一個(gè)開(kāi)始,但項(xiàng)目的任何一個(gè)人都應(yīng)該能夠隨時(shí)運(yùn)行測(cè)試。如果需要特殊設(shè)置,機(jī)器,權(quán)限,或配置來(lái)運(yùn)行測(cè)試,那么這些將成為執(zhí)行測(cè)試的壁壘。開(kāi)發(fā)者需要能夠在檢查代碼之前就運(yùn)行測(cè)試,因此他們需要能夠訪問(wèn)并有運(yùn)行所有相關(guān)測(cè)試的權(quán)力。代碼和測(cè)試應(yīng)保持在同一個(gè)地方,并且所需的任何設(shè)置都應(yīng)該寫(xiě)好腳本。關(guān)于這個(gè)方面我見(jiàn)過(guò)的比較壞的例子是一個(gè)做的很糟糕的項(xiàng)目,在這個(gè)項(xiàng)目中測(cè)試人員的子團(tuán)隊(duì)定期取走開(kāi)發(fā)人員正在處理的代碼副本,他們修改代碼以便他們能執(zhí)行一系列測(cè)試,但這些測(cè)試是開(kāi)發(fā)人員在特殊配置(無(wú)證)的機(jī)器上所無(wú)法訪問(wèn)的,然后測(cè)試人員再發(fā)送一個(gè)很大的郵件給所有的開(kāi)發(fā)人員以說(shuō)明他們找到的問(wèn)題。這不僅是一個(gè)壞的測(cè)試方式,而且也是團(tuán)隊(duì)工作的糟糕方式。不要這樣做。代碼能夠正確執(zhí)行是專業(yè)開(kāi)發(fā)人員的部分屬性。要保證代碼的準(zhǔn)確性,方法是使用伴隨它的適當(dāng)測(cè)試。依靠其他人為你寫(xiě)的代碼編寫(xiě)測(cè)試和運(yùn)行測(cè)試,不會(huì)幫助你成為一個(gè)專業(yè)的開(kāi)發(fā)人員。

 

  如果以上這些都不屬于你的情況,那么恭喜你!繼續(xù)保持開(kāi)發(fā)穩(wěn)健又有價(jià)值的軟件。

 

  如果上面有一些確實(shí)發(fā)生在你身上,那么是時(shí)候做一些改變了。

 

  

 

上一篇:作為一個(gè)新手程序員該如何成長(zhǎng)?
下一篇:Java程序員需警惕5大Docker誤區(qū)

開(kāi)班信息

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
主站蜘蛛池模板: 国产免费久久精品久久久 | 男女啪啪猛烈免费网站 | 精品国产一区二区三区四区色 | 日本一级特黄毛片高清视频 | 一区二区三区高清 | 日本aⅴ在线不卡免费观看 日本aaaa | 日本不卡一区二区三区 | 天天射日日 | 久久国产精品范冰啊 | 国产色婷婷精品综合在线观看 | 99久久精品免费看国产交换 | 伊人第一页 | 久久99国产一区二区三区 | 狠狠色官网在线 | 日韩一级特黄毛片在线看 | 最新777奇米影视四色 | 日本人一级毛片免费完整视频 | 四虎成人精品国产一区a | 在线成人天天鲁夜啪视频 | 宅男看片午夜大片啪啪mv | 欧美一级在线看 | 四虎成人免费观看在线网址 | 亚洲欧美日韩在线中文一 | 亚洲国产一区二区在线 | 精品视频在线免费看 | 亚洲高清中文字幕 | 美女久久久久久 | 99精品国产一区二区青青牛奶 | 四虎在线视频 | 精品视频一区二区三区免费 | 久久日本经典片免费看 | 四虎日韩 | 久久国产成人亚洲精品影院老金 | 亚洲日本在线观看 | 日日日日日操 | 四虎色姝姝影院www 四虎色影院 | 伊人国产精品 | 鲁一鲁射一射 | 在线成人中文字幕 | 香蕉亚洲欧洲在线一区 | 亚洲高清在线播放 |