WHAT IS TEST DRIVEN DEVELOPMENT (TDD)?

ผล�ารค้นหารูปภาพสำหรับ TEST DRIVEN DEVELOPMENT (TDD)?

UFABET : วันนี้พวกเราจะมากล่าวถึง Test Driven Development (TDD) ซึ่งเป็นแบบอย่างการพัฒนาโปรแกรมคอมพิวเตอร์ที่พวกเราต้องสร้าง test ขึ้นมาก่อน แล้วจึงค่อยเริ่มเขียนรหัส พวกเรามาดูกันว่าวิธีอย่างนี้มันจะมีจุดเด่นข้อผิดพลาดอะไรบ้าง เพราะเหตุใดคนถึงได้นิยมกันนัก ?


ปัญหา

ไม่ว่าพวกเราจะเป็น programmer หรือ front-end engineer เวลาพวกเราเขียนรหัส พวกเราก็ชอบเจอปัญหากลุ่มนี้สำหรับเพื่อการปฏิบัติงานอยู่เป็นประจำ

  • พบ bug ที่หลุดรอดสายตาพวกเราไปได้ กว่าจะรู้สึกตัวก็ตอนส่งให้ tester ดูแล้ว
  • ที่ห่วยแตกกว่าก็คือ ภายหลังที่แก้ bug นั้นไปแล้วเพียงพอส่งงานไปให้ตรวจอีกครั้ง tester กลับไปพบbug ตัวใหม่ ที่ทีแรกๆยังไม่มี เอาง่ายๆก็คือ อุตส่าห์แก้ได้แล้ว ดันไปกระทบรหัสอีกส่วนกระทั่งทำให้มีการเกิด bug ใหม่นั่นเอง
  • bug ที่พบนั้นกำเนิดได้จากหลายกรณี พวกเราจำเป็นต้องมานั่งไล่รหัสส่วนๆกว่าจะพบต้นเหตุ

มั่นใจว่าดูเหมือนจะทุกคนน่าจะเคยประสบพบเจอกับปัญหาพวกนี้กันมาบ้าง ดังนั้นเอง ก็เลยเกิดไอเดียการเขียนรหัสที่เรียกว่า Test Driven Development (TDD) ขึ้นมา


Test Driven Development (TDD) คืออะไร ?

ผล�ารค้นหารูปภาพสำหรับ TEST DRIVEN DEVELOPMENT (TDD)?

อย่างที่เกริ่นไปโดยประมาณแล้วขอรับว่าการเขียนรหัสแบบ TDD นั้น พวกเราต้องเขียนรหัสสำหรับ test ขึ้นมาก่อน และหลังจากนั้นก็ค่อยเขียนรหัสที่จะปฏิบัติงานจริงๆคราวหน้า UFABET แม้รหัสของพวกเราดำเนินงานได้ถูกพวกเราก็จะสามารถรัน test นั้นผ่าน


สำหรับในการทำ TDD พวกเราชอบแยกการ test ออกเป็นกลุ่มย่อยๆหรือจะแยกตาม feature เล็กๆก็ได้ครับผม เวลาจู่ๆtest ไม่ผ่านขึ้นมา พวกเราก็จะหาปัจจัยได้ง่าย เพียงพอพวกเราแยกการ test ออกเป็นส่วนๆได้แล้ว ก็ให้พวกเราปฏิบัติตามขั้นตอนดังนี้เลยขอรับ

1. สร้าง Test ขึ้นมาก่อน

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


2. ทดลองรัน Test => ไม่ผ่าน

ต่อจากนั้นให้พวกเราทดลองรัน test พวกนั้นเลย ซึ่งแน่ๆว่าผลที่ได้นั้นควรไม่ผ่านทั้งหมดทั้งปวง ด้วยเหตุว่าพวกเรายังมิได้เริ่มเขียนรหัสจริงๆเลย จะว่าไปแล้ว ขั้นตอนนี้ก็ราวการ test การเขียน test ของพวกเราอีกครั้งนั่นเองขอรับ พวกเราจะได้แน่ใจว่ามันมิได้ test ผ่านเลยตั้งแต่ตอนแรกนะ


3. เริ่มเขียนรหัสจริงๆ

ต่อนี้ไปก็มาถึงกรรมวิธีการเขียนรหัสจริงๆซะครั้งนะครับ ในขั้นตอนนี้พวกเราจะไม่ซีเรียสว่ารหัสที่เขียนนั้นต้องสวยงามอะไร ตรงกันข้าม พวกเราจะวาดแบบเอาเพียงแค่ test ให้ผ่านก่อนเพียงแค่นั้นนะครับ


4. รัน Test อีกครั้ง => ผ่าน

เมื่อรู้สึกว่าคงจะผ่านรวมทั้งให้ทดลองรัน test มองอีกครั้งขอรับ ถ้าหากผ่านได้หมดก็มีความหมายว่าพวกเรามาถูกทางแล้ว แม้กระนั้นหากยังมี test case ไหนไม่ผ่านอยู่ ก็ให้ย้อนกลับไปขั้นตอนที่ 3 นะครับ


5. ปรับรหัสที่รันผ่านแล้วให้ดียิ่งขึ้น

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


แล้วอย่างนี้งานไม่เสร็จช้าลงหรอ ?

มั่นใจว่าเกือบทุกคนคงสงสัยว่า อ่าว! ถ้าเกิดจำต้องมาเขียน test ก่อนถึงจะลงมือเขียนรหัสในความเป็นจริงแล้วแบบงี้งานไม่เสร็จช้าลงหรอ ? แน่ๆว่าฟังดูแล้ว วิธีการทำ TDD ดูเหมือนจะใช้เวลาในการพัฒนาเพิ่มมากขึ้นกว่าเดิม UFABET แม้กระนั้นในความเป็นจริงแล้วมันไม่ใช่เลยเพราะ…

  • เขียนรหัสได้อย่างแน่ใจ เมื่อพวกเรามี test แล้ว พวกเราก็จะกำเนิดความเชื่อมั่นและมั่นใจสำหรับเพื่อการเขียนรหัสเพิ่มขึ้นเรื่อยๆนะครับ เวลาเพิ่ม feature ใหม่ๆเข้าไป พวกเราก็ไม่ต้องมากังวลว่าไอ้ที่ได้ทำไปแล้วมันยังปฏิบัติงานได้ธรรมดาดีอยู่หรือไม่ เพราะเหตุว่าพวกเราสามารถรัน test ซ้ำได้เรื่อยขอรับ

  • Debug ง่ายดายมากยิ่งขึ้นมากมาย เหตุเพราะพวกเราแบ่งการ test ออกเป็นส่วนย่อยๆเวลารัน test ไม่ผ่าน พวกเราก็จะทราบได้โดยทันทีเลยว่าส่วนไหนที่ทำให้มัน test ไม่ผ่าน ทำให้ไม่ต้องมาเสียเวล่ำเวลาไล่รหัสทั้งสิ้นขอรับ

  • Requirement ไม่ตกหล่น เพราะวิธีการทำ TDD นั้น พวกเราต้องให้ความเอาใจใส่กับ requirement ของ product เป็นพิเศษ การเขียนรหัสก็เลยมีเป้าหมายที่แจ่มชัดมากเพิ่มขึ้น เป็นจำต้องตอบปัญหานั้นให้ได้นะ มิเช่นนั้น test ไม่ผ่าน การเขียนรหัสไม่ตรงตาม spec ก็เลยเกิดขึ้นได้น้อยกว่า


TDD กับ Front-end Development
ผล�ารค้นหารูปภาพสำหรับ TDD �ับ Front-end Development

สำหรับ front-end engineer อย่างเราก็สามารถนำTDD มาใช้ได้แบบเดียวกันครับผม โดยหลักๆแล้วพวกเราจะเอาไว้ test การเขียนรหัส JavaScript นั่นเองแล้วก็แม้คนใดกันแน่ยังดูภาพไม่ออกว่าเค้าหน้าของรหัสสำหรับ test จะเป็นอย่างไร ก็ไม่จำเป็นต้องกลุ้มใจไปนะครับ เนื่องจากเวลานี้มี framework สำหรับtest ออกมาให้ใช้มากมายก่ายกอง โดยตัวที่น่าดึงดูดก็จะเป็น QUnit และก็ Jasmine ที่วางแบบมาให้พวกเราสามารถเขียน test ขึ้นมาได้ง่ายอย่างยิ่งๆเลย UFABET ทดลองไปเล่นกันมองครับผม ยืนยัน TDD ไม่ยากเหมือนอย่างที่คิด