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

ซื้อ NAS สำเร็จรูปหรือจะประกอบเครื่องเองเลยดี

ซื้อ NAS สำเร็จรูปหรือจะประกอบเครื่องเองเลยดี

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

SELECT count(id) เร็วกว่า count(*) จริง ๆ เหรอ

SELECT count(id) เร็วกว่า count(*) จริง ๆ เหรอ

เราไปเจอความเชื่อนึงเกี่ยวกับ SQL Query มาว่า เนี่ยนะ ถ้าเราจะ Count หรือนับแถว เราอย่าไปใช้ count(*) นะ ให้เราใช้ count(id) หรือด้านในเป็น Primary Key ใน Table นั้น ๆ จะทำให้ Query ได้เร็วกว่า วันน้ีเรามาทดลองกันดีกว่า ว่ามันเป็นแบบนั้นจริง ๆ หรือไม่...

การเบลอรูปภาพ มันทำได้อย่างไร ทำไมภาพถึงเบลอได้

การเบลอรูปภาพ มันทำได้อย่างไร ทำไมภาพถึงเบลอได้

เคยสงสัยกันมั้ยว่า Filter ที่เราใช้เบลอภาพ ไม่ว่าจะเพื่อความสวยงาม หรืออะไรก็ตาม แท้จริงแล้ว มันทำงานอย่างไร วันนี้เราจะพาไปดูคณิตศาสตร์และเทคนิคเบื้องหลังกันว่า กว่าที่รูปภาพจะถูกเบลอได้ มันเกิดจากอะไร...

AI Watermark กับความรับผิดชอบต่อการใช้ AI

AI Watermark กับความรับผิดชอบต่อการใช้ AI

หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...