日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

掌握测试驱动开发的3个关键因素(译)

發布時間:2025/4/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 掌握测试驱动开发的3个关键因素(译) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從戴維恩斯坦教數千軟件開發者們如何更有效地以測試驅動開發的10年來,他學會了掌握測試驅動開發的3個關鍵組成部分:理解它真正是什么,使代碼穩定可測,并且獲得實際動手經驗。讓我們看這些因素,找到它在你的項目中為有效地使用測試驅動開發帶來什么。

在過去10年來,我有教數千個專業軟件開發者如何有效地測試驅動開發的權利。從這些經驗中,我學會了測試驅動開發的3個關鍵因素:理解它真正是什么,使代碼確實可測試,并且獲取一手的經驗。讓我們看一看這些因素中的每一個,去看看使用測試驅動開發能有效地在你的項目中帶來什么。

1. 理解什么是測試驅動開發

有效的測試驅動開發的第一主要的組成部分是理解它真正是什么。我發現有很多關于如何恰當地做測試驅動開發的錯誤想法,并且測試驅動開發是那種,如果你做錯了,你會經常付出一個很高的代價的實踐。

在這篇短的文章中有更多的介紹測試驅動開發,但是我注意到的其中一件事是對人們來講更有挑戰的是人們把測試驅動開發想象成測試或者質量保證的一種形式。我認為在做測試驅動開發時,這是錯誤心態。

QA的思維模式是在思考可能出現的問題并且找到保證它不再發生的方法。開發的思維模式更樂觀,專注于發生的事情,為了事情順利進行。

不考慮將測試驅動開發作為測試代碼的一種方式,我想把測試驅動開發想成系統特殊行為的一種方式。這引導我創造非常不同的測試種類,它趨向于將來更有彈性地改變,因為我正在驗證行為而不是測試代碼塊。

術語“單元測試”也有點誤解。假如我們在寫代碼之前寫測試,那么它實際上不是一次測試,因為當我們寫它時,沒有可測試的東西。在這個點上叫它一次測試有點奇怪。反之,我想要把它認為是一種假說。當我們在寫代碼之前寫測試時,我們在假定代碼將如何運行,我們需要通過什么,以及將返回什么。

這類似于我們如何接近科學。我們不能隨機運行實驗。我們經常開始一種假設:我們正在嘗試通過或不通過的東西。我們能想出一個實驗去通過或者不通過我們的假設。把你的實驗考慮成假設,并且你寫的代碼是為了使測試作為一種實驗通過,來證明這個假設。

但更大的誤解是,我發現人們在嘗試TDD時真的會掛起電話,這是他們認為“單元”的意思。對很多開發來講,當他們在“單元測試”里看到術語“單元”,他們想到一段代碼,像一個方法或者一段聲明,或者甚至一行簡單的代碼。這不是本文中“單元”的含義。就像我理解它的,術語“單元”被接受成強調一個功能獨立的單元。

理想情況下,我們后面的行為是對我們正嘗試獲取的驗收標準的間接支持。當單元測試也是驗收測試時,我們自然得到需求可追溯性和可驗證性。

一個“行為單元”可能包含一些以合作為工作目的的對象。舉個例子,在拍賣中測試投標規則可能需要一個賣方對象來創建一個拍賣對象和一個投標人對象在拍賣中投標。有些人將把它作為一次集成測試,因為它包含一些對象的交互。我把它稱為一個單元測試,因為我正在測試投標行為的一個單元。

我經常發現當我們關注于可以滿足驗收標準的附加特性時,我們編寫的代碼的維護成本要低得多,因為設計更容易理解和擴展。

2.使不可測試的代碼可測

學習測試驅動開發的第二個關鍵因素是掌握一系列使不可測試的代碼可測試的技術。很多已存在的代碼是很難測試的,并且當我們不得不和那些代碼交互時,很難讓它接受測試。

通過我參觀的很多公司,我在代碼中看到的一個主要問題是為了使用一項服務,一位顧客將被實例化并且直接呼叫那項服務。從外部來看,服務和服務的客戶端似乎是相同的,不能被拆分。但是,當這一系統在整個系統中反復進行時,它使系統成為一個糾纏在一起的代碼鼠窩,不可能獨立地進行分離和測試。

這個問題的解決方案是一種稱為依賴注入的技術。你可能很熟悉依賴注入框架的獨立性,比如Spring。但是你能手動地注入依賴,不使用一個框架。代替使一個對象實例化一個服務然后使用它,我們委托實例化成一個不同的對象,然后將引用傳遞給使用它的客戶端。

允許對服務的引用傳遞給服務的使用者,當我們測試時讓我們傳入假。它是一個簡單的概念,對做小的、可測試的單元行為和分開整體的代碼是相當重要的。

我可以通過幾種虛擬來代替依賴。一個通過簡單的歸類和覆蓋你的代碼交互的方法來創造手工模擬的方法。你可以調用你的mock的覆蓋方法,而不是調用真正的依賴關系,它能返回任何有意義的東西。記住,我們這兒的目標是測試我們的代碼可交互與外部依賴,而不是它自身的依賴。

3.做測試驅動開發的經驗

擁有編寫良好的行為測試和能夠編寫好的、可測試的代碼的技能,只是掌握測試驅動開發所需的部分內容。第三和最重要的掌握測試驅動開發的因素是體驗去做它。當開發者做了測試驅動開發并且看到他們的測試如何立即捕捉問題——結果是他們的代碼有多好——他們開始在項目中做測試驅動開發。

在綠色田野項目中學習測試驅動開發是有用的,因為在遺留代碼上進行測試驅動開發會有更多復雜性。這本身就是一個完成的學習領域,在項目中有一些優秀的書。我想每一個專業軟件開發應該讀馬丁福勒的重構:改進已有代碼的設計。而且如果你正在遺留代碼上工作,然后你也應該讀邁克爾西羽毛的有效率地同老代碼工作——并且不要忘了查看一下我的書,在遺留程序之上:9種擴展你的軟件生命(和價值)的實踐。

當我首次啟動教軟件開發關于測試——驅動開發,我給他們關于真正的測試驅動開發以及如何使不可測試的代碼可測試的講座。他們知道該怎么做,但我們沒有在一個項目上一起實踐TDD,所以它沒有堅持下去。6個月后我將返回,在團隊中沒有人再做測試驅動開發了。

但是當我開始包括12個小時的實踐練習使用測試驅動開發作為培訓的一部分,我看到人們做了一個徹底的轉變,因為他們看到了做TDD的好處。這確實是我們學習和得到新行為的唯一的方法:通過做它們并且向我們證明它們是有價值的。你不能從聽別人說一個話題而獲得經驗。

理解真正的測試驅動開發是什么,知道如何使不可測試的代碼可測,在項目中做測試驅動開發獲取實踐經驗的好處是掌握測試驅動開發的3個關鍵因素。我發現當開發有這3個關鍵因素時,他們為測試驅動開發而感到高興,并且在他們的項目中持續做這件事。

轉載于:https://www.cnblogs.com/fengye151/p/11519078.html

總結

以上是生活随笔為你收集整理的掌握测试驱动开发的3个关键因素(译)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲在线观看 | 在线射 | 国产极品尤物 | 亚洲AV无码成人精品国产一区 | 国产精品一二三区 | 久久精品2019中文字幕 | 久久羞羞| 91精品久久久久久久久中文字幕 | 黄色片视频免费在线观看 | 致单身男女免费观看完整版 | 污视频网站在线播放 | 国产视频1区 | 免费草逼网站 | 国产精品刘玥久久一区 | 日本亲与子乱xxx | 四虎永久在线精品免费一区二区 | 欧美日韩视频在线观看一区 | 天天弄天天干 | 午夜九九 | 亚洲天堂免费看 | 不卡av一区二区 | av黄色片在线观看 | 成人做爰视频www网站小优视频 | 男人的天堂黄色 | 国产一区二区三区视频在线观看 | 一区日韩 | 精品日韩av | 在线免费观看中文字幕 | 性生活视屏 | 黑人3p波多野结衣在线观看 | 男女猛烈无遮挡免费视频 | www黄色网址 | 成人福利社| 无码一区二区 | 中文字幕在线亚洲 | 在线色导航 | 大桥未久视频在线观看 | 男人天堂网在线观看 | 欧美精品免费一区二区 | www亚洲成人 | 日韩涩| 四虎永久免费在线观看 | 国产精品久久影视 | a天堂资源在线观看 | 狠狠爱av | 日韩专区在线播放 | 4444亚洲人成无码网在线观看 | 91网站观看 | 中文字幕一区二区三区乱码 | 亚洲4区| 欧美色图亚洲自拍 | 日韩高清欧美 | 国产三级在线免费观看 | 日韩精品――色哟哟 | 欧美日韩在线看 | 午夜寂寞视频 | 久久久九九九热 | 法国伦理少妇愉情 | 99re99| 九九热精品视频在线观看 | 嫩草午夜少妇在线影视 | 伊人狠狠操 | 成人交性视频免费看 | 久久大胆视频 | 无码精品视频一区二区三区 | 97国产精品| 影音先锋中文字幕在线 | 国产日韩欧美精品在线 | 亚洲色图25p| 91色国产 | 欧美三级三级三级爽爽爽 | 欧美婷婷 | 综合色小说 | 国产乱码精品一区二区三区中文 | 看全色黄大色黄大片女一次牛 | 奶妈的诱惑| 好紧好爽再浪一点视频 | 国产麻豆一区二区三区 | 欧美精品一区二区久久婷婷 | 麻豆极品 | 亚洲图片88 | 一级黄色欧美 | 少妇爽| 国产精品久久久一区二区三区 | 午夜影视网| 成人在线黄色 | 性欧美在线 | av中文天堂 | 伊人久久大香线 | 一本色道久久hezyo无码 | 日本精品久久久久中文字幕 | 国产激情自拍视频 | 国产乱码精品一区二区三区不卡 | 亚洲 小说 欧美 激情 另类 | 人人人射 | 色视频一区二区 | 人妻无码中文久久久久专区 | 日日射夜夜 | 欧美老肥婆性猛交视频 |