Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีการเรียนรู้ TDD โดยไม่ต้องจม

(เดิมทีฉันเขียนบทความนี้สำหรับจดหมายข่าวของฉัน หากคุณต้องการอ่านเรื่องอื่นๆ แบบนี้ คุณควรลงชื่อสมัครใช้!)

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

หากคุณมาจากที่ที่คุณไม่ได้ทำการทดสอบเลย TDD อาจเรียนรู้ได้ยากเป็นพิเศษ คิดถึงทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อทำ TDD อย่างถูกต้อง:

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

เมื่อเขียนออกมาแบบนั้น ฉันจะแปลกใจถ้าคุณไม่ การต่อสู้. เป็นที่ชัดเจนว่าคุณไม่สามารถเปลี่ยนจากศูนย์เป็น TDD ได้ในขั้นตอนเดียว แล้วคุณจะทำอย่างไร? คุณจะเรียนรู้ TDD ได้อย่างไร โดยไม่ต้อง ถูกครอบงำ?

แยกทางกัน!

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

ตัวอย่างเช่น หากต้องการเรียนรู้ TDD ด้วย RSpec คุณสามารถแยกส่วนได้ดังนี้:

  • เขียนโค้ดสำรวจสำหรับคุณลักษณะโดยไม่ต้องทดสอบ (เพื่อให้คุณได้รับประสบการณ์และคุณสมบัติในการเขียน)

  • ศึกษาโค้ดบางส่วนและจดวิธีที่โค้ดอาจใช้งานไม่ได้ในอินพุตประเภทต่างๆ (เพื่อให้คุณได้เรียนรู้เกี่ยวกับสิ่งที่ต้องทดสอบและวิธีทดสอบ)

  • เขียนการทดสอบสำหรับโค้ดที่มีอยู่แล้ว โดยใช้ minitest ที่สร้างไว้ใน Ruby (เพื่อให้คุณสามารถเรียนรู้การทดสอบขั้นต่ำและพื้นฐาน โดยไม่ต้องเรียนรู้ TDD และ RSpec หรือต่อสู้กับการติดตั้งอัญมณีและตั้งค่าสภาพแวดล้อม RSpec ของคุณ)

  • ทดสอบโค้ดบางส่วนโดยใช้ TDD และ minitest (เพื่อให้คุณสามารถมุ่งเน้นไปที่ TDD โดยไม่ต้องจัดการกับการพึ่งพาอัญมณีหรือเรียนรู้ RSpec เนื่องจากคุณรู้วิธีเขียนการทดสอบแล้ว คุณเพียงแค่ต้องเรียนรู้ที่จะเขียนก่อน)

  • ทดสอบโค้ดบางส่วนโดยใช้ RSpec (เมื่อคุณได้ฝึกฝน TDD มาบ้างแล้ว คุณจึงสามารถมุ่งเน้นไปที่การตั้งค่า RSpec และเรียนรู้ API และวัฒนธรรมของมันได้)

แต่ละทักษะเหล่านี้เป็นทักษะที่เล็กกว่ามากซึ่งคุณสามารถฝึกฝนแยกกันได้ จากนั้นคุณสามารถจดจ่อและฝึกฝนขั้นตอนแรก จากนั้นไปยังขั้นตอนต่อไป และอื่นๆ แทนที่จะกระโดดตรงไปยัง TDD ด้วย RSpec คุณสามารถเติบโต ไปทางนั้น

ดูเหมือนงานจะเยอะขึ้น แต่คุณจะเรียนรู้ทักษะแต่ละอย่างได้เร็วกว่าการพยายามเรียนรู้ TDD ตั้งแต่เริ่มต้น และจะมีพื้นฐานที่ดีกว่าในการสร้างเมื่อรูปแบบการทดสอบที่เป็นประโยชน์ครั้งต่อไปมาพร้อม

โฟกัสไปที่ทีละอย่าง

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

ในขณะที่คุณทำตามขั้นตอนนี้ ให้อนุญาตให้ตัวเองทำเรื่องยุ่งๆ คุณกำลังเรียนรู้ ไม่เป็นไร! มันจะง่ายขึ้นมากเมื่อคุณทำบ่อยขึ้น ฝึกฝนอย่างสม่ำเสมอและรอบคอบ และไปให้ถึงระดับที่มากกว่าสิ่งที่คุณรู้อยู่แล้ว แล้วคุณจะไปถึงที่นั่น