แหล่งข้อมูลที่ดีที่สุดสำหรับการเรียนรู้ TDD คืออะไร? [ปิด]


27

ฉันต้องการเรียนรู้ (และอาจารย์) TDD อะไรที่ดีที่สุด:

  • หนังสือ
  • เว็บไซต์
  • วิดีโอ
  • รายการออกกำลังกาย
  • คำพูดส่วนบุคคลของภูมิปัญญา

สำหรับการเรียนรู้การแข็งค่าและการใช้ TDD?



9
ฉันชอบคำถามนี้ หากคุณไม่ควรถามคำถามนี้ที่นี่คุณสามารถถามคำถามเกี่ยวกับการแนะนำการเขียนโปรแกรมหนังสือได้ที่ไหน
guettli

คำตอบ:


18

โดยส่วนตัวแล้วฉันพบว่าการอ่านบทความ JUnit หนึ่งหรือสองรายการที่เน้นว่า "คุณเขียนแบบทดสอบก่อนรหัส" ก็เพียงพอที่จะเริ่มต้นได้

ส่วนที่สำคัญที่สุดในการเรียนรู้เทคโนโลยีนี้คือการเขียนรหัสทดสอบจำนวนมากเพราะคุณจำเป็นต้องเปลี่ยนวิธีพื้นฐานที่สุดที่คุณคิดว่าจะเขียนโค้ด สิ่งที่ชอบ:

  • การเขียนแบบทดสอบก่อนรหัสทำให้คุณคิดล่วงหน้าว่าคุณจะเรียกใช้รหัสของคุณอย่างไรและรับผลลัพธ์กลับมา ซึ่งหมายความว่าคุณออกแบบ API ก่อนตามวิธีที่คุณใช้ ผลลัพธ์นี้มักจะส่งผลให้ API ดีขึ้น
  • รูปแบบการเข้ารหัสของคุณจะเปลี่ยนไปเพราะคุณจะต้องคิดแบบแยกส่วนมากขึ้นเพื่อที่จะสามารถทดสอบชิ้นส่วนของรหัสแทนที่จะเป็นแบบทั้งหมด
  • คุณจะไปยังจุดที่คุณจะสามารถดึงก้อนใหญ่ออกมาอย่างมั่นใจและแทรกก้อนใหม่แทนที่จะทำแบบเดียวกันเพราะผ่านการทดสอบของคุณ ฉันทำแบบนั้นเมื่อไม่นานมานี้พร้อมห้องสมุดการแยกวิเคราะห์วันที่เนื่องจากต้นฉบับนั้นอ่อนโยนเกินไป

สถานที่ที่ดีที่สุดในการเริ่มต้นเล็ก ๆ ก็คือกิจวัตรของคุณ ครั้งต่อไปที่คุณต้องการแล้วแค่ออกแบบด้วยการทดสอบก่อนเขียนการทดสอบมากมายที่ครอบคลุม usecases อย่างเป็นทางการทั้งหมดของคุณ (รวมถึงสิ่งที่ควรเกิดขึ้นกับค่า null ที่ผ่านไปและอื่น ๆ ) และเมื่อทุกกรณีการใช้งานถูกนำมาใช้ มันโดยตรงในรหัสของคุณและมั่นใจว่ามันทำงานได้ตามที่คาดไว้

นอกจากนี้ยังเป็นประสบการณ์ของฉันที่การทดสอบที่ดีสามารถทำงานเพิ่มเติมเป็นเอกสารได้เนื่องจากคุณมีรหัสที่รัดกุมมากที่บอกว่ารหัสนั้นทำงานอย่างไรในสถานการณ์ต่าง ๆ ซึ่งสามารถพิสูจน์ได้อย่างง่ายดายว่าถูกต้อง (แถบสีเขียว) ด้วยความคิดเห็นที่รอบคอบคุณไม่ได้ดีไปกว่านี้

สำหรับ Java jUnit เวอร์ชัน 4 นั้นดีจริงๆ


8

ในความคิดของฉันTDD นั้นเกี่ยวกับการทำให้โค้ดทดสอบได้มากกว่าการเขียนแบบทดสอบ

แน่นอนว่าคุณสามารถเขียนการทดสอบก่อนการเขียนโค้ด แต่เหตุผลทั้งหมดที่เขียนนั้นมีไว้เพื่อให้คุณสามารถเขียนโค้ดได้ซึ่งจะไม่ทำให้คุณหยุดเขียนโค้ดที่ยากต่อการทดสอบ

ลองดูที่นี่เพื่อรับความรู้สึกที่ดีขึ้นในสิ่งที่ฉันหมายถึง: Unified Theory of Bugs

หากคุณสนใจแนวคิดนี้และต้องการเรียนรู้เพิ่มเติมเพียงแสดงความคิดเห็นและฉันจะชี้ให้คุณเห็นทิศทางการนำเสนอที่บันทึกไว้ในหัวข้อจาก Google

UPDATE:

วิธีการเขียนโค้ดที่สะอาดและสามารถทดสอบได้

Miško Hevery Presenting (โดยGoogleTechTalks ) ที่Google ใน NYCและได้รับการสนับสนุนจากกลุ่ม Google Engineering Engineering Group


ไปข้างหน้าและเพิ่มลิงค์งานนำเสนอของ Google ฉันคิดว่าตัวแทนของ Eric ยังไม่อนุญาตให้แสดงความคิดเห็น
ocodo

+1 @Slomojo: จริงงั้นลงคะแนนคำถาม ... เพื่อผลักเขาเกิน 15 คนถ้าฉันจำได้ถูก ฉันจะดูวิดีโอ
ความผิดพลาด

1
@blunders ... ฉันได้เขามาที่ 11!
ocodo

+1 @Slomojo: สำหรับการโหวตให้พบและเพิ่มลิงก์ไปยัง Google Tech Talk ในคำตอบของฉัน ไชโย!
ความผิดพลาด

8

นอกเหนือจากบางส่วนของหนังสือที่กล่าวมาแล้วจะสามารถแนะนำการเจริญเติบโตซอฟต์แวร์เชิงวัตถุแนะนำโดยการทดสอบ ฉันยังอ่านไม่เสร็จ แต่มันเป็นการอ่านที่มีค่ารวมถึงเรื่องราวของโครงการ TDD ที่เหมือนจริงทั้งหมดไม่ใช่แค่ตัวอย่างโค้ดที่ง่ายขึ้น


ฉันคิดว่านี่เป็นหนังสือเล่มโปรดของฉันและเป็นหนังสือที่ส่งผลต่อวิธีการทำงานของฉันมากที่สุดไม่เพียง แต่เกี่ยวกับ TDD แต่เกี่ยวกับ Software Dev โดยทั่วไป ฉันต้องยอมรับว่าฉันไม่ได้อ่านหนังสือ TDD จำนวนมากดังนั้นอาจไม่เชื่อใจฉันมากขนาดนั้น
antonio.fornie

4

ฉันอ่านหนังสือสองเล่ม:

ทดสอบขับเคลื่อนการพัฒนา: ตามตัวอย่างโดยเคนท์เบ็คและ

กรอบการทดสอบหน่วยโดย Paul Hamil

หนังสือ Beck ได้รับการยกย่องอย่างดี แต่ฉันไม่ได้เริ่มต้นด้วยการทดสอบหน่วยจนกว่าฉันจะอ่าน "กรอบการทดสอบหน่วย" ฉันทำ TDD บางตัว แต่ฉันยังเพิ่มการทดสอบในรหัสเก่าที่ฉันต้องรักษาไว้ (เมื่อฉันทำได้)

แก้ไข: นอกจากนี้เมื่อคุณได้รับการจัดการกับมันฉันขอแนะนำให้ใช้มันในโครงการปัจจุบันทันที สำหรับฉันนั่นคือเมื่อการเรียนรู้จริงเกิดขึ้นและฉันคิดว่าหนังสือ "กรอบการทดสอบหน่วย" เป็นหนังสืออ้างอิงที่ดีกว่าสำหรับจุดประสงค์นี้ (ฉันใช้ nunit กับ C #)


4

แม้ว่าจะไม่ได้เกี่ยวกับ TDD เป็นหลัก (แม้ว่าจะสัมผัสกับมันรวมถึงการออกแบบเพื่อการทดสอบ), ศิลปะของการทดสอบหน่วยเป็นหนังสือที่ฉันอยากจะแนะนำเพราะมันสอนวิธีการเขียนการทดสอบที่ดี

โดยเฉพาะอย่างยิ่งมันสอนวิธีการสร้างการทดสอบที่เชื่อถือได้บำรุงรักษาและสามารถอ่านได้ ฉันคิดว่านี่เป็นส่วนที่สำคัญที่สุดของหนังสือนอกเหนือจากพื้นฐานการทดสอบหน่วยและกรอบการแยก เห็นได้ชัดว่าหากการทดสอบหน่วยเป็นจุดปวดหรือเพิ่มแรงเสียดทานให้กับงานของนักพัฒนาความสำเร็จหรือผลประโยชน์ใด ๆ จากพวกเขาจะถูก จำกัด หากมีการลงทุนเวลาและความพยายามในการสร้างแบบทดสอบเขาควรจะได้รับผลตอบแทนสูงสุดจากการลงทุนนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.