自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么開發(fā)人員不編寫更多測(cè)試?

新聞
我經(jīng)常在會(huì)議上談?wù)?測(cè)試微服務(wù),我問與會(huì)者的第一個(gè)問題是他們是否編寫測(cè)試。房間通常在為他們的代碼編寫測(cè)試的開發(fā)人員和不為他們的代碼編寫測(cè)試的開發(fā)人員之間分配 50-50。

 我經(jīng)常在會(huì)議上談?wù)? 測(cè)試微服務(wù),我問與會(huì)者的第一個(gè)問題是他們是否編寫測(cè)試。房間通常在為他們的代碼編寫測(cè)試的開發(fā)人員和不為他們的代碼編寫測(cè)試的開發(fā)人員之間分配 50-50。當(dāng)我在編碼訓(xùn)練營(yíng)做客座講座時(shí),這種差異變得更加明顯,我發(fā)現(xiàn)只有不到十分之一的畢業(yè)生真正知道如何編寫單元測(cè)試。

我的軼事觀察也得到了調(diào)查的支持。Diffblue 發(fā)現(xiàn) 42% 的開發(fā)人員跳過編寫測(cè)試,而 Stack Overflow 發(fā)現(xiàn) 37% 的開發(fā)人員不為他們的工作代碼編寫測(cè)試。

[[432645]]

 

為了理解為什么開發(fā)人員沒有更好地編寫測(cè)試,我決定向幾個(gè)運(yùn)行軟件團(tuán)隊(duì)的朋友提出這個(gè)問題。在這篇文章中,我收集了他們的一些觀察(與我自己的混合),關(guān)于為什么開發(fā)人員沒有像您認(rèn)為的那樣經(jīng)常編寫測(cè)試。他們的一些回答讓我感到驚訝,尤其是當(dāng)我們談到今天測(cè)試的局限性時(shí)。

最后,我請(qǐng)他們每個(gè)人給我一些提示,給那些可能不熟悉自動(dòng)化測(cè)試的工程領(lǐng)導(dǎo)者和開發(fā)人員。如果你是今天跳過測(cè)試的大約 40% 的開發(fā)人員之一,我希望他們的建議能鼓勵(lì)你開始。

反對(duì)測(cè)試

從廣義上講,自動(dòng)化測(cè)試傾向于提高軟件的可靠性、質(zhì)量和可維護(hù)性。

“如果你對(duì)某個(gè)功能進(jìn)行了測(cè)試,那么你就會(huì)知道未來的一些變化是否會(huì)破壞某些東西,” Earthly 的Adam Gordon Bell 告訴我。他補(bǔ)充說,測(cè)試是一種動(dòng)態(tài)的文檔形式:“很多時(shí)候,閱讀測(cè)試比閱讀實(shí)際實(shí)現(xiàn)更容易理解某些東西的作用。”

也就是說,編寫測(cè)試需要時(shí)間,許多開發(fā)人員沒有(或不能)抽出時(shí)間來編寫它們。隨著代碼庫的增長(zhǎng)和測(cè)試覆蓋率的不斷下降,這個(gè)問題變得更加明顯。

管理經(jīng)常推出大量功能,而測(cè)試總是從優(yōu)先級(jí)列表中下滑……一旦您擁有足夠大的代碼庫,您就可以花費(fèi)無限量的時(shí)間來編寫測(cè)試,因此可能會(huì)令人生畏且難以知道從哪里開始。

如果截止日期很緊或者團(tuán)隊(duì)領(lǐng)導(dǎo)者不是特別致力于測(cè)試,這通常是軟件開發(fā)人員被迫跳過的第一件事。

另一方面,一些開發(fā)人員只是認(rèn)為測(cè)試不值得他們花時(shí)間。“他們可能會(huì)想,‘這是一個(gè)非常小的功能,任何人都可以為此創(chuàng)建一個(gè)測(cè)試,我的時(shí)間應(yīng)該在更重要的東西利用。’”的Mudit辛格 LambdaTest告訴我的。

我已經(jīng)看到這種測(cè)試態(tài)度在企業(yè)環(huán)境中“低于”開發(fā)人員,在這些環(huán)境中,專門的 QA 團(tuán)隊(duì)可能負(fù)責(zé)大部分測(cè)試,但它可能發(fā)生在任何地方。我曾經(jīng)在一家初創(chuàng)公司管理過一位高級(jí)開發(fā)人員,他鼓勵(lì)我雇傭初級(jí)開發(fā)人員來為他編寫測(cè)試。

測(cè)試權(quán)衡和限制

所以,你可能認(rèn)為答案很簡(jiǎn)單。給開發(fā)人員更多時(shí)間來編寫測(cè)試并使其成為他們工作的一部分,對(duì)嗎?

事實(shí)上,自動(dòng)化測(cè)試存在一些合理的限制。像軟件開發(fā)中的許多復(fù)雜問題一樣,選擇測(cè)試與否是關(guān)于了解權(quán)衡。

“寫自動(dòng)化測(cè)試可以提供信心,您的應(yīng)用程序工作的某些部分如預(yù)期,”首席執(zhí)行官艾丹Cunniff, 光纖告訴我,“但代價(jià)是你已經(jīng)投入了大量的時(shí)間‘穩(wěn)定’,使‘可靠’你系統(tǒng)的那部分。”

我在創(chuàng)業(yè)公司的經(jīng)歷中也看到了這一點(diǎn)。我曾經(jīng)花了三個(gè)星期來構(gòu)建一個(gè)新功能、編寫測(cè)試和解決代碼審查,結(jié)果卻被告知業(yè)務(wù)團(tuán)隊(duì)改變了主意,該功能將在下一個(gè) sprint 中刪除。

雖然測(cè)試可能使我的新功能更好、更易于維護(hù),但從技術(shù)上講,它們對(duì)業(yè)務(wù)來說是浪費(fèi)時(shí)間,因?yàn)樵摴δ懿⒉皇俏覀冋嬲枰?。在開始編寫代碼之前,我們沒有投入足夠的時(shí)間來理解問題并制定計(jì)劃。

“想象一下,一群建筑工人和建筑師在一塊空地上與客戶和一大堆木材會(huì)面。然后以自發(fā)的方式建造房屋。當(dāng)客戶懷疑地看著完工的房子并抱怨屋頂看起來不太安全時(shí),承包商回答說“別擔(dān)心,我們會(huì)等到下雨然后修補(bǔ)漏水的地方。”......沒有其他專業(yè)建造質(zhì)量不受控制的產(chǎn)品然后依靠測(cè)試(和缺陷修復(fù))來提高產(chǎn)品質(zhì)量。

最后,某些形式的測(cè)試特別難以實(shí)現(xiàn),因?yàn)樗鼈円竽拇a以特定方式編寫。這是對(duì)單元測(cè)試的常見抱怨。

一方面,單元測(cè)試迫使開發(fā)人員以一種“可測(cè)試”的方式構(gòu)建他們的代碼,但另一方面,這些單元測(cè)試很少告訴你最終的應(yīng)用程序是否為用戶提供了價(jià)值。

在大多數(shù)企業(yè)中,唯一具有業(yè)務(wù)價(jià)值的測(cè)試是源自業(yè)務(wù)需求的測(cè)試。大多數(shù)單元測(cè)試源自程序員對(duì)函數(shù)應(yīng)該如何工作的幻想……那些沒有可證明的價(jià)值。

如果您在開始之前沒有單元測(cè)試覆蓋率的遺留代碼庫中工作,則幾乎不可能追溯添加它們。因此,大多數(shù)開發(fā)人員轉(zhuǎn)向集成或端到端測(cè)試。

這些功能測(cè)試可能會(huì)有所幫助,但它們也存在問題。任何重要的應(yīng)用程序都會(huì)有幾十個(gè)功能和邏輯分支,因此幾乎不可能跟上所有預(yù)期的行為。正如 JB Rainsberger 在他的文章Integrated Tests Are A Scam 中指出的那樣 ,一個(gè)有 20 個(gè)頁面的中型 Web 應(yīng)用程序可能需要 10,000 到 1,000,000 次測(cè)試才能涵蓋所有用戶故事。

那么為什么還要嘗試呢?

我認(rèn)為單元測(cè)試和特別是測(cè)試驅(qū)動(dòng)的開發(fā)被其支持者過度宣傳為解決所有問題的方法……但是測(cè)試,如果做得好,是非常有價(jià)值的。為未來的編寫測(cè)試,他們將試圖了解這個(gè)方法在未來的作用。讓自己有信心做出需要做出的改變。

雖然測(cè)試不是靈丹妙藥,但當(dāng)它適當(dāng)?shù)貞?yīng)用于手頭的軟件時(shí),它是合法有用的。幾乎在所有情況下,測(cè)試對(duì)開發(fā)人員來說都是積極的,即使它有局限性。開發(fā)團(tuán)隊(duì)要做的重要事情是有意識(shí)地了解他們測(cè)試的方式和內(nèi)容。

Aidan Cunniffe 告訴我:“仔細(xì)考慮將測(cè)試工作投入到哪里是平衡投資與其提供的價(jià)值的最佳方式。” 跳過對(duì)新功能的第一個(gè) alpha 版本的測(cè)試可能是合理的,但是“當(dāng)該功能成為其他 3 個(gè)功能的支柱時(shí),就該開始測(cè)試了。”

就我個(gè)人而言,我認(rèn)為混合方法是最好的。單元測(cè)試對(duì)于快速覆蓋大量微小案例很有用,集成測(cè)試確保各個(gè)部分按預(yù)期進(jìn)行交互,端到端測(cè)試提供用戶界面是否正常工作的最終檢查。

還出現(xiàn)了新的測(cè)試品種,試圖減輕我們?cè)S多人采用的分層測(cè)試方法的一些缺點(diǎn)。例如,我 去年調(diào)查了一些低代碼測(cè)試工具,而且還有更多。RelicX首席執(zhí)行官 Sushil Kumar 指出,“使用基于 AI/ML 的測(cè)試自動(dòng)生成測(cè)試腳本可以大大減輕開發(fā)人員的負(fù)擔(dān)。”

入門

如果您對(duì)辯論如此深入,并且您只是因?yàn)椴淮_定從哪里開始而沒有進(jìn)行測(cè)試,那么讓我們談?wù)勀梢詮哪睦镩_始。

最容易開始的地方通常是單元測(cè)試。Speedscale 的 Ken Ahrens 告訴我:“當(dāng)你剛開始測(cè)試時(shí),弄清楚你的團(tuán)隊(duì)使用什么單元測(cè)試框架,并為你的第一次代碼簽入包含一個(gè)單元測(cè)試用例。” 繼續(xù)解釋從小做起,但讓測(cè)試成為一種習(xí)慣是堅(jiān)持下去的關(guān)鍵。

接下來,您需要獲得團(tuán)隊(duì)其他成員和領(lǐng)導(dǎo)層的支持。需要給開發(fā)人員時(shí)間來編寫測(cè)試,并了解這項(xiàng)投資從長(zhǎng)遠(yuǎn)來看會(huì)得到回報(bào)。

團(tuán)隊(duì)中的每個(gè)人都在編寫測(cè)試,或者沒有人在編寫測(cè)試,這確實(shí)是一種文化實(shí)踐,一種技術(shù)僵局。沒有人想成為唯一這樣做的人。

證明測(cè)試價(jià)值的一種方法是使用它們來防止回歸。“如果某些東西不起作用,”Adam Gordon Bell 告訴我,“在修復(fù)它之前,先編寫一個(gè)功能正確的測(cè)試。” 這將降低未來回歸的可能性,并讓您的團(tuán)隊(duì)在將來更新該部分代碼時(shí)充滿信心。

測(cè)試有局限性,它們不能替代出色的系統(tǒng)設(shè)計(jì),但測(cè)試在軟件開發(fā)中也占有一席之地。給工程師時(shí)間進(jìn)行測(cè)試并將測(cè)試的價(jià)值傳授給您的團(tuán)隊(duì)是工程領(lǐng)導(dǎo)力的一個(gè)重要角色,而且隨著軟件變得越來越復(fù)雜,它只會(huì)變得越來越重要。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2022-12-19 07:33:49

開發(fā)人員谷歌制度

2011-05-05 17:57:18

軟件開發(fā)

2020-07-23 08:21:25

PHP開發(fā)人員MVC

2022-03-03 23:30:27

TypeScrip開發(fā)前端

2020-06-22 07:18:21

Java語言開發(fā)

2021-04-18 18:12:07

Linux開發(fā)操作系統(tǒng)

2018-07-09 14:05:16

編程語言PythonPipenv

2023-09-04 08:20:00

2011-06-20 08:43:15

Windows 8開發(fā)人員

2021-01-30 10:51:07

Python編程語言開發(fā)

2021-04-05 14:31:33

Java開發(fā)Kotlin

2023-01-06 17:18:00

測(cè)試開發(fā)集成測(cè)試

2009-06-22 09:13:55

測(cè)試開發(fā)人員

2023-01-05 14:51:01

測(cè)試開發(fā)軟件開發(fā)

2023-01-11 12:14:50

NeoVimVim開發(fā)

2021-08-23 12:54:12

開發(fā)技能代碼

2011-12-21 09:19:32

API

2023-12-25 07:58:46

Python開發(fā).NET

2014-09-12 10:28:28

技術(shù)開發(fā)程序員

2023-10-13 06:54:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)