Monday, May 12, 2014

Robotframework+AutoItLibrary: ขจัดความซ้ำซ้อน

สวัสดีครับ ต่อจากตอนที่แล้ว เรามี Test case สำหรับปุ่มเลข 1 กับ 2 ละ ก็เหลือ 3 - 9 เนอะ

ทีนี้เราจะเพิ่ม Test case สำหรับ ปุ่มที่ 3 เราจะทำยังไงดี Copy มาเลยเหมือนตอนที่แล้วดีมั้ย มันก็ง่ายดีนะ

แต่ช้าก่อนสหาย ลองหยุดแล้วคิดสักหน่อยนะ ถ้าเรา Copy ได้ แปลว่ามันเหมือนกันน่ะสิ เปลี่ยนแค่ Parameter นิดหน่อยเอง ลองสังเกตดูใน Test ของเราให้ดีๆเถิด

เราจะพบว่า มันเหมือนกันมากๆ (ก็แหงล่ะ Copy กันมา) ต่างกันตรงที่ขีดเส้นไว้เท่านั้นแหละ

นี่เรียกว่าความซ้ำซ้อน(Duplicate)ครับ ถ้าปล่อยเอาไว้อย่างนี้ ก็ไม่มีปัญหาอะไรหรอก เราก็ยัง Test ได้ตามปกติ แต่มันจะมีปัญหาเมื่อเวลาผ่านไปเรื่อยๆครับ อย่างเช่นเราจะเพิ่มหรือลด Keyword ก็ต้องไล่ทำทีละอันๆ (อย่างเช่นในตัวอย่างนี้ มีตั้งแต่ 1 - 9 ) คนเราทำอะไรที่มันซ้ำๆ ไม่เก่งหรอกครับ ให้มันช่วยเราดีกว่า

เริ่มจากทำให้ Keyword รับ arguments ครับ แล้วก็เปลี่ยนตรงที่เรียกใช้ Keyword ให้เป็น Argument แทน

ลองรันเทสดู ถ้ายังผ่านก็ไปต่อได้ ขอไม่อนุญาตไม่แปะรูปนะครับ ไม่มีอะไรใหม่

แก้ Keyword อันต่อไปให้รับ Argument เหมือนกัน

เสร็จแล้วรันเทส ต้องยังผ่านอยู่นะครับ

ทีนี้ไปเปลี่ยน Test case อันที่สองให้เป็นแบบ Test case อันแรกดู ต้องเทสผ่านเหมือนเดิมนะ

เราจะเห็นว่า Keyword 'Click Button 2' และ 'Answer Should Be 2' นั้นไม่จำเป็นแล้ว ลบทิ้งไปได้เลย

เป็นไงฮะ ดูสะอาดขึ้นเยอะเลยใช่มั้ยครับ เหลือแค่ 30 บรรทัดเท่านั้นเอง อย่าลืมรันเทสอีกครั้ง เพื่อความมั่นใจ

ทีนี้กลับมาดูที่ Test case เราจะพบว่ามันมีความซ้ำซ้อนอยู่เช่นกัน

ลองดูดีๆเราจะพบว่า สามารถเขียนออกมาเป็นตารางได้

ฺฺNumberButton id
1Button44
2Button49

ซึ่งเราสามารถเอาไปใช้ใน Robot framework ได้เช่นกัน แต่ต้องปรับเปลี่ยนอะไรสักหน่อย

ก็คือเพิ่ม Keyword ที่เป็น Test rule เข้าไป แล้วก็เพิ่ม Clear Answer เพราะว่า ข้อมูลในตารางทั้งหมดถือเป็น Test case อันเดียวครับ (โปรแกรมจะไม่ถูกปิดจนกว่าจะจบแต่ละ Test case)
จะเห็นว่า Test case อันที่ 2 ไม่จำเป็นอีกแล้ว ลบทิ้งไปครับ
แล้วลองทำการทดสอบดูอีกครั้ง ยังผ่านเหมือนเดิม แต่จะเหลือแค่ Case เดียว

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


อย่าลืมแก้กลับให้ถูกต้องด้วยนะครับ

มาดูปุ่มที่เหลือกันต่อ สบายแล้วทีนี้ แค่เพิ่มข้อมูลเข้าไปเท่านั้นเอง ลองเอา Au3Info ไปจับกับปุ่มตัวเลขที่เหลือดูเลยครับ

ตอนหน้ามาลองเขียน Test ที่มันซับซ้อนมากขึ้นครับ อย่างเช่นการบวกเลข ลองไปนั่งนึกหรือลองเขียนดูเลยก็ได้ครับ

ก่อนไป ขอบอกไว้ก่อนว่า ทำไปก่อนจนมองเห็นความซ้ำซ้อน(หรือ Pattern)แล้วค่อยหาทางกำจัดนะครับ ถ้าพยายามป้องกันตั้งแต่แรก เราอาจจะเหนื่อยโดยไม่จำเป็น หรือหลงป่าเขารกเข้าพงไปเลยได้ นี่เตือนในฐานะเป็นผู้ประสบภัยมาก่อนนะครับ(ทุกวันนี้ก็ยังหลงเข้าไปอยู่เรื่อยๆ) อิอิ

No comments:

Post a Comment