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

Stream Apple Music อย่างไรให้ได้คุณภาพสูงสุด

Stream Apple Music อย่างไรให้ได้คุณภาพสูงสุด

เรื่องของเรื่องคือ เราทดลองเล่นเพลงผ่าน AirPlay 2 เข้ากับลำโพงแล้วเสียงมันแปลก ๆเลยไปหาข้อมูลมา เลยทำให้โป๊ะว่า อ้าว.... ชิบหาย Hi-Res ทิพย์นี่หว่า ทำไม เราไปดูเหตุผลในบทความนี้กัน...

ซิงค์ลม vs ชุดน้ำ แบบไหนเหมาะกับใคร

ซิงค์ลม vs ชุดน้ำ แบบไหนเหมาะกับใคร

เมื่อไม่กี่วันมานี้เราเอาเครื่องไปเปลี่ยน CPU มา เป็นตัวที่ดุเดือดขึ้น ทำให้เกิดคำถามว่า เอ๋ เราควรจะใช้เป็นชุดน้ำไม่ว่าจะเปิดหรือปิด หรือจะเป็นซิงค์ลมแบบที่เราใช้งานกันมานาน หลังจากไปหาข้อมูลต่าง ๆ วันนี้เรามาเล่าให้อ่านกันว่า แต่ละอันมันจะเหมาะ หรือไม่เหมาะกับใคร...

Calibrate หน้าจอไปทำไมและทำอย่างไร

Calibrate หน้าจอไปทำไมและทำอย่างไร

เรื่องของเรื่องคือ เราซื้อจอ Dell Ultrasharp 32 นิ้วมาใหม่ และมักนำมาใช้ทำงานพวก Colour Grading และ แต่งรูป ด้วย เรื่องสีเป็นเรื่องสำคัญมาก ๆ ไปนั่งคุยกับเพื่อนก็คือ เพื่อนมาทำเลยให้ค่าาา วันนี้เราจะมาเล่าให้อ่านกันว่า ทำไม เราจำเป็นต้องทำ Display Calibration และ หลักการเบื้องหลังคืออะไร...

เลือกซื้อ Music Steaming เจ้าไหนดีในปี 2024

เลือกซื้อ Music Steaming เจ้าไหนดีในปี 2024

มาถึง Content ที่คนถามเข้ามาเยอะมากว่า ในปี 2024 ในไทยเรามี Music Streaming เข้ามาเปิดหลายเจ้ามาก ๆ ตั้งแต่ Spotify, Apple Music, Youtube Music และ Tidal เราควรจะเลือกเจ้าไหนดี วันนี้เราจะมาวัดจาก Indication 5 อย่างด้วยกัน แล้วลองมาสรุปคะแนนดูว่า เราน่าจะเหมาะกับเรื่องแบบไหนกันดีกว่า...