Test-Driven Development

จาก Morange Wiki

Test-Driven Development เป็นการพัฒนาซอฟต์แวร์โดยเริ่มจากการเขียนโปรแกรมทดสอบก่อนที่จะเริ่มเขียนโค้ดโปรแกรมจริงให้ทำงานได้ตามโปรแกรมทดสอบนั้น โดยปกติประกอบด้วยกระบวนการแบบวนรอบ สามขั้นตอน คือ

  1. เขียนโปรแกรมทดสอบที่ถูกต้อง ซึ่งจะให้โปรแกรมทำงานไม่ผ่าน เนื่องจากยังไม่ได้เขียนโปรแกรมจริง ( สถานะ Failed/Red)
  2. เขียนโค้ดโปรแกรมจริงๆ ให้สามารถและสามารถทำงานได้ผ่าน โปรแกรมทดสอบ ( สถานะ Passed/Green)
  3. ปรับแก้โปรแกรมให้โค้ดดูง่าย เรียบร้อย โดยที่ยังรันผ่านอยู่ (สถานะ Refactor/Yellow)


การทดสอบโปรแกรม

การทดสอบโปรแกรมที่เขียนขึ้นมีหลายแบบ ส่วนที่สำคัญคือ

  1. Functional Testing หรือการทดสอบฟังก์ชันการทำงาน เป็นการทดสอบในมุมมองของผู้ใช้ ในเชิงการใช้งานจริง ไม่ใช่เทคนิค ในบางครั้งในส่วนนี้ สามารถไปใช้สำหรับการทดสอบ User Acceptant Test หรือการทดสอบเพื่อตรวจรับงาน ว่าแต่ละฟังก์ชันการทำงานหรือฟีเจอร์ต่างๆ ที่ได้ตกลงไว้ สามารถทำงานได้หรือไม่
  2. Unit Testing หรือการทดสอบหน่วยการทำงาน เป็นการทดสอบในมุมมองของโปรแกรมเมอร์หรือผู้พัฒนาในเชิงเทคนิค เช่น ในฟังก์ชันการทำงานหนึ่งๆ ใน Fuctional Testing เช่น การเข้าระบบ อาจมีการทำงานย่อยเบื้องหลังเป็นหน่วยย่อยหลายส่วน ได้แก่ โมเดล วิว เทมเพลต คอนโทรลเลอร์ ซึ่งในแง่ Unit Testing ต้องเขียนทดสอบย่อยในแต่ละส่วนการทำงาน ทั้งในแบบที่ใช้งานได้ (Expected Passed) หรือแบบที่คาดว่าจะใช้งานไม่ได้ (Expected Failed) ให้ครอบคลุมการทำงานทั้งหมด

การทดสอบความครอบคลุมของโปรแกรมทดสอบ

coverage.py เป็น Python สคริปสำหรับตรวจสอบว่า Testcase ที่เราเขียนขึ้น ครอบคลุมโค้ดทั้งหมดที่เราเขียนเพียงใด ทั้งนี้มีผู้นำไปใช้เป็นโมดูลหลายภาษา

pip install coverage

ตัวอย่างโมดูลที่ใช้ coverage.py เช่น django-coverage

Automated Functional Testing โดยใช้ Robot Framework

  • Robot Framework เฟรมเวิร์คสำหรับการทำ Functional Testing แบบอัตโนมัติ ตัวเฟรมเวิร์คพัฒนาโดยภาษาไพธอน แต่สามารถใช้ทดสอบกับโปรแกรมภาษาอะไรก็ได้ เช่น ใช้ร่วมกันกับ Selenium Library สำหรับการทดสอบเว็บแอปพลิเคชัน
  • Selenium2 Library Keywords