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...

Apple M4 รุ่นไหนเหมาะกับใคร

Apple M4 รุ่นไหนเหมาะกับใคร

หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...

Cloudflare Access ของดีขนาดนี้ ฟรีได้ไงวะ

Cloudflare Access ของดีขนาดนี้ ฟรีได้ไงวะ

จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...

Mainframe Computer คืออะไร ? มันยังมีชีวิตอยู่ใช่มั้ย ?

Mainframe Computer คืออะไร ? มันยังมีชีวิตอยู่ใช่มั้ย ?

ทุกคนเคยได้ยินคำว่า Mainframe Computer กันมั้ย เคยสงสัยกันมั้ยว่า มันต่างจากเครื่องคอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปอย่างไรละ และ Mainframe ยังจำเป็นอยู่มั้ย มันได้ตายจากโลกนี้ไปหรือยัง วันนี้เรามาหาคำตอบไปด้วยกันเลย...

Infrastructure as Code คืออะไร ทำไมถึงสำคัญมากในปัจจุบัน

Infrastructure as Code คืออะไร ทำไมถึงสำคัญมากในปัจจุบัน

เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...