การทำ Automated Test นั้น ส่วนสำคัญส่วนนึงที่จะส่งผลให้ทีมทำ Automated test ได้สำเร็จก็คือ การที่เรามี application ที่ถูกออกแบบมาให้เทสได้ง่ายๆครับ
แล้วแบบไหนล่ะ ถึงจะเทสได้ง่าย?
บทความนี้จะขอยกตัวอย่างจากการทดสอบ Web Application เป็นหลักนะครับ
- Locator ต้องง่ายต่อการใช้งาน และไม่เปลี่ยนแปลงบ่อยๆ
การที่ Test Script จะสามารถสั่งให้ Web Browser พิมพ์ข้อมูลลง Textbox หรือกดปุ่มต่างๆได้นั้น สิ่งที่เป็นตัวบอกตำแหน่งของปุ่มที่เราจะกด จะเรียกว่า Web Element Locator เรียกย่อๆว่า Locator
ซึ่ง Locator เองมีหลากหลายรูปแบบโดยหลักๆที่ใช้กันมีดังนี้- Id
<a id="LinkToGoogle" href="https://www.google.com">Goto Google</a>
- Name
<input type="text" name="password">
- Link text
<a href="https://www.google.com">Goto Google</a>
- CSS Selector & Xpath
div > a.ProductItem or //div/a[0]
โดยการเลือกใช้ประเภทของ Locator จะเป็นไปตามนี้ Id > Name > Link text > Css & Xpath ซึ่งมันก็จะเป็นเรื่องที่ลำบากมากถ้าทั้งเพจไม่มี Id หรือ Name เลย การใช้แต่ Css & Xpath จะมีข้อเสียที่เมื่อเพิ่มหรือลด Element อะไรจากหน้าเว็บมักจะส่งผลกระทบต่อ Test Script เสมอ แตกต่างจาก Id หรือ Name
- Id
- ชื่อ Locator ควรเข้าใจได้ง่าย และบอกถึงจุดประสงค์การใช้งาน
ลองนึกภาพที่ Text Field ที่ให้กรอก username มี Id ว่า a0001 และ password text field มี Id b0002 เวลา QA เอาไปใช้เขียน test script ถึงครั้งแรกจะเขียนได้ง่ายแต่เวลาที่ต้อง Maintain จะทำให้สับสนมากเพราะอ่าน Id แล้วเราแทบเดาไม่ได้เลยว่า a0001 นี่มันคืออะไรกันนะจะง่ายกว่าไหมถ้าเราตั้ง Id หรือ Name ให้สื่อถึงจุดประสงค์ของการทำงาน ไม่เช่นนั้นจะไม่ต่างอะไรกับถ้าเราต้องไปเขียน code ต่อจากคนอื่นแล้วเจอตัวแปล int a, int b string j เต็มไปหมด แน่นอนเราก็คงไม่พอใจเช่นกัน - Form Input ควรใช้ name ที่สื่อเพื่อให้ง่ายต่อความเข้าใจ
- หากไม่สามารถใส่ Id หรือ Locator ที่เฉพาะเจาะจงได้ ควรมี Locator อ้างอิงที่ชัดเจน เช่น
div#productItem > a
- ทีมใช้มาตรฐานเดียวกัน ในการแสดง Error message ต่างๆ
- ถ้าจะมีการเปลี่ยนแปลง Id หรือ name ควรแจ้งทีม QA เพื่อให้เตรียมพร้อมสำหรับการแก้ไข
แล้วถ้าไม่เขียนให้เทสง่ายๆล่ะ จะเป็นยังไงนะ?
Test Script จะ maintain ยากมาก เพราะอาจจะไม่มี Id ให้ใช้งานเลยทำให้เมื่อ Developer มีการแก้ไขหน้า UI เล็กๆน้อยก็อาจทำให้ Test Script Fail ไปหลายข้อ สุดท้ายพอพังบ่อยๆจนทำให้ไม่มีเวลาไปแก้ไขได้ สุดท้าย Test Script ที่เสียก็จะถูกปล่อยไว้อย่างนั้น และก็จะบานปลายไปจนถึงการเลิกใช้งานไปในที่สุด
เมื่อเขียนโค้ดเสร็จแล้ว ลองดูว่าถ้าเป็นเราต้องเทสเองจะเทสยังไง ถ้าดูแล้วน่าจะยากอาจลองปรับนิดๆหน่อยๆ ก็ช่วยให้อีกหลายคนทำงานได้ง่ายขึ้นแล้วครับ