กระโดดไปยังแผงนำทาง

Syntax Error กับ Runtime Error 30 January 2008 8:06 am

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์ , ตรวจย้อนกลับ

ถ้าเราเขียนโปรแกรมคอมพิวเตอร์ แล้วเราเขียนผิดไวยากรณ์ ตัวแปลภาษาก็จะฟ้องว่าเราเขียนผิดไวยากรณ์ อันนี้เรียกว่า Syntax Error

ส่วนใหญ่แล้วเมื่อเกิดความผิดพลาดแบบนี้ขึ้นมา จึงไม่ใช่ธุระอะไรของมนุษย์เราที่จะต้องตรวจสอบ เพราะหน้าที่ตรวจสอบไวยากรณ์เป็นหน้าที่ของตัวแปลภาษานั้น ๆ มนุษย์มีหน้าที่เพียงแก้ไขให้ถูกต้องเท่านั้นหากคอมพิวเตอร์มันเจื้อยแจ้วบอกเราแล้วว่าเราเขียนผิด

แต่ตัวแปลภาษาเหล่านั้นก็ไม่เคยมาแนะนำเราว่าเราเขียนโปรแกรมยังงดงามไม่พอ เราเขียนแล้วอัลกอริทึมยังเจ๋งไม่พอ หรือเราเขียนแล้วเยิ่นเย้อจริง ๆ ควรเขียนให้กระชับได้มากกว่านี้ … คอมพิวเตอร์มันจะไม่่บอกเรา มันจะเฉย ๆ ประมาณว่าเรื่องของมรึง แค่เขียนให้ถูกไวยากรณ์กรูก็พอ!!!

ถ้าโปรแกรมที่เราเขียน ได้ถูกตรวจสอบโดยตัวแปลภาษาแล้ว ว่าผ่านไวยากรณ์ทุกกระบวนความ แล้วพอเราสั่งให้โปรแกรมทำงาน เรากลับพบว่าโปรแกรมขึ้นข้อความหรือกรอบหน้าต่างฟ้องขึ้นมาว่ามันผิด อันนี้เรียกว่า Runtime Error

เราไม่มีทางรู้ว่าจะเกิด Runtime Error ยกเว้นว่าเราจะมีประสบการณ์สูง ที่จะคาดเดาได้ว่ามีโอกาสอันใดบ้างที่จะเกิด Runtime Error เราก็เขียนโปรแกรมดักเอาไว้ก่อน เพื่อไม่ให้เกิด Runtime Error ดังกล่าวขึ้นมา

แต่ถ้าดักด้วยอัลกอริทึมหรือหนทางที่คิดว่าใช่ทั้งหมดแล้ว ก็ยังเกิด Runtime Error ขึ้นมาอีก เราควรจะทำยังไงดี???

ก็อาจจะเป็นเรื่องโชคดี ที่ภาษาคอมพิวเตอร์ยุคหลัง ๆ มีคำสั่ง try … except มาให้ เพื่อให้เรามาครอบบริเวณโปรแกรมที่เราเดาหรือคะเนว่าต้องเกิด Runtime Error แน่ ๆ แต่ว่าเราจนด้วยเกล้าจริง ๆ เพราะไม่รู้ว่าจะเกิด  Runtime Error ตรงไหน ก็เอา try … except ไปครอบมันเอาไว้ซะเลย หมดเรื่อง

ดังนั้นโดยสรุปแล้ว การจะเกิด Syntax Error หรือเกิด Runtime Error ที่มนุษย์เราหลงหูหลงตาไปได้นั้น ก็ด้วยเพราะตัวแปลภาษาหรือคอมพิวเตอร์มาบอกเรา ถูกแมะ???

ผมเคยเจอเรื่องปัญญาอ่อนเรื่องนึง ที่คิดแล้วขำไม่ออก เรื่องมันมีอยู่ว่าตามกระบวนการพัฒนาซอฟต์แวร์นั้น เมื่อพัฒนาเสร็จแล้วก็จำเป็นต้องทดสอบ ซึ่งก็แสดงว่าทีมพัฒนากับทีมทดสอบควรจะทำงานแยกกัน ทีมพัฒนาก็พัฒนาไป พอพัฒนาเสร็จแล้วก็ให้ทีมทดสอบมาทดสอบ

ผมเจอทีมทดสอบตั้งโจทย์ให้ผม ทำให้ผมมึนไปหลายตลบ ทีมทดสอบบอกว่าขอให้ทีมพัฒนารวบรวม Runtime Error ที่ไม่ได้ถูกดักเอาไว้ในโปรแกรมทั้งหมดให้ด้วย เพื่อเวลาทดสอบจะได้รับความสะดวกยิ่ง ๆ ขึ้นไปอีก

ผมมานั่งนึก ๆ ๆ แล้วก็คิด ๆ ๆ แล้วก็ปิ๊งขึ้นมาว่า ถ้าทีมพัฒนารู้ Runtime Error ที่ไม่ได้ถูกดักเอาไว้ได้ทั้งหมด แล้วผมจะมีทีมทดสอบไว้หาพระแสงอะไรล่ะครับเนี่ย ผมก็ให้ทีมพัฒนาอุด Runtime Error ทั้งหมดไว้ไม่ดีกว่าเหรอ?

เพราะจริง ๆ แล้วหน้าที่หลักของทีมทดสอบ ก็คือการค้นหา Runtime Error ที่ไม่ได้ถูกดักเอาไว้ในโปรแกรมนั่นเอง!!!

เอ๊ะ!!! หรือที่ผมคิดมันไม่ถูกต้องวะเนี่ย?

Technorati Tags: , , , ,

ความคิดเห็น»

1. เอ - January 30, 2008

เอ๊ะ ! หรือเอก็งงๆ มาตลอด

ถ้างั้นไปเป็น tester น่าจะสบายกว่านะครับเนี้ย :p

2. Ekarin - January 30, 2008

อันนี้ออกแนว Tester โบ้ยงานรึเปล่าครับเนี่ย - -”

เพราะว่างานหา Error / Exception น่าจะเป็นงานหลักของ Tester มากกว่า

3. iPAtS - January 30, 2008

เอ่อ.. ถ้ารู้ว่ามี แล้วจะปล่อยไว้ทำไม - -”

runtime error ที่พบได้บ่อยคือ.. divided by zero
โปรแกรมตัวไหนมีการคำนวณก็แทบจะเจอทุกตัว :D

อีกอันที่เจอในขั้น dev คือ ลืม create instance
ประกาศ object ไว้งั้นแหละ แต่ไม่ได้ยัด instance ลงไปให้
พอเรียกใช้ก็บึ้ม เหอๆ

4. guru - January 31, 2008

” ทีมทดสอบบอกว่าขอให้ทีมพัฒนารวบรวม Runtime Error ที่ไม่ได้ถูกดักเอาไว้ในโปรแกรมทั้งหมดให้ด้วย ”

น่าจ้างทำงานมากครับ และคงเป็น QA Team ที่อยากทำงานด้วยมากครับ :(

ถามกลับได้ไหมครับ ว่า เราจ้างคุณมาเพื่ออะไร งานคุณคืออะไร
ทำงานสบายจังครับ :)

แบบนี้ไง บ้านเราเลยไม่ไปไหนไกลไงครับ เพราะมีคนแบบนี้เยอะครับ

พี่คิดถูกแล้วครับ 101% และควรคิดต่อไปว่าเราน่ารับสมัคร QA Team ดีไหม :)

5. pete - January 31, 2008

แล้วเราจะรู้ได้ไงครับว่า อัลกอริทึม เรายังไม่งดงามพอ ?

6. SoftGanz - January 31, 2008

อัลกอริทึม เรายังไม่งามพอ?

คงต้อง

- ลองเอาโปรแกรมของเราให้คนอื่นอ่านดูครับ แล้วเขาอาจจะแนะนำอะไรดี ๆ ได้
- ลองเอาโปรแกรมคนอื่นมาอ่านดูบ้าง เราอาจจะเห็นอะไรดี ๆ ในสิ่งที่คนอื่นเขียนเอาไว้

7. Mr. PeeTai - January 31, 2008

นั่นดิคุณเอ 555 ผมเคยสมัครตำแหน่ง tester นะ แต่เขาไม่รับเพราะเขาคะยั้นคะยอให้รับตำแหน่งนักพัฒนาซอฟต์แวร์แทน

ถูกกกกกกกก…ต้องนะคร้าบบบบบบบบบคุณ Ekarin

ขนาดมืออาชีพอย่างคุณ iPAtS ยังมีพลาดเลยเหรอครับเนี่ย อือม สร้าง object แล้วลืมประกาศ instance ให้ เป็นอะไรที่เจอกันบ่อยจริง ๆ ด้วยแฮะ

ผมบ้องกระโหลกทีมทดสอบไปเรียบร้อยแล้วครับคุณ guru อิอิ แล้วก็ให้ทำงานต่อไป

สงสัยต้องเขียนให้สั้น ๆ เล็ก ๆ แต่ทำงานเร็ว ๆ แล้วได้ผลลัพท์ที่ถูกต้องและเยอะ ๆ กระมังครับคุณ pete

แลกกันดู ชมกันไปชมกันมา ลอยกันทั้งคู่พอดีครับคุณ SoftGanz อิอิ ^-^

8. get - January 31, 2008

ผมอยากให้พี่ไืท้ มีfeed คอมเม้นด้วยจัง

พี่ไท้คิดถูกแล้วครับ ถ้างั้นจะจ้างมาทำไมกัน ??

9. กล้า - January 31, 2008

พี่ไท้ เข้าใจถูกครับ แต่ไม่ครบ

Testing จริงๆ แล้วไม่ใช่แค่นั้งหา Runtime Error ครับ
Testing นั้นหา Bug/Defect ของโปรแกรมครับ

Runtime Error นั้นแค่เป็น Defect อันนึง (ระดับร้ายแรง) ของโปรแกรม
ยังมีส่วนอื่นๆ เช่น ความถูกต้อง Functional, ประสิทธิภาพ Performance, การวัดระดับ Benchmarking, Integration, Regression, ฯลฯ อีกมากมายที่ต้อง Test ครับ

แล้วจู่ๆ เราก็โบ้ยโปรแกรมอะไรก็ไม่รู้ไปให้ Tester ก็ไม่ได้ครับ
ใครจะไปทำงานได้ล่ะคับ
จะให้มานั่ง Test สุ่มสี่สุ่มห้ามันก็มั่นใจไม่ได้ว่าครบถ้วน และสมบูรณ์

ปกติเค้าจะทำ Test Specification มาก่อน ซึ่งเขียนมาจาก Design Document ของโปรแกรม
เพิ่มตรวจหาว่า “เราทำแบบนี้ ต้องได้ผลลัพธ์แบบนี้” เขียนเป็นข้อๆไว้ (อาจจะมากเป็นพันๆ ข้อก็ได้ ในโปรแกรมใหญ่ๆ)

หลังจากตรวจทานว่า เีขียนได้ครบถ้วน สมบูรณ์แล้ว เราจึงเริ่มทำการทดสอบ (Testing Runing) ตามที่เราคิด (และเขียนลงใน Test Spec.) ดังกล่าวครับ

อย่างงี้เราถึงจะมีการทดสอบระบบที่สมบูรณ์ได้ครับ

10. pigpot - February 2, 2008

พี่คิดถูกแล้วคับ

11. DominixZ - February 3, 2008

Tester น่าจะเป็นคนหา Error นะครับ แต่เขาโบ้ยงานให้พี่ เพื่อที่งานเขาจะได้สะดวกยิ่งขึ้น

12. เปิดร้านกาแฟ - March 2, 2008

ถ้าพวกทำ web apps คงเจอแต่ syntax error ครับ


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image