วิธีพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ Test-Driven Development (TDD)

การพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ เป็นปัญหาที่ทุกวันนี้หลายๆ องค์กรต้องพบเจอ วัฒนธรรมการทำงานร่วมกัน (Collaborative Culture) กลายเป็นสิ่งสำคัญที่องค์กรต่างๆ ต้องให้ความสำคัญ เพราะจะช่วยส่งเสริมประสิทธิภาพการทำงานเป็นทีม เพิ่มขวัญกำลังใจของพนักงาน และนำไปสู่ความสำเร็จขององค์กรในอนาคต ด้วยเหตุนี้ การใช้ Test-Driven Development (TDD) เข้ามาเป็นองค์ประกอบหลัก จึงเป็นวิธีหนึ่งที่มีประสิทธิภาพในการพัฒนาซอฟต์แวร์ และเขียนโปรแกรมเป็นทีม

การทำงานเป็นทีม

การพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ ? – Test-Driven Development เริ่มต้นอย่างไร

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

การเขียนเทสต์ (Code Testing) คืออะไร ?

เทสต์เหล่านี้จะตรวจสอบฟังก์ชันการทำงานพื้นฐานของซอฟต์แวร์ที่ต้องการพัฒนา อาจจะเป็น 30% ของโค้ด ตัวอย่างเช่น “การสร้างระบบจองห้องประชุม”

เริ่มต้นออกแบบเชิงแนวคิด และสร้างฟังก์ชันย่อยๆ ของระบบไว้ก่อนให้ครบถ้วนในภาพรวม เพียงพอที่จะมี Event ต่อกันได้ ประกอบด้วยคอมเมนต์ และฟังก์ชันคร่าวๆ เป็นต้น

def test_can_create_room():
#สร้างห้องประชุมใหม่
code…

def test_can_book_room():
#สร้างห้องประชุม สร้างการจอง
code…

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

ก่อนจะไปขั้นตอนถัดไป กลับไปสู่วงจรของการทำ TDD กันก่อน ..

ก่อนอื่นอยากให้นักพัฒนาทุกคนจำภาพนี้ให้ได้ก่อน ซึ่งง่ายยยมากก แดง > เขียว > ฟ้า

วงจรการพัฒนาซอฟต์แวร์ด้วย Test-Driven Development

รูปอ้างอิง : medium, codeheroes

วงจร TDD ประกอบด้วยขั้นตอน ดังนี้ :

  1. สีแดง (RED) : การเขียนเทสต์ที่ล้มเหลว (Test Fails) ในขั้นตอนแรก วางโครงสร้างระบบตามแนวคิดในหัวก่อน
  2. เขียว (GREEN) : เขียนโค้ดให้น้อยที่สุดเพื่อให้เทสต์พอที่จะผ่าน (Write code to pass test.)
  3. ปรับโครงสร้าง (REFACTOR) : ปรับโครงสร้างทั้งเทสต์ และโค้ดเพื่อพัฒนาคุณภาพ ทำให้โค้ดเข้าใจได้ง่าย ลดความซับซ้อน (Clean Code) และพร้อมสำหรับการกลับมาดูแลต่อในภายหลังได้ง่าย
  4. ทำซ้ำ (LOOP) : ทำซ้ำขั้นตอน 1-3 สำหรับฟังก์ชันการทำงานอื่นๆ

Test Driven Development Example : เรื่อง “การพัฒนาระบบจองห้องประชุม” ด้วยภาษา Python

1. RED : เขียนเทสต์ฟังก์ชันภาพรวมการทำงานพื้นฐานของระบบจองห้องประชุม

เขียนเทสต์ฟังก์ชันทั้งหมดในภาพรวม – Test Driven Development Example

2. GREEN : ขั้นตอนถัดไป เขียนโค้ดให้น้อยที่สุดเท่าที่จำเป็นเพื่อให้เทสต์ผ่านทุกฟังก์ชันก็พอ

เขียนโค้ดให้น้อยที่สุดเท่าที่จำเป็นเพื่อให้เทสต์ผ่าน

3. REFACTOR : หลังจากนักพัฒนาทำขั้นตอนที่ 1-2 เรียบร้อยแล้ว ขั้นตอนนี้จะเป็นการปรับโครงสร้างโค้ดเพื่อให้คลีนนๆ อ่านง่าย และบำรุงรักษาได้ง่าย โดยนักพัฒนาแต่ละคนจะมีสไตล์การเขียนที่แตกต่างกันขึ้นอยู่กับความถนัด และความพอใจ

4. LOOP : ทำขั้นตอนที่ 1-3 ซ้ำแบบเดียวกันกับฟังก์ชันอื่นๆ เพื่อให้เป็นมาตรฐานเดียวกันอย่างสม่ำเสมอ

ขั้นตอนทั้งหมดไม่ยากเลยใช่ไหมครับ Back to basic สุดๆ >.<

แล้วเราทำ TDD ไปทำไม ?

ข้อดี :

  • ช่วยให้เขียนโค้ดได้มีคุณภาพ
  • ตรวจสอบข้อผิดพลาดจากโค้ดได้รวดเร็ว
  • ทำให้โค้ดง่ายต่อการบำรุงรักษา

ข้อเสีย :

  • อาจใช้เวลามากขึ้นในช่วงแรก
  • ต้องเปลี่ยนวิธีคิดในการเขียนโค้ดอย่างเป็นระบบ

อย่างไรก็ตามการนำ TDD มาใช้ไม่ได้หมายความว่าจะไม่มีความซับซ้อนในช่วงเริ่มต้น สมาชิกในทีมจำเป็นต้องมีความเข้าใจในกระบวนการพัฒนาซอฟต์แวร์ที่สอดคล้องกันผ่านการสื่อสารอย่างเหมาะสม และสามารถนำวิธีการดังกล่าวไปประยุกต์ใช้ในองค์กรได้สม่ำเสมอจนเกิดเป็นวัฒนธรรมองค์กรแห่งอนาคตต่อไป

ช่วยเผยแพร่โหน่ย:
Verified by MonsterInsights