tddcover

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

นี้คือสิ่งที่กำลังฮิตในไทย ( วิทยากรบอก ) ทั้งๆที่ต่างประเทศนั้นทำกันมานานแล้ว แต่ก็ยังดีที่เราเริ่มฮิตกันแล้ว งั้นมาเริ่มกันเลย

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

แล้ว Test Driven Development (TDD) ละคืออะไร เอาแปลตรงตัวการเลยนะ ก็คือการพัฒนาที่มีการทดสอบเป็นตัวนำ ( ดีไม่แปลว่า การพัฒนาด้วยการขับขี่การทดสอบ ) ต่างจากปกติยังไง แทบไม่ต่างเลย แค่สลับกัน ตามความคิดผมนะ ก็เป็นทดสอบก่อน แล้วค่อยเขียนโค้ด และที่แน่นอนที่สุด error มาแน่ๆ เพราะจะผ่านได้ไงไม่มีโค้ด ^^ เมื่อ error เราก็ต้องมาเขียนโค้ดให้ error หายไป แอ๊ะ..หรือจะเพิ่ม error ไปอีก อันนี้ก็ไม่รู้สินะ

และสิ่งที่สำคัญสำหรับ TDD ก็คือ
1. Test Case ซึ่งเป็นสิ่งที่เราต้องเอามาเขียน test ให้โค้ดเรา error นั้นแระ โดยวิธีการคิดหรือหา test case นั้นมีด้วยกันหลายวิธีมากมาย แล้วแต่จะใช้กัน

2. Expected result คือ ผลลัพธ์ที่เราต้องการจาก test case ที่สร้างขึ้นมา

มาถึงขั้นตอนของ TDD มี 3 อย่างหลักๆ

UNIT_TEST_TDD
ที่มา : http://oprsteny.com/?p=740

1. Red (Fail) ใช่แล้ว error นั้นเองงงงงงงงง ในขั้นตอนนี้เราจะทำการเขียน test ขึ้นมาเพื่อทดสอบโค้ด ว่าเป็นไปตามผลลัพธ์ที่ต้องการ(expected result) หรือไม่

2. Green (Pass) ขั้นตอนนี้คือ การเขียนโค้ดเพื่อทำให้ error หายไปนั้นเอง ( บรั๊ย!! ) โดยเขียนโค้ดที่ง่ายที่สุดที่สามารถทำให้ error นั้นหายไปได้ อย่างอื่นไม่ต้องสนใจเอาผลให้ได้ออกมาตาม expected result เป็นพอ แล้วก็ทดสอบใหม่ คราวนี้มันต้องผ่านแล้วนะ ใครยัง error อยู่กลับไปแก้เลย

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

เมื่อทำ 3 อย่างนี้ครบแล้วใน 1 test case ก็ไปทำ test case ถัดไป ทำไปเรื่อยๆ เมื่อยก็พัก แต่ถ้าหิว เมื่อไหร่ ก็แวะมา 7-11 ( ไม่ได้ค่าโฆษณานะ )

สำหรับ TDD นั้นจะทำให้ลดจำนวนหรือการเกิดบัค และง่ายต่อการแก้บัค เพราะทำปุ๊บเจอปั๊บ ก็แก้แปป ไม่ต้องมานั่งงมหาต้นต่อบัคเหมือนที่เคยทำกัน

ก็ขอแนะนำไว้เท่านี้ละกัน ตัวอย่างไม่เขียนดีกว่าเดียวภาษาที่ใช้ไม่ต้องกันแล้วจะงง ( จริงๆแล้วขี้เกรียจเขียน ) ไปหาเอาแล้วกันนะครับ เพราะมีเยอะมาก

ปล. หากมีอะไรผิดพลาดก็บอกกันได้ ภาษาที่ใช้อาจจะงง เพราะผมก็ไม่ค่อยเก่งภาษาไทย ทุกวันนี้สื่อสารได้ก็เมพแล้ว

ที่มารูปหัวข้อโพส : https://mattdever.wordpress.com/2012/11/10/team-projects-2009-leadership-product-management-test-driven-development/