【從學員練習影片觀察到一個關於 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 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有24部Youtube影片,追蹤數超過0的網紅CarDebuts,也在其Youtube影片中提到,เผยโฉมตัวจริง All-New Nissan Note e-Power 2021 นิสสัน โน้ต อีเพาเวอร์ โฉมใหม่ เริ่มขาย 23 ธันวาคมนี้ ในประเทศญี่ปุ่น ระบบขับเคลื่อน 2WD เครื่องยนต์รห...
output unit 在 BorntoDev Facebook 的最佳貼文
🔥 Hello เพื่อน ๆ ทุกคน !! กลับมาอีกครั้งกับสรุปสั้น ๆ และวันนี้พบกับเรื่อง Computer Structure เซฟเก็บไว้อ่านกันได้เลย
.
👉 มีรายละเอียดยังไง ไปติดตามกันเลยจ้า ~
.
🔸 IO (Input & Output) : คือการรับส่งข้อมูลระหว่างคอมพิวเตอร์กับผู้ใช้
🔸 Main Memory : คือที่จุความจำนั่นเองไม่ว่าจะเป็น RAM หรือ ROM
🔸 CPU (Central Processing Unit) : คือหน่วยประมวลผลกลาง เปรียบเหมือนสมองของคอมพิวเตอร์
🔸 ALU (Arithmetic and Logical Unit) : คือหน่วยประมวลผลย่อย ทำหน้าที่คำนวณทางคณิตศาสตร์ และเปรียบเทียบทางตรรกะ
🔸 CU (Control Unit) : คือหน่วยประมวลผลย่อย ทำหน้าที่ส่งสัญญาณควบคุม ไปควบคุมการทำงานของหน่วยประมวลผล เหมือนทำหน้าที่ปิด-เปิดสวิตช์ เพื่อควบคุมวงจรให้ทำงานตามคำสั่ง
🔸 Register : คือหน่วยความจำขนาดเล็กที่อยู่ใน CPU
.
หากชอบเนื้อหานี้ ฝากกดไลก์ กดแชร์ ให้แอดด้วยน้าาา อยากให้แอดทำเรื่องอะไรอีก สามารถคอมเมนต์มาบอกได้เลยจ้าาา 🥰
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
output unit 在 Nurul Izzah Anwar Facebook 的最佳解答
KAMAR KHAS PARLIMEN : KERJASAMA ANTARABANGSA MENANGANI JENAYAH PEDOFILIA
Malaysia mencatatkan jumlah teramai dalam melayari pornografi kanak-kanak di rantau Asia Tenggara menurut laporan The Star pada Januari 2018 dan setakat 2020, PDRM telah berjaya mengesan 10,000 alamat IP individu yang telah mengakses bahan lucah berkaitan pornografi kanak-kanak.
Sehubungan dengan itu, YB Nurul Izzah Anwar di dalam sidang Kamar Khas telah mengetengahkan isu pornografi kanak-kanak bagi Kementerian Dalam Negeri menerangkan isu sama ada terdapat usaha-usaha yang sedang dijalankan.
Berikut merupakan jawapan Menteri Dalam Negeri :
1. Akta Kesalahan-kesalahan Seksual Terhadap Kanak-kanak 2017 (Akta 792) merangkumi kesalahan seksual seperti pornografi kanak-kanak, pengantunan kanak-kanak (child grooming), Amang seksual (sexual assault (fizikal dan bukan fizikal).
2. Bagi bentuk kerjasama sedia ada, PDRM telah menubuhkan Unit Siasatan Jenayah Siber Seksual (MICAC) pada 2018. Di bawah D11, Jabatan Siasatan Jenayah, Bukit Aman ini bertanggungjawab dalam menguruskan
siasatan eksploitasi seksual terhadap kanak-kanak yang berlaku secara atas talian.
3. Pihak PDRM telah mengambil inisiatif dengan mengadakan kerjasama dua hala dengan agensi penguatkuasaan undang-undang luar negara/ antarabangsa dalam aspek perkongsian maklumat dan juga capacity building.
4. Akta 792 ini adalah bersifat “extra-territorial” iaitu turut terpakai di luar wilayah. Seksyen 3 Akta ini memperuntukkan sekiranya kesalahan-kesalahan seksual tersebut dilakukan oleh warganegara Malaysia
terhadap mana-mana kanak-kanak di luar Malaysia, penjenayah juga boleh didakwa di bawah Akta ini.
5. Bagi isu pelaporan, pengesanan dan pemadaman kandungan pornografi kanak-kanak, Unit MICAC dengan kerjasama agensi penguatkuasaan undang-undang daripada luar negara, kebiasaannya menerima maklumat dalam bentuk alamat IP Address yang didaftar di Malaysia yang dipercayai digunakan untuk berkongsi Child
Pornography (CP).
6. Namun unit MICAC berhadapan dengan kekangan peralatan, kemudahan ICT serta kekurangan pegawai yang terlatih atau 'subject matter expert' menyebabkan jumlah tangkapan atau output adalah rendah berbanding maklumat yang yang diterima.
7. Pada ketika ini Unit MICAC turut bekerjasama dengan pihak Suruhanjaya Komunikasi Multimedia Malaysia (SKMM) dalam usaha menyekat akses kepada laman web yang mengandungi bahan pornografi kanak-kanak di internet.
output unit 在 CarDebuts Youtube 的精選貼文
เผยโฉมตัวจริง All-New Nissan Note e-Power 2021 นิสสัน โน้ต อีเพาเวอร์ โฉมใหม่ เริ่มขาย 23 ธันวาคมนี้ ในประเทศญี่ปุ่น
ระบบขับเคลื่อน 2WD เครื่องยนต์รหัส HR12DE-EM47
รุ่น F ราคา 2,054,800 เยน
รุ่น S ราคา 2,029,500 เยน
รุ่น X ราคา 2,186,800 เยน
Evolution of e-POWER "e-POWER", which has evolved into the second generation, has renewed its motor and inverter. Compared to the predecessor "Note", the motor has improved torque by 10% and output by 6%, achieving more powerful and comfortable starting acceleration and a powerful feeling of acceleration when overtaking from medium and high speeds. The inverter is 40% smaller and 30% lighter than the first generation, and the efficiency of the engine is also improved, which not only improves acceleration performance but also improves fuel efficiency. In addition, by reducing the frequency of engine operation by controlling the system and improving the sound insulation performance of the car body, we have achieved a class of quietness despite being a compact car. In addition, we have developed the world's first control system that actively generates electricity when it is judged that road noise is large based on the road surface condition, and we are improving the quietness.
Advanced safety technology
in all directions Equipped with advanced safety technology that realizes 360 ° safety support, safety in all directions has been improved. In addition, "ProPilot (with Navilink function)" is installed for the first time * 2 . By adding a function linked with the navigation system to the professional pilot who supports driving operations when driving in the same lane on the highway, it is possible to switch the set speed according to the change in the speed limit and decelerate according to the size of the curve. The system assists the driver to reduce the frequency of operation and realize a safe and comfortable drive.
In addition, Nissan's first 1470MPa class ultra-high-tensile steel (ultra-high-strength steel plate for cold pressing) is used for the body frame to achieve both weight reduction and collision safety at a high level.
Exterior design that goes beyond the conventional wisdom of compact cars
A thin headlamp integrated with the front grille, a new V-motion chrome that connects to it, a character line that connects from the front to the rear with a single line, and a clean view that extends below it The advanced, clean and dynamic design of Nissan's new design language, such as the inflection of the richly sloping surface depending on the angle and the distinctive signature rear combination lamp with the shape of one horizontal character that spreads horizontally, while being compact It also has a striking presence. In addition, the front grille has a pattern inspired by Kumiko, a traditional Japanese craft, and has a "design that blends into the Japanese landscape." The sleek and advanced headlamps use a 4-unit LED projector * 3 . Similarly, the optional 16-inch aluminum wheels have a sharp and sophisticated design inspired by Japanese swords, and are designed to remind you of the driving performance of the "e-POWER." We have prepared a wide range of 13 body colors, including 2 tones of 2 colors, to create a lineup that customers can enjoy and choose according to their tastes. Nissan's new cool tone "Opera Move", which was developed for the advanced and dynamic "Vivid Blue" and the new "Note", is a color that suits sophisticated adults.
Advanced and comfortable interior space The
interior design realizes an advanced and comfortable space that overturns the common sense of compact cars. The instrument panel that expands outward is equipped with a meter integrated with the center display, embodying Nissan's new interior design concept that combines advanced feeling and ease of use suitable for electrification. In addition, the bridge-type center console on which a small electronically controlled shift lever sits is equipped with a large storage space and long reach armrests, so you can enjoy both comfortable driving with an innovative design. In addition, the center console in the front seat is equipped with highly convenient functions such as a wireless charger for smartphones * 3 . The rear seats are equipped with a reclining function, ensuring a class-leading spacious space in both the knee room and headroom. Furthermore, in the luggage compartment, by securing a wide opening and luggage compartment width, it is possible to store luggage without stress. Three types of interior colors and materials are available. The X grade is a combination of a jersey seat with gradation stripes and a synthetic leather armrest. The instrument panel also features carbon-like decorations and a long, horizontally-spreading matte chrome finisher for a clean, modern color coordination.
output unit 在 一二三渡辺 Youtube 的最佳貼文
By car before having come to return from Wakayama about the touring
うしろには、ハーレーダビットソン Harley-Davidson 883に乗る不思議ちゃんが・・・
Moreover, it comes to play.
HONDA and CBR1000RR (double are that doesn't Shebearl it) are four parallel cylinders of the CBR series that sales 1 and have been done as a succession car of CBR954RR of Honda Motor Co., Ltd. since March 31, 2004, and motorcycles of displacement 998cc. The model for export is a concept from which a pet name of Fireblade (fire braid) is given.
It was assumed the style that the concept was a location of sisters car of the replica of works machine RC211V of HRC and CBR600RR, the unit professional link used with RCV and CBR600RR was adopted in the chassis, and the style also looks like RCV and CBR600RR. Moreover, the electronically controlled steering wheel damper and HESD(Honda Electric Steering Damper) were additionally adopted for the first time as a car on the market in the world.
Pet..name..pet..name..series..founder..development..person in charge..Baba..chief researcher..HONDA..retirement age..leave the office..this..model..development..take charge of..chief researcher..in place of..Baba..chief researcher..take charge of..distinguish.
2004- 2005 type
It announces as a succession model of CBR954RR in 2004. As the main change
point
* It changes to a design near CBR600RR previously announced.
o It changes to a right and left, independent light arrangement as well as CBR600RR. (Only one side lights both sides in a lighting high beam at a low beam. )
o It changes from a usual right putting out to the muffler of a central putting out as well as CBR600RR.
o Swing arm & suspension of the unit professional link method is adopted following CBR600RR. Pipottoresfram is abolished along with it.
* Adoption 2 of steering damper (HESD) of electronically controlled method
jointly developed with KYB
* The radial mount caliper made by Tokiko is adopted for the reception desk brake (A rear brake adopts the caliper of NISSIN KOGYO as usual).
* An increase in great weight (It is 177kg in 170kg→181kg.2006 year's restyling in the
dry weight of a domestic specification).
The hazard lamp was equipped normally as the minor restyling, and the same to RC211V color of Repsolhonda that was the MotoGP works team was put on the market as a limited model with a new color in 2005. Difference of three (* A limited model works color is sold as one of the color variations about the export specification in Japan) each country specification.
European specification (specification of ED(European Direct Sales) EU), and it is and ..North America specification (.. ..separation.. in three of domestic specifications sold USA・AUS (Australia) and in Japan according to country for export rough division though there are various differences. It has a pet name of Fireblade, the change and the serial numbers on the body of the color pattern exist the export specification compared with a domestic specification, and there is a difference of the change etc. in VIN. When the vehicle of the export specification is reimported and it uses it in Japan, the adjustment and the fuel such as optical axes of the headlight should use the high octane gasoline. European specification
* Maximum output 172ps/max torque 11.7kg・m.
* It is when the output is being limited by the sales country like a French
specification and a German specification, etc.
* The equipment of the headlight turning off switch (Non-equip it with the ED
specification).
* It equips it with the catalyzer.
North America specification
* Enlargement of winker and equipment of side reflector.
* Mile mark of speed meter.
* Non-equipment of theft control device immobilizer and HISS. (* It is equipped with
the AUS specification. )
* Non-equipment of catalyzer.
It is said that the output is increased more than the ED specification in about 6ps, and is lightened weight about 2kg by the catalyzer non-equipment though making public is not formally done.
* There is a case where the catalyzer is installed also in North America in a part of
district (California state).
ライダーズカフェMACHⅢ
http://www.kurocco.com/cgi-bin/mach3/
output unit 在 一二三渡辺 Youtube 的最佳貼文
【 絶大な人気を誇った1980年代のレーサーレプリカ 】 1980年のアールズコートショーにおいて、プロダクションレースのベースモデルとして発表されたのがHonda CB1100Rです。1976年から4年連続でヨーロッパ耐久選手権を制し「不沈艦」の異名をとった耐久レーサーRCBのレプリカとも呼ばれた CB900Fがベース。排気量1062ccの空冷並列4気筒DOHC16バルブエンジンはさまざまなチューニングが施され、最高出力は実に115馬力を発生します。フレームは一般的なダブルクレードルタイプ。サスペンションはフロントがエア加圧式、リヤはダンパー調整機能が付きリザーブタンクも装備したコイルダンパーユニットがセットされています。最高速度220km/hオーバーのCB1100Rは1000台の限定生産とされ、世界中のファンの羨望を集めました。さらに、人気の高さからその後もフルカウルやベンチレーテッドディスクブレーキを搭載した82年型のCB1100R(C)が1500台、角形スイングアームや可変ダンパーを採用した83年型のCB1100R(D)が1500台生産されたのです。
【A racer replica of 1980's proud of great popularity】In Earls Court show of 1980, it is Honda CB1100R that it was announced as a base model of the production race. CB900F which was called the replica of durability racer RCB which I win a European durability championship consecutively for four years from 1976 and asked the nickname of "the non-Shen warship" is a base. As for four air-cooling parallel cylinder DOHC16 valve engines of 1,062cc cubic centimeter displacement, various tuning is taken, and the best output occurs at 115HP really. The frame types a general double cradle. As for the suspension, the coil damper unit that air pressurization type, the rear gain a damper adjustment function, and the front desk equipped with the reservation tank is set. CB1100R of the maximum speed 220km/h over was considered to be 1,000 limited production and collected the envy of fans in the world. Furthermore, 1,500-shaped CB1100R(D) was produced from popular height afterwards in 83 when 1,500-shaped CB1100R(C) adopted a square shape swing arm and a variable damper in 82 equipped with a full cowl and ventilated disk brakes.