การทดสอบและปรับปรุงโครงงาน
เมื่อเราประกอบชิ้นงานเสร็จแล้ว อย่าเพิ่งคิดว่างานเสร็จ 100% นะครับ! ในโลกวิศวกรรม "การทดสอบ (Testing)" คือขั้นตอนที่สำคัญพอๆ กับการสร้าง เพื่อค้นหาข้อผิดพลาด (Bug) และนำมา "ปรับปรุง (Refining)" ให้โครงงานของเราสมบูรณ์แบบที่สุดก่อนนำไปใช้งานจริงครับ
📋 การออกแบบกรณีทดสอบ (Test Case)
การทดสอบที่เป็นระบบต้องมีการกำหนด กรณีทดสอบ (Test Case) ล่วงหน้า โดยระบุสถานการณ์หรือเงื่อนไขที่จะทดสอบ และ ผลลัพธ์ที่คาดหวัง (Expected Result) เพื่อใช้เปรียบเทียบกับผลลัพธ์ที่เกิดขึ้นจริงจากการทดสอบ (Actual Result)
มิติของการทดสอบ (Types of Testing)
1. ฟังก์ชันการทำงาน
ตรวจสอบว่าเซนเซอร์อ่านค่าได้ตรงไหม มอเตอร์หมุนถูกทิศทางและทำมุมถูกต้องตามที่ออกแบบไว้ใน Flowchart หรือไม่
2. สภาพแวดล้อม
ลองนำไปใช้งานในสถานที่จริง เช่น เซนเซอร์แสงเมื่อเจอแสงแดดจริงกับแสงหลอดไฟในห้อง อาจให้ค่าที่ต่างกัน
3. ความทนทาน
ลองเปิดระบบทิ้งไว้ข้ามคืนเพื่อดูว่าบอร์ดร้อนไหม แบตเตอรี่หมดเร็วแค่ไหน หรือชิ้นส่วนที่ติดกาวไว้หลุดหรือไม่
4. ประสบการณ์ผู้ใช้
ให้เพื่อนหรือคนอื่นที่ไม่เคยทำโครงงานนี้มาลองใช้ดู ว่าเขาเข้าใจวิธีใช้หรือไม่ (มีป้ายบอกไหม, ปุ่มกดง่ายไหม)
✨ กรณีศึกษา: การเปลี่ยน "ปัญหา" ให้เป็น "การปรับปรุง"
ตัวอย่างปัญหาที่พบตอนทดสอบ "ถังขยะอัจฉริยะ" และวิธีการแก้ไขครับ
ฝาถังขยะเปิดๆ ปิดๆ เอง ทั้งที่ไม่มีคนเดินผ่านใกล้ๆ
เขียนโค้ดให้เซนเซอร์อ่านค่ายืนยัน 2 ครั้งติดกัน (Debouncing) ก่อนสั่งมอเตอร์เปิด
ฝาถังขยะปิดเร็วเกินไป ทิ้งขยะไม่ทัน ฝาหนีบมือผู้ใช้งาน
เพิ่มคำสั่ง delay(3000); หลังคำสั่งเปิดฝา เพื่อให้ฝาค้างไว้ 3 วินาทีก่อนปิด
ระบบแจ้งและบันทึกข้อบกพร่อง (Bug Tracking System)
เมื่อพบข้อบกพร่อง ให้นักเรียนวิเคราะห์หาสาเหตุที่แท้จริง (Root Cause) แล้วบันทึกปัญหาพร้อมวิธีการแก้ไข (Optimize) ทั้งฮาร์ดแวร์และซอฟต์แวร์ลงในระบบ เพื่อเป็นฐานข้อมูลและคู่มือสำหรับตนเองและเพื่อน
ศูนย์แก้ปมปัญหาแนวทางการปรับปรุงและพัฒนาต่อยอด (Optimization)
-
1. ด้านประสิทธิภาพโปรแกรม
ปรับโค้ดให้ทำงานเร็วขึ้น ลบคำสั่งที่ไม่จำเป็นออก หรือเปลี่ยนจาก
delay()ไปใช้ฟังก์ชันmillis()เพื่อให้บอร์ดทำงานแบบ Multitasking ได้ -
2. ด้านการใช้พลังงาน
เขียนโค้ดเพื่อนำบอร์ดเข้าสู่ "Sleep Mode" เมื่อไม่มีการใช้งาน และตื่นขึ้นมาเมื่อเซนเซอร์ตรวจจับความเคลื่อนไหวได้ เพื่อประหยัดแบตเตอรี่
💡 เคล็ดลับจากครู: ทัศนคติของนักทดสอบ
"หน้าที่ของเราคือ พยายามจับผิดและทำให้พังให้ได้ (Break it intentionally) ยิ่งเราเจอข้อผิดพลาดในห้องเรียนมากเท่าไหร่ โครงงานของเราก็จะยิ่งสมบูรณ์เมื่อนำไปประกวดหรือใช้งานจริงมากขึ้นเท่านั้นครับ!"