TDD (Test-Driven Development) หรือการพัฒนาซอฟต์แวร์แบบขับเคลื่อนด้วยการทดสอบ คือ ทัศนคติในการเขียนโปรแกรมที่เน้นการสร้างเครื่องมือทดสอบซอฟต์แวร์ก่อนที่จะเขียนโค้ดเพื่อให้เกิดฟีเจอร์หรือฟังก์ชันใหม่ๆ คิดง่ายๆ คือ เราเขียนคำถามก่อนแล้วค่อยจัดหาคำตอบมาภายหลัง ซึ่งตรงกันข้ามกับวิธีทั่วๆ ไปที่เราจะเขียนโค้ดเสียก่อนซึ่งเป็นคำตอบ แล้วเราถึงจะทดสอบหาข้อบกพร่องต่อไป
ถ้าจะอธิบายให้เด็ก 8 ขวบเข้าใจนั้น เราอาจจะใช้เปรียบเทียบว่า TDD เหมือนการที่เด็กๆ สร้างกฏก่อนเล่นเกม เช่น "หากเราโยนลูกเต๋าแล้วได้หมายเลข 6 เราจะต้องไปข้างหน้า 6 ก้าว" แล้วหลังจากนั้นเราถึงจะเริ่มเล่นเกมจริงๆ โดยใช้กฏที่เราสร้างไว้นี้เป็นมาตรฐานในการเช็คว่าเกมเดินไปอย่างถูกต้องหรือไม่
ในทางเขียนโปรแกรม TDD นั้นมีประโยชน์มากมาย ด้วยวิธีการนี้ผู้พัฒนาจะมีความมั่นใจมากขึ้นในโค้ดที่เขียน เพราะมีการทดสอบว่ามันทำงานได้ตามที่คาดหวังไว้ก่อนอยู่แล้ว นอกจากนี้ยังช่วยลดความผิดพลาดในการเขียนโค้ด และทำให้การแก้ไขหรือเพิ่มเติมฟีเจอร์ในอนาคตทำได้ง่ายขึ้น
ยกตัวอย่างเช่น เราตั้งใจจะเขียนโปรแกรมคิดเงินทอน เราจะเริ่มโดยการเขียนการทดสอบว่าถ้าลูกค้าจ่ายเงินมา 1000 บาท และราคาสินค้าที่ซื้อคือ 750 บาท เงินทอนควรเป็น 250 บาท ก่อนที่เราจะเขียนโค้ดจริงๆ ที่ทำงานนั้น
ตัวอย่างโค้ดการทดสอบในภาษา Python:
import unittest
class TestChangeCalculator(unittest.TestCase):
def test_return_correct_change(self):
price = 750
paid = 1000
change_calculator = ChangeCalculator()
change = change_calculator.calculate_change(paid, price)
self.assertEqual(250, change)
if __name__ == '__main__':
unittest.main()
และตัวอย่างโค้ดสำหรับเครื่องมือคำนวณเงินทอนที่จะเขียนภายหลังการทดสอบ:
class ChangeCalculator:
def calculate_change(self, paid, price):
return paid - price
ในตัวอย่างข้างต้น เราเริ่มจากการสร้าง "การทดสอบ" เพื่อตรวจสอบว่าเมื่อให้ค่าราคาสินค้าและจำนวนเงินที่จ่าย แล้วเราได้เงินทอนที่ถูกต้องหรือไม่ หลังจากนั้นเราถึงจะเขียน "การคำนวณเงินทอน" ในโค้ดจริงๆ ซึ่งต้องผ่านการทดสอบนี้ก่อนถึงจะถือว่าสมบูรณ์แบบ
เห็นไหมว่า การได้เรียนรู้การเขียนโปรแกรม ผ่านการขับเคลื่อนด้วยการทดสอบนั้นยอดเยี่ยมแค่ไหน อีกทั้งยังเป็นทักษะที่มีค่าในวงการพัฒนาซอฟต์แวร์ การเรียนรู้ในเรื่องนี้และอื่นๆ ที่โรงเรียนสอนโปรแกรมมิ่งอย่าง EPT ถือเป็นการลงทุนที่คุ้มค่าสำหรับอนาคตของนักพัฒนาซอฟต์แวร์แต่ละคนเลยทีเดียว!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: tdd test-driven_development programming software_development coding programming_language python unit_testing change_calculator programming_skills code_testing software_testing development_methodology debugging quality_assurance
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com