【從學員練習影片觀察到一個關於 TDD 的有趣現象】
極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的)
我從2位第一次上我課的學員(當然就是 #極速開發,代表他們沒上過#單元測試 跟 #TDD與持續重構),雖然他們是照著示範影片、上課教學用 TDD 在寫整個 tennis 的過程,但從他們執行測試的時間點就可以發現:
「他是用測試來驗證 production code 的正確性」,即使他先寫了測試,也不先執行,沒有看到紅燈,每次都等到 production code 寫完了,應該要綠燈時,才執行測試。
而其他上過 TDD 課的同學 ,或是上過單元測試的同學,知道測試是用來描述情境,如果現在「加入的這個情境是新的需求或需求異動,代表目前 production code 還不支援這個情境,執行測試跑出的紅燈,就是等等 production code 要完成的 #目標」
test-frist 從來都只是 TDD 其中一個小小的衍生產物,而不是全貌。TDD, 測試驅動開發 從來都是一種開發方法,而不是測試方法。
總有些人老愛把 TDD 拿來跟測試相提並論,就總是喜歡把 test-first 當作靶子打,覺得違反人性跟直覺,覺得先寫測試在很多情況下是浪費時間或是不 work,可能拿來跟一堆測試的方法論相提並論,或總是只拿回歸測試的效益來當作 TDD 的整體。抑或是陷入 isolation unit test 與 integration test (其實就是非 isolation 等級、有實際依賴的自動測試)之爭。
```
註:TDD 事實上是可以不是單元測試等級的。
```
要比較正確看待 TDD 的角度,首先要知道它是幫助開發的、它是一種開發方式(當然不是唯一一種,甚至也不會是最好的一種,因為根本沒有最好,只有剛好)
接著要了解 TDD 可能用 IPO 模型還比較貼切,input-process-output,在你開發任何功能之前,你總要先想過這件事。而先想這件事,才是 TDD 的最基本精神。
接著是怎麼把你想好的東西,變成可執行的 spec,我們只是用測試程式來「描述」你腦袋中的「IPO模型」,把 process 的過程當作一個黑箱子。
而這個 IPO 模型在結合成「使用情境」,就會帶來「高易用性 API 的好處」,只有在一開始就先想好怎麼給別人用,最後才會好用。所謂的一開始想好,指的不是預先設計一堆 class,而是 input/output 想清楚期待(一般會結合實例化需求,搭配 Given/When/Then 的 gherkin style 來把前置條件、資料、前提想好,當發生什麼事,應該是怎樣的結果),然後描述它。在紅燈定義清楚目標,綠燈完成 input/output 關係且沒弄壞前面的所有情境後,來針對 process 進行重構(事實上 Kent Beck 的 TDD by Example 更多是用 refactor 來 #完成 process。
```
註:所謂的 output 不一定只有回傳值,包含外部依賴狀態、資料的改變,甚至顆粒度小一點,針對物件導向設計的話,物件內部狀態的改變也算,只是物件內部狀態改變,驗證點要嘛是拿得到內部狀態,要嘛就是要驗證物件哪個行為會因這個內部狀態而有所不同。
```
## 戰 TDD 之前該先做好的功課
要戰 TDD,是不是至少要把 Kent Beck 的 TDD by Example 看完?
要戰 TDD,請不要拿它跟測試方法論來比,那只是一下就被人看破手腳。因為它是個開發方法論。
要戰 TDD,請不要把它的好處只限縮在跟回歸測試、自動測試的比較,因為那只是它的衍生好處,當你試過在白海報紙上 TDD 就懂,TDD 是在釐清你的思緒的同時,又可以以終為始,確保你在 production code 的每一個動作都是為了滿足某個期待的情境。
要戰 TDD,請不要去把 單元測試、整合測試捲進來,那是測試的顆粒度,那是測試的分類,TDD 從來都不是只能限於單元測試。
要戰 TDD,請不要在那邊戰他是 bottom-up ,是直接從程式/class 的角度出發,事實上 TDD 既不是 bottom-up, 也不是 top-down, (書裡面就有講這件事咩),實務上的 TDD 結合倫敦派(GOOS)跟芝加哥派(Classic TDD),會更像 Outside-In 的進行方式,先定義好驗收情境,接著從最外部(也就是使用者看得到的部份)一路把依賴往另一邊的系統邊界推,直到推到系統以外的依賴資源(persistence 或 external API/service)
```
註: ATDD by Example 中 ATDD by Example, Kent Beck 寫的序最後的一段話。
Kent Beck:
「就像我曾說過的,TDD的一個缺點是,它可能會退化為一種用來滿足開發人員需求的編程技能。某些開發人員從更廣泛的角度來看待TDD,輕易在他們測試的不同抽象級別間跳躍。然而在ATDD中不存在歧義,這是一種加強與非編程人員溝通的技術。我們之間良好的協作關係,以及作為這種關係基礎的溝通,能夠使軟件開發更有效率。採用ATDD是向著溝通更清晰這個目標邁進的重要一步,而此書是一本全面又平易近人的入門讀物。」
```
要戰 TDD,請不要只關注在 test-frist,因為他只是用 test 來幫助你 think-first,不要邊寫邊想。然後不要過份依賴或相信你腦袋的能力,把你想好的東西具體化出來,最好可以被直接執行,最好除了你以外每個人執行出來的結果都會一樣(不管是對的,還是錯的)
要戰 TDD, 請不要把論點放在見樹不見林,如果你有看 TDD by Example 的 Part 1, Part 2 那兩個加起來共 24 個章節,就知道一開始就得把當下想到的全貌紀錄在一個「紙本」的 backlog (所謂的紙本,只是要講這並不依賴於任何工具)
而這個需求輪廓的全貌,會隨著你逐漸完成一部分一部分的情境,設計逐漸浮現後,而隨時跟著增減調整。
但不代表 TDD 就是先想到一個測試案例,就直接先幹下去了,那根本是亂搞。
以上這些,都還不是在列 TDD 的好處,而是針對那些從來沒搞懂 TDD 但又愛戰 TDD 的人一點提醒,你戰的很可能是「你誤解的 TDD」。
TDD 還有許多實務上的用途,列上我在譯者序中的一小段:
>> 測試驅動開發(Test-Driven Development, TDD)!一種以測試為開發輔助、以測試來描述需求情境、以測試來當作目標、以測試來表達期望、以測試來驗證疑問、以測試來實驗學習、以測試來溝通協作、以測試來協助設計高易用性 API 的「開發方法」。
譯者序有開放給大家看,請見:https://tdd.best/book/tdd-by-example/
拜託,要戰之前去看一下祖師爺 Kent Beck 對 TDD 的原始見解:https://www.tenlong.com.tw/products/9789864345618?list_name=srh
如果你想正確的使用 TDD 來幫助你在實務上產生許多的價值,帶來許多的好處,尤其是需求釐清、持續重構、小步快跑的部份,最好理解的培訓課就在這:https://tdd.best/courses/classic-tdd-by-example-video-training/
最後我想講一段話:
TDD 從來都不該被導入到團隊中,但它是一種很好的自我鍛鍊與學習的方式,也是一種能用很低的成本來帶來很多好處的開發方法(見下方註腳),然而它也不是適用所有的情況,但它可以讓『完美』變成一個動詞,而非不變的形容詞。
```
註:
Kent Beck 在 DHH 靠腰:《TDD is Dead》 之後寫的一篇反串文:《RIP TDD》
https://www.facebook.com/notes/1063422864115918/
我幾年前的簡易翻譯,通常也是 TDD 可以幫助你解決的問題,如下:
- Over-engineering (過度設計)
- API feedback (改善API的設計與可用性)
- Logic errors (想的跟寫的不一樣,寫的跟需求不一樣)
- Documentation (寫跟維護文件是痛苦的)
- Feeling overwhelmed (找不到切入點)
- Separate interface from implementation thinking (抽象設計)
- Agreement (確保已修正問題的證據)
- Anxiety (改東壞西的擔心受怕)
```
很久沒對 TDD 發表這種長篇大論了,因為不理解、不想理解、不同角度理解的人居多,能真的到各自的塔上用不同角度來看原義,以及實務上用它來幫助解決的問題有哪些的人,真的太少。
大部分人只想針對這個詞彙來攻訐以博得流量跟吸引目光,而不是想著「我可以用它來幫助我什麼」
問題跟需求是中性的,解決問題跟滿足需求的手段與方式有千萬種,不會只有一種,也不會有所謂的對錯,多點角度去了解不同的方法、方式,然後融會貫通,發揮綜效,在實務上用最少的成本與風險來產生最大的價值,這才是真正的目標。
導入敏捷不該是目標,導入 TDD 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有11部Youtube影片,追蹤數超過75萬的網紅志祺七七 X 圖文不符,也在其Youtube影片中提到,✔︎ 成為七七會員(幫助我們繼續日更,並享有會員專屬福利):http://bit.ly/shasha77_member ✔︎ 體驗志祺七七文章版:https://blog.simpleinfo.cc/shasha77 ✔︎ 購買黃臭泥周邊商品: https://reurl.cc/Ezkbma 💛 ✔...
backlog 在 Facebook 的最讚貼文
Ministry of Health, Singapore has posted a guide on Home Recovery. It explains who is eligible for the programme, what patients have to do, and how we will support you if you are recovering at home.
Here are some other useful links for those on Home Recovery:
For more info on HRP: http://go.gov.sg/HRP-for-patients
Home Recovery Vitals Diary: http://go.gov.sg/homeisolationdailyreport
Please share these links with anyone you think may need them.
Most vaccinated people who catch COVID-19 will have mild or no symptoms. If you are one of them, recovering at home is your best option. You will also be helping to keep our hospitals from being overwhelmed by the surge in COVID-19 cases.
I know there have been delays, and many of you with family members who tested positive are concerned. MOH is working round the clock to clear the backlog. We are making progress, and will get through this together. – LHL
backlog 在 Facebook 的精選貼文
【#小马四点日记 0914】
➊.#海外妈妈失望了
昨天,一个嫁到海外的中学同学,很难过,为何政府要提出上诉。
高庭之前裁决,大马母亲和外籍父亲,在海外出生的孩子,可以享有大马公民权。这个判决,一直获得民间和朝野领袖的称赞,因为这真的解决了很多海外妈妈面对的问题。
法官甚至在阅读了宪法中的几个条款后,当场下令,所有当局,必须立刻向这些儿童,发放身份证等相关文件。这真的很令人鼓舞。因为,一直以来,很多嫁到海外的马来西亚妈妈,饱受这个不公平的政策困扰,甚至有人是有家归不得。
但,总检察署决定上诉,挑战这项裁决。
可以这么说,伤透了马来西亚海外妈妈们的心,也影响着我们所有人的女儿、孙女...的未来。
男女不平等的情况,在宪法竟然得不到保障,是叫人伤心的。也许,总检察署的考量,是担心有人口贩卖或是盗取国籍的问题。但,这应该是提高审核能力,而不是一刀切说不行。
民间也发起了这样的联署,你会支持吗?
Government Must Withdraw Appeal against Ruling on Citizenship Right of Malaysian Mothers. Do you agree?
https://chng.it/X6QqptXz
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
➋.#大彩开门
昨天面子书最热的一个话题,就是:#可以下注啦!
财政部宣布,国内万字博彩公司,今天允许开工。这个宣布感觉比开放堂食,更让民众期待 🤣
万能和多多博彩,也出post,欢迎民众前来下注!不过,公司还是有强调,一切遵守SOP,一些店面可能为了迎接开工,今天暂时关闭消毒,明天才会恢复让大家 试试手气。
而且,最新SOP,只有完成疫苗接种的民众,才能进入商店购买,不然只能线上。所以,现在世界上最幸运的事情,是接种疫苗,身体健康。
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
➌. #校正回归的死亡病例
这两天疫情的关注点,是死亡病例的校正回归。
之前台湾也有同样的情形,现在凯里管理的卫生部,也用这个方法重新统计数据。
我国昨天新增413宗通报冠病死亡病例,其中,实际死亡人数是104人,backlog(积压)的人数,则有309宗。而在昨天的413宗病例,有176宗是送院前死亡(BID)。
校正回归的这个概念,自台湾广泛使用后,引起很大争议。
但民间,一般只会看到第一个数字,而不会在乎后面的方程式。我想也是,因为一切都不能重来。除非是误算。
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
➍. #被会议困住的早上
早(下午)安你好,今天会更好,我是小马。来跟我打声招呼吧👋
可能昨晚忙的比较迟,今天早上又安排了几场会议,所以 #四点日记 一直没办法完成。哈哈哈,但还是不允许自己懒惰,即使迟到了,还是好过不到。也收到PM询问,怎么今天没写。
哈,真心抱歉,明天会早起来好好完成。
对了,今晚9点钟,在我的FB也会有FB Live,今天谈 #餐饮业。到底,已经被允许开门堂食的餐饮业,是不是就因此得救了?
▫▫▫▫▫▫
#看完记得帮我LIKE和SHARE #感恩
#看到来说声 #早安
backlog 在 志祺七七 X 圖文不符 Youtube 的最佳解答
✔︎ 成為七七會員(幫助我們繼續日更,並享有會員專屬福利):http://bit.ly/shasha77_member
✔︎ 體驗志祺七七文章版:https://blog.simpleinfo.cc/shasha77
✔︎ 購買黃臭泥周邊商品: https://reurl.cc/Ezkbma 💛
✔︎ 訂閱志祺七七頻道: http://bit.ly/shasha77_subscribe
✔︎ 追蹤志祺IG :https://www.instagram.com/shasha77.daily
✔︎ 來看志祺七七粉專 :http://bit.ly/shasha77_fb
✔︎ 如果不便加入會員,也可從這裡贊助我們:https://bit.ly/support-shasha77
(請記得在贊助頁面留下您的email,以便我們寄送發票。若遇到金流問題,麻煩請聯繫:service@simpleinfo.cc)
#校正回歸 #篩檢量能
各節重點:
00:00 前導
01:00「簡訊設計的 YouTube 片頭製作」廣告段落
01:46 為什麼要做校正回歸?
03:17 這樣做合理嗎?
04:59 其他國家都怎麼處理?
06:21 超前部署其實還有漏洞?
07:39 篩檢量能不夠怎麼辦?
08:55 我們的觀點
10:33 提問
10:57 結尾
【 製作團隊 】
|企劃:宇軒
|腳本:宇軒
|編輯:土龍
|剪輯後製:Pookie
|剪輯助理:歆雅
|演出:志祺
——
【 本集參考資料 】
→真的假的?確診數「校正回歸」很正常,但一次回補太多天恐使疫情判斷失準?:https://bit.ly/2SwgO6K
→採檢通報塞車害「校正回歸」 陳時中:沒疏漏!將簡化流程:https://bit.ly/3oZhrSu
→疫情週報:台灣疫情數據儀表板,與政府尚未公布的數據資料:https://bit.ly/2SC0m4M
→校正回歸日期算法曝光 陳時中:顯露疫情真實性:https://bit.ly/3usUND5
→疫情監測的原理與判讀(5月24日) - 國立臺灣大學公共衛生學院:https://bit.ly/3yLQvKf
→病例校正回歸非台灣獨有 何美鄉:各國多少都有:https://bit.ly/2RLIVPs
→「校正回歸」是台灣首創嗎?國外如何處理時間差的數據問題:https://bit.ly/3i18yWT
→Coronavirus: Why is there a test results backlog?:https://bbc.in/3vuBv1n
→科學防疫的缺口──快篩試劑未列入物資整備、社區感染演練也遭否決,為什麼?:https://bit.ly/2QYcsEW
→侯友宜談校正回歸:篩檢塞車最多差6天 應組國家隊補漏洞:https://bit.ly/3vv7LkV
【 延伸閱讀 】
→斷鏈的防疫線──確診者家人、醫護接觸者自力救濟下的防疫滑坡效應:https://bit.ly/3id2X07
→守住醫院、才能守住更多人:雙北疫情外溢全台,社區聯防如何儘速補位:https://bit.ly/3wIsCkX
→台灣疫情延燒,民眾如何因應?關鍵數據「檢驗陽性率」代表什麼? - 鳴人堂:https://bit.ly/2R0z1ch
\每週7天,每天7點,每次7分鐘,和我們一起了解更多有趣的生活議題吧!/
🥁七七仔們如果想寄東西關懷七七團隊與志祺,傳送門如下:
106台北市大安區羅斯福路二段111號8樓
🟢如有引用本頻道影片與相關品牌識別素材,請遵循此規範:http://bit.ly/shasha77_authorization
🟡如有業務需求,請洽:hi77@simpleinfo.cc
🔴如果影片內容有誤,歡迎來信勘誤:hey77@simpleinfo.cc
backlog 在 OP凱文 Youtube 的最佳解答
今天跟大家閒聊一下 #校正回歸
請大家不要太激動,在留言區戰政治
要討論政治是可以,但以後我們再來慢慢聊
現在的共同敵人是疫情,大家是一體同心的
另外,也不要太過悲觀,自己嚇自己
真的運氣不好,至少我們前面也做好防護措施了
(如果沒做防護措施那是你的問題,畢竟我都講那麼多次了= =)
然後觀察法人的變化,真的有改變我們再來做動作
沒有改變的話就維持原本的做法做就好
比起疫情,我真的更擔心水資源的問題
希望老天爺趕快下足夠的雨吧!!
凱文的選擇權課程,讓你瞭解如何運用選擇權獲利:
http://optionplayerkevin.pse.is/OPplayer
歡迎小額贊助,可以在留言區使用專屬貼圖,
也歡迎加入鐵粉會員,每天我會與你分享我對盤勢的想法:
https://www.youtube.com/channel/UCL2JKimITPdd37tEzJrHPAg/join
▼底下有各種資訊,歡迎點開參考▼
✅選擇權討論社團:http://optionplayerkevin.pros.is/groupkevin
✅IG:http://optionplayerkevin.pros.is/instagramkevin
✅FB:http://optionplayerkevin.pros.is/facebookkevin
這個頻道專注在選擇權的話題上
股票、期貨、基金也歡迎大家來討論
希望大家都能變得更有錢,邁向財務自由
本集節目由蝦皮贊助播出
https://shp.ee/2dues3k
----------
***重要申明:影片主要為分享我個人的想法,並非投資建議,請觀眾在操作前仍需三思。***
backlog 在 MADE by Radw Youtube 的最佳貼文
Hi Curlfriends! I know the previous video got most of you like O.O hahahaha. I have videos of my new cut but I have some backlog videos to post before I get to that. Here's the follow up video I mentioned in my two previous crochet braids videos! Are you ready to remove your crochet braids? Don't! In this video I show you how to redo the front and flat iron or straighten kinky crochet braids. I also gave you a couple of hairstyles for you to try later! Which is your fav? Would you rock this style? Let me know!
If you enjoyed this video, SUBSCRRIIIIBBEE :D https://www.youtube.com/MADEbyRadw?sub_confirmation=1
Also, checkout my new vlog channel and subscribe if you like what you see! https://www.youtube.com/LifeMADEbyRadw?sub_confirmation=1
Connect with me, why dontcha? :) ⬇️
? Instagram / ?Facebook :
https://www.instagram.com/MADEbyRadw
My shea butter and African black soap brand: https://www.instagram.com/BuyMADEbyRadw
https://www.facebook.com/MADEbyRadw
For business enquiries/collaborations email picturadw7@gmail.com
YOU WILL LIKE THESE VIDEOS TOO:
Brown and blonde box braids: https://www.youtube.com/watch?v=iBZDHj5F-TE
6 ways to style goddess braids: https://www.youtube.com/watch?v=on9o2GerZEo
How to do goddess box braids: https://www.youtube.com/watch?v=WQZIbllD8ok
Eco Styler Gel or Gorilla Snot Gel on 4c hair?
https://www.youtube.com/watch?v=CIndQE-5AmM
How to detangle natural hair (crochet braids edition):
https://www.youtube.com/watch?v=1N4bLBeYNNA
Bob box braids on medium to long natural hair
https://www.youtube.com/watch?v=zGt3QPpw-iU
How to lay 4c hair edges for days:
https://www.youtube.com/watch?v=5SaSI2XyjMw
All you need to know about crochet braids: https://www.youtube.com/playlist?list=PLNGNBUj5npjwlLNG6-xZq7-5wDfGyekZz
Sound by Ryan Little
youtube.com/ryanlittle
HOW TO FLAT IRON KINKY CROCHET BRAIDS, GHANAIAN 4C NATURAL HAIR YOUTUBER, how to straighten crochet braids, crochet braids tutorial, natural hair styles, protective styles, 4c natural hair, ghanaian youtuber, how to style natural hair, straight crochet braids, kinky crochet braids
backlog 在 供應鏈管理scm學院- 未消化訂單(Backlog)... | Facebook 的推薦與評價
未消化訂單(Backlog) 或稱待交數量是指目前已經收到,但是尚未出貨給客戶的累積訂單,這些訂單將按照生產排程於未來一段時間完成。這種訂單又稱為未完成訂單(open ... ... <看更多>