สรุปบทที่ 2 เรื่อง Smoking User Interface Test จากหนังสือ The Way of the Web Tester

บทความนี้จะนำเสนอในส่วนของ Smoking User Interface Test หลายคนพอมองจากหัวข้อก็คงจะงงๆ ว่ามันเกี่ยวกับอะไร แต่บางส่วนก็คงเคยเห็นผ่านๆ ตามาบ้าง เราลองมาวิเคราะห์ความหมายจากหัวข้อก่อนว่าบทความนี้ต้องการจะสื่อถึงอะไร แต่คำว่า Smoking ในหัวข้อไม่น่าจะเกี่ยวอะไรกับการสูบบุหรี่นะ น่าจะมีความหมายไปในทางที่เกี่ยวกับควันมากกว่า “Smoking User Interface Test” จึงมีความหมายประมาณว่า การทดสอบในส่วนของการติดต่อกับผู้ใช้ในรูปแบบควัน แต่จากหัวข้อก็ยังไม่สามารถอธิบายอะไรได้ชัดเจน งั้นส่วนแรกมาดูในส่วนของ User Interface หรือ UI ที่เห็นบ่อยๆนั่นเอง UI คืออะไร…?

UI คือส่วนของการเชื่อมต่อการใช้งานของผู้ใช้ ถ้าเป็นในส่วนของซอฟแวร์ก็คือหน้าจอที่ติดต่อกับผู้ใช้นั่นเอง(ในบทที่ 1 จะอธิบายรายละเอียดของสิ่งที่อยู่ในสามเหลี่ยมไว้หมดแล้ว) ซึ่งก็จะมีคำถามตามมาอีกคือ เราจะทำ UI Test ไปทำไม? แล้ว UI Test เนี่ยต้องทำอย่างไร?


=> คำถามแรกเลย เราจะทำ UI Test ไปทำไม?

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

เริ่มต้นการแก้ปัญหาด้วย UI Test การที่เราจะทำ UI Test ได้ดีนั้นเราต้องมองภาพรวมของระบบออก ซึ่งก็จะมีในส่วนที่เกี่ยวข้องกับ Integration Test ด้วย ต้องมองบางส่วนของการทำงานเชื่อมต่อกันของส่วนต่างๆ ออกและสามารถมั่นใจได้ว่าการทำงานของระบบในแต่ละส่วนที่เชื่อมต่อกันทำงานได้ปกติ นี่แหละคือ Smoke Test

Smoke Test คือการตรวจสอบพื้นฐานของระบบ และช่วยให้มั่นใจได้ว่า

  • Applications ทำงานได้อย่างถูกต้องหลังจาก Deploy
  • องค์ประกอบโดยรวมถูกต้องตามที่กำหนดไว้
  • แต่ละส่วนของระบบสามารถเชื่อมต่อและเรียกใช้กันได้อย่างถูกต้อง

=> คำถามต่อมาคือ UI Test ต้องทำอย่างไร?

ในส่วนแรกของ UI Test เราต้องรู้การทำงานในส่วนนั้นๆอย่างชัดเจนโดยจะออกมาในรูปแบบของ Test Step ตัวอย่างเช่น

หน้าจอแสดงฟอร์ม Log In
Test Step การเข้าสู่ระบบ

สุดท้ายของเนื้อหาในส่วนนี้คือการดึง element ของส่วนต่างๆ เพื่อมาประกอบการทำ UI Test โดยเราสามารถอ้างอิงได้ทั้ง HTML และ CSS โดยเราสามารถอ้างอิงได้จาก tag ต่างๆ ไปจนถึง element ที่เราต้องการ

HTML
CSS

อีกแบบคือการอ้างอิงจาก ID ของแต่ละ element โดยรูปแบบนี้อาจจะไม่ unique เท่ากับการอ้างจาก tag ต่างๆ แต่ง่ายต่อการแก้ไขกว่า จึงเป็นรูปแบบที่นิยมใช้ในการทดสอบ โดย ID จะอยู่ใน tag ต่างๆดังรูป


มีเนื้อหาอยู่ช่วงหนึ่งของหนังสือเล่มนี้ที่ว่า “Say No To Record/Playback” ซึ่งหลายคนอาจมองว่า ถ้าเราทดสอบแล้วห้ามบันทึกหรือทำซ้ำมันถูกต้องแล้วใช่มั้ย แต่ในเนื้อความของส่วนนี้ความหมายที่ต้องการจะสื่อให้ผู้อ่านจริงๆ นั่นคือ การทดสอบมีหลายรูปแบบ การ Record/Playback คือรูปแบบการทดสอบหนึ่ง โดยนักทดสอบจะต้องจำลองตนเองเป็นผู้ใช้ และทดสอบการทำงานต่างๆ พร้อมกับบันทึกไว้เพื่อที่จะใช้ทดสอบในครั้งต่อไป จึงไม่ควรที่จะทำแบบนั้นเพราะมันจะทำให้การทดสอบมีความบอบบางมาก ถ้าผู้พัฒนาแก้ไขตำแหน่งของข้อมูลเพียงนิดเดียวการทดสอบที่บันทึกไว้ก็พังแล้ว โดยมีข้อความที่สรุปตอนท้ายว่า

“ ถ้าเราเลือกที่จะใช้ Record/Playback เราจะได้แค่โปรแกรมสำเร็จรูปที่พังง่าย แต่ถ้าเราเขียนโค้ดขึ้นมาเพื่อทดสอบเราจะได้โปรแกรมการทดสอบขึ้นมาเองและมีความยืดหยุ่นกว่ามาก ”

=> สรุปสุดท้ายของบทความนี้ ได้แก่

  • UI Test เหมาะสำหรับการทดสอบครั้งสุดท้าย(Smoke Test)
  • การที่เราเขียน script สามารถบันทึกไว้และสั่งให้ทำงานซ้ำๆได้
  • การจะหาตำแหน่งของ element มีหลายแบบเราควรเลือกใช้ตามสถานการณ์

Reference : https://pragprog.com/book/jrtest/the-way-of-the-web-tester