วงจรหรือขั้นตอนวิธีการโปรแกรมแบบ Test Driven Cycle

Tags: unit-test

Test Driven Cycle เป็นวงจรวิธีการเขียนโปรแกรมที่เริ่มต้นด้วยการเขียนคำสั่งเพื่อทดสอบว่าเมธอด (method), คลาส (class) หรือคำสั่งอื่นที่เขียนขึ้นมาเพื่อทำงานเฉพาะอย่าง ทำงานได้อย่างได้อย่างถูกต้องตามที่ควรจะเป็น ด้วยการสร้างสถานการณ์จำลอง (test case) เรียกใช้คำสั่งเหล่านั้น แล้วเปรียบเทียบผลลัพธ์ที่ได้ว่าเป็นไปอย่างคาดคิดไว้หรือไม่ รูปแบบการเขียนโปรแกรมแบบนี้มีประโยชน์มาก ซึ่งจะได้กล่าวต่อไปในเรื่องของ Unit Test ที่จะได้กล่าวต่อไป

ยกตัวอย่างเช่น ผมเขียนเมธอดที่ทำการบอกเลขสองตัว สถานการณ์จำลองที่ผมสร้างขึ้น อาจเป็นการบอกเลขสองตัวเช่น 2 + 5 ดังนั้นหากเมธอดนี้ทำงานได้อย่างถูกต้องผลลัพธ์ที่ได้ก็ควรจะเป็น 7

Test Driven Cycle มีขั้นตอนดั้งนี้

1. Write your test if the target object and API already exist.

เขียนสถานการณ์จำลองหรือ test case ขึ้นมาราวกับว่าเมธอด คลาสหรือคำสั่งที่เราได้สร้างขึ้นมีอยู่แล้ว

2. Complie the solution and see it breaking.

ทำการ compile ก็จะพบว่าโปรแกรม complie ไม่ผ่าน

3. Write just enought code to get it to compile.

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

4. Run the test and see it fail.

ทดลอง run test case สถานการณ์จำลองที่สร้างขึ้น เพื่อเห็นผลลัพธ์ว่าผลการทดสอบไม่ผ่าน

5. Write just enough code to get it pass.

เขียนคำสั่งเพิ่มเติมเพื่อให้การ run test case ผ่าน

6. Run the test and see it pass.

run test case เพื่อดูผลลัพธ์ว่าผ่านการทดสอบ

7. Refactor if nessary.

ปรับปรุงคำสั่งที่เขียนขึ้นให้มีความสมบูรณ์มากขึ้น

โดยความเห็นส่วนตัวของผม test driven cycle เป็น best practice ที่ดีที่โปรแกรมที่ดี ควรจะนำไปใช้ในการทำงานครับ