• ภาษาไทย
  • English

สำนักงานพัฒนาเทคโนโลยีอวกาศและภูมิสารสนเทศ (องค์การมหาชน):GISTDA

เป็นองค์กรในการนำคุณค่าจากอวกาศและภูมิสารสนเทศสู่สังคม

วิธีการทดสอบซอฟแวร์สำหรับดาวเทียม ไม่ยากอย่างที่คิด...

วิธีการทดสอบซอฟแวร์สำหรับดาวเทียม ไม่ยากอย่างที่คิด...

thdsbdaawethiiym_aimyaakyaangthiikhid-01.jpg

เกร็ดความรู้จากวิศวกรดาวเทียม  THEOS-2 Small Sat 

เรื่องราวความรู้เกี่ยวกับการสร้างดาวเทียมยังมีอีกมากมายหลายขั้นตอนครับ วันนี้แอดมินไม่พลาดที่จะนำสาระความรู้ดีๆจากพี่ๆวิศวกรของ GISTDA มาฝากชาวแฟนเพจอีกเช่นเคย วันนี้..แอดมินนำเสนอเป็นเรื่องราวเกี่ยวกับการทดสอบซอฟแวร์ เชื่อว่าหลายๆคนที่เคยทำงานเกี่ยวกับการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ไม่ว่าจะเป็นการออกแบบเว็บไซต์, การทำแอปพลิเคชั่น, การเขียนชุดคำสั่งหรือแม้กระทั่งการออกแบบระบบที่เราต้องการใช้งาน มักจะต้องเจอกับสิ่งที่เรียกว่าการทำ “Manual testing” ซึ่งก็คือการทำการทดสอบโปรแกรมที่เราเขียนขึ้นมา โดยการทำ “Manual testing” นั้นอาจจะเกิดขึ้นหลังจากที่ตัวโปรแกรมเสร็จสมบูรณ์ หรือมีการเปลี่ยนแปลงภายในโปรแกรม หรือมีการเพิ่มกระบวนการบางอย่างเข้าไปในโปรแกรมนั้นๆเพิ่มเติม ในการทำการทดสอบอาจจะมีการส่งค่าใดค่าหนึ่งเข้าไปในโปรแกรมที่เราต้องการจะทดสอบทีละค่าและดูผลลัพธ์ที่ได้ออกมา ทำอย่างนั้นวนไปเรื่อยๆทีละค่าจนเสร็จสิ้นการทดสอบ แต่หากค่าข้อมูลต่างๆที่เราต้องการจะทดสอบนั้นมีค่าประมาณ 100 หรือ 1000 ค่าขึ้นไปละ... เราจะทำอย่างไร? เพื่อให้การทดสอบนั้นรวดเร็วขึ้นและสามารถลดความผิดพลาดของมนุษย์ลงได้ นั่นก็คือ การใช้วิธี “Unit Testing” นั่นเองครับ

“Unit Testing” คืออะไร? 
“Unit Testing” คือซอฟต์แวร์ชนิดหนึ่งที่ทดสอบการทำของซอฟต์แวร์ หรือองค์ประกอบของซอฟต์แวร์นั้นๆ พูดกันตามตรงก็คือ ซอฟต์แวร์ที่ใช้ทดสอบซอฟต์แวร์ หรือ โปรแกรมที่ใช้ทดสอบโปรแกรมนั่นเองครับ จุดประสงค์ของการทำ “Unit Testing” นั้นคือ เพื่อทำการทดสอบและตรวจสอบการทำงานว่าสามารถทำได้อย่างที่คาดหวังไว้ หรือตั้งเป้าไว้ได้หรือไม่ โดยปกติแล้วการทำ “Unit Testing” จะทำในช่วงที่เรากำลังพัฒนาซอฟต์แวร์โดยจะทำการทดสอบความถูกต้องแต่ละส่วนของโปรแกรม ตัวของ “Unit Testing” จะมี “UnitTest framework” หรือชุดคำสั่งที่นักพัฒนาซอฟต์แวร์ได้ทำไว้เพื่อทำการทดสอบแบบอัตโนมัติและมีด้วยกันหลายภาษา ตัวอย่างของ “UnitTest framework” ได้แก่ Unit test , Pytest ที่เป็นภาษา Python หรือ Google Test, Catch ที่เป็นภาษา C++ เป็นต้นครับ ทั้งนี้ ตัวของ “Unit Testing” นั้นก็มีข้อควรระวังอยู่เช่นกัน คือการออกแบบตัว Unit test และการออกแบบการทดสอบ เนื่องจากว่าถ้าตัว Unit test ที่เราทำขึ้นมามีข้อผิดพลาดหรือไม่ได้ตรงกับสิ่งที่เราต้องการจะทดสอบ การทดสอบโดยการใช้ Unit test นั้นอาจจะเป็นการเพิ่มเวลา หรือเสียเวลาในการพัฒนาชิ้นงานนี้ก็เป็นได้ครับ

ในดาวเทียม THEOS-2 SmallSAT ได้มีกรณีที่ใช้งาน “Unit Testing” เข้ามาช่วยในส่วนนี้ นั่นก็คือการทดสอบซอฟต์แวร์ของ 3rd Payload  ซึ่งเป็นอุปกรณ์ที่ออกแบบและสร้างขึ้นโดยวิศวกร Theos-2 ของเรานั่นเองครับ โดยใช้ framework ที่เรียกว่า Pytest ในการพัฒนา หลักการการทดสอบเบื้องต้นคือ ความต้องการในการส่งชุดคำสั่งที่ใช้ในการเริ่มทำงานของอุปกรณ์ต่างๆและตรวจสอบค่าที่อุปกรณ์นั้นๆได้ส่งกลับมา จากการที่ได้ทดสอบซอฟต์แวร์ด้วยตัว “Unit Testing” นั้นทำให้สามารถลดระยะเวลาในการทดสอบและมีผลการทดสอบที่สามารถเปรียบเทียบได้อย่างชัดเจน ซึ่งในส่วนนี้จะนำหลักการและขั้นตอนในการออกแบบตัว “Unit Testing” ไปใช้ในทดสอบซอฟต์แวร์ในอนาคตต่อไปครับ เรื่องราวสาระน่ารู้เกี่ยวกับดาวเทียมยังไม่หมดนะครับ แอดมินจะนำความรู้ดีๆมาส่งต่อให้ชาวแฟนเพจได้รับความรู้ไปด้วยกันครับ ส่วนครั้งต่อไปจะเป็นในเรื่องของอะไรนั้น อย่าลืม..!! ติดตามกันนะครับ

ขอบคุณข้อมูลจาก
นายนราวิชญ์ สร้อยผาบ
Simulator Operator Engineer โครงการ THEOS-2 Small Sat
thdsbdaawethiiym_aimyaakyaangthiikhid-03.jpg

Tags: