Technology

Automated Testing กับการพัฒนาโปรแกรม

By Arnon Puitrakul - 11 มกราคม 2016

Automated Testing กับการพัฒนาโปรแกรม

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

Automated Testing

แต่ด้วยความซับซ้อนที่มากขึ้นเรื่อย ๆ ของโปรแกรมที่เราออกแบบ ทำให้ความเสี่ยงที่จะผิดพลาดนั้นย่อมสูงขึ้นตามไปด้วยเช่นกัน แต่ในปัจจุบันตอนนี้เลยมีคำว่า Automated Testing เกิดขึ้นมา เพื่อลดข้อผิดพลาดของมนุษย์ (Human Error) ที่อาจจะเกิดได้ในการพัฒนาโปรแกรม และการทดสอบ

ทำไมต้องใช้ Automated Testing

ในช่วงแรก ๆ ของการพัฒนา โปรแกรมของเราอาจจะมีขนาดที่ไม่ใหญ่มาก (ย้ำว่า ช่วงแรก ๆ จริง ๆ) อาจจะมี Components หรือ ระบบย่อย ๆ ข้างใน อยู่แค่ไม่กี่ตัว ทำให้เราสามารถทำ Manual Testing ได้ง่าย และความผิดพลาดก็อาจจะเกิดขึ้นได้น้อย
เอาล่ะครับ หลังจากที่เราพัฒนาโปรแกรมไปเรื่อย ๆ Components ที่มีอยู่ระบบของเราก็จะบานขึ้นไปเรื่อย ๆ งานงอกสิครับ !! เพราะว่า เวลาเราทำ Test ที เราก็ต้องทำให้กับ Components ทุกอัน เลยทำให้ยุ่งกันเข้าไปใหญ่เลย
ปัญหายังไม่หมดแค่นี้หรอกนะ (ยังมีอีกเหรอ !!) ปัญหาข้างต้นถือว่าเป็นเรื่องจิ๊บ ๆ ไปเลย ถ้าหลังจากที่เรา Deploy โปรแกรมที่เราเขียนไปแล้ว แต่พอเวลาผ่านไป เราต้องการที่จะเพิ่ม Feature หรือขยายโปรแกรมของเราไปเรื่อย ๆ เราบอกเลยว่า มันไม่มีทางเลยที่เราจะใช้ Resource ในการทำเท่าเดิม เพราะว่า ระบบใหญ่ขึ้น เราต้องเขียน Test มากขึ้นอีก ทำให้เราต้องใช้ คนเยอะขึ้น และเวลาที่มากขึ้นในการทำงานอีก สิ่งที่งอกตามมานั่นก็คือ ค่าใช้จ่าย

"ก็ซื้อ Resource มาถวายมันซะ !!"

แต่ลองนึกถึงโลกแห่งความเป็นจริง เราต้องเลิกมโนก่อนว่า เรามีเงินเยอะขนาดนั้นเลยเหรอที่จะซื้อ Resource เติมให้กับระบบที่หิวโหยแบบสุด ๆ ราคาของมันก็ไม่ถูกเลย ใช่มั้ยครับ ?
เพราะฉะนั้น การพัฒนาโปรแกรมในสเกลที่ใหญ่ เราจะต้องคำนึงถึงหลาย ๆ เรื่อง ไม่ว่าจะเป็น เทคโนโลยีที่ใช้, Target Platform, ความยากง่ายในการดูแล และที่สำคัญคือเรื่อง Performace
ลองคิดดูว่า ถ้ามีบริษัท A บอกว่า โปรแกรมแบบนี้ใช้ Resource 20 หน่วย แต่ บริษัท B บอกว่า "เฮ้ย โปรแกรมเราก็ทำได้เหมือนกันนะ แต่ใช้ Resource แค่ 10 หน่วยเองนะ" หรืออาจจะบอกว่า "โอกาที่ระบบเราจะล่ม มีน้อยกว่านะ" เราก็ต้องเลือกโปรแกรมของบริษัท B ใช่มั้ยครับ !!
ฉะนั้นแล้วการทำ Manual Testing ในระบบที่มีสเกลค่อนข้างใหญ่ถึงใหญ่สั_ ๆ ผมถือว่าเป็นเรื่องที่สามารถสร้างหายนะได้เลยล่ะ ถึงจะบอกว่า "เฮ้ย เราทำได้ !!" แต่แทนที่เราจะมีสมาธิกับการสร้างโปรแกรมออกมา มันก็จะกลายเป็นต้องมามีสมาธิและเวลากับการทำ Testing ซะงั้น

วิธีแก้ !!

Automated Testing

การแก้ปัญหาง่าย ๆ สำหรับคนที่กำลังประสบปัญหา เรื่องการเสียเวลาในการทำ Testing หรือโปรแกรมเรามี Bug เต็มไปหมด ผมขอแนะนำให้เริ่มหันหน้าไปใช้ Automated Testing Tool บ้าง (ย้ำว่า บ้าง !) จากประสบการณ์แล้ว การใช้ Automated Testing Tool สามารถลดเวลาในการพัฒนาโปรแกรมของเราไปได้เยอะมาก ๆ เลย
ซึ่งในปัจจุบันนี้ Tool ที่ช่วยให้เราสามารถทำ Automated Testing นั้นผุดขึ้นมาเป็นดอกเห็ดเลย ก็อยู่ที่ความเชี่ยวชาญ หรือ Skill ที่ฝึกมาของแต่ล่ะคน แล้วเอามันเข้ามาใช้ใน Workflow จะทำให้เราสามารถทำงานได้ราบรื่นขึ้น และไม่ต้องมาห่วงหน้าพะวงหลัง และปวดตับว่า ทำไปแล้วโปรแกรมมันจะพังมั้ย !
แล้วถามว่า Manual Testing หายไปไหนล่ะ ? จริง ๆ แล้ว เราก็ไม่สามารถชใช้ Testing แบบ Automated ได้ทั้งหมด 100% เต็มหรอก เราก็อาจจะต้องพึ่งการทำ Manual Testing อยู่เหมือนเดิมแหละ แต่ว่า เราอาจจะ (ไม่อาจจะสิ !!) ลดความสำคัญของ Manual Testing ลง แล้วไปโฟกัสกับการใช้ Automated Testing มากกว่า

สรุป

จากที่พูดมาทั้งหมด ผมอยากจะบอกนักพัฒนาที่ยังใช้ Manual Testing ล้วน ๆ 100% อยู่ ให้ลองหันมาใช้ Testing แบบ Automated บ้างเพื่อให้สามารถโฟกัสกับตัว Main ของตัวโปรแกรมที่เรากำลังออกแบบ และ Implement อยู่ จะได้ใช้เวลากับการ Test เท่าเดิม ก็เหมือนกับเราพูดว่า ใช้เวลาเท่าเดิมแต่ทำงานได้มากขึ้นเลยแหละ ไม่กล่าวเกินจริงเลย อยากรู้เพิ่มลองเข้าไปอ่านบทความด้านล่างดู น่าจะทำให้เราเข้าใจมากขึ้นว่า ทำไม Automated Testing ถึงสำคัญขนาดนั้น How Importany is Test Automation in Software Project

Read Next...

Direct Air Capture เทคโนโลยีแห่งอนาคตสู่ Negative Net Carbon

Direct Air Capture เทคโนโลยีแห่งอนาคตสู่ Negative Net Carbon

เมื่ออาทิตย์ก่อน เราเห็นข่าวเรื่องการเปิดใช้งานเครื่องดักจับก๊าชเรือนกระจกที่มีขนาดใหญ่ที่สุดในโลก ณ วันนี้ชื่อว่า Mammoth ที่มีขนาดใหญ่กว่าเครื่องก่อนหน้าถึง 10 เท่า วันนี้เราจะมาเล่าให้อ่านกันว่าการทำ Direct Air Capture เขาทำกันยังไง ทำไมเทคโนโลยีของเจ้านี้ถึงน่าสนใจ...

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

เมื่อ 3 ปีก่อน เรามีความพยายามที่จะใช้ iPad Pro เครื่องเดิมแทนคอมพิวเตอร์ ไหน ๆ ตอนนี้เราเปลี่ยน iPad Pro ใหม่แล้ว เราจะมาลองกันอีกสักตั้งว่า เมื่อเวลาผ่านไป มันใช้งานจริงได้มากขึ้นหรือไม่...

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ตั้งแต่ iPad Pro M4 และ iPad Air M2 เปิดตัวและเริ่มจำหน่ายออกไป Reviewer หลายคนเริ่มมองเห็นแล้วว่า ปัญหาจริง ๆ ของ iPad ในรอบหลายปีที่ผ่านมา ไม่ได้เกิดจาก iPad แต่เกิดจาก iPadOS บางเจ้าบอกว่า อยากให้เอา macOS มาใส่ด้วยซ้ำ มันยังไงกันนะ วันนี้เราจะมาเล่าประเด็นและความเห็นจากเราให้ให้อ่านกัน...

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

หลังจากเราเขียนเรื่อง Solar Cell ไปมีคนถามเข้ามาอยู่ว่า ถ้าจะเลือกติดตั้ง Solar ระหว่างการใช้ระบบ String Inverter กับ Microinverter เราจะเลือกตัวไหนดี วันนี้เราจะมาเล่าเปรียบเทียบให้อ่านกันว่าแบบไหน น่าจะเหมาะกับใคร...