คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
ปกติแล้วค่อนข้างจะเป็นการยากครับ ที่จะเทส cross browser โดยเขียนเทสแค่ครั้งเดียว เพราะแต่ละ browser แปลผลแท๊ก HTML ต่างกันบ้างเล็กน้อย ผลลัพธ์จึงทำให้โปรแกรมเมอร์เขียนเพจออกมาให้สำหรับแต่ละ browser แตกต่างกัน แต่โดยพื้นฐานแล้วก็คงพยายามทำให้ออกมาหน้าตาเหมือนกัน แม้บ้างครั้งอาจเป็นไปไม่ได้เพราะแท๊ก HTML บางแท๊กไม่สนับสนุนในบาง browser ครับ
สำหรับ tool ที่ใช้ในการเทส ที่ผมรู้จักก็จะแบ่งเป็น
1. tool ที่เทสโดยการเปรียบเทียบภาพบนหน้าจอ เช่น Sikuli
2. tool ที่เทสโดยการตรวจเช็คความถูกต้องของแท๊ก HTML เช่น Serenium
สำหรับการเขียนเทส แบบแรกจะให้เราใช้วิธี capture ภาพหน้าจอ หรือบางส่วนของหน้าจอ จากนั้นก็เขียน script (อย่าง Sikuli จะเป็น python) เพื่อรัน System Under Test (SUT) และรอตรวจสอบว่าหน้าจอเจอภาพที่เราคาดหวังปรากฎอยู่หรือไม่ โปรแกรมจะใช้ image processing เปรียบเทียบภาพบนหน้าจอ โดยสามารถกำหนด threshold ได้ว่าภาพจะต้องเหมือนแค่ไหนถึงจะเรียกว่าเจอ ข้อดีคือง่าย ตรงไปตรงมา ไม่ซับซ้อน แต่ก็มีปัญหาเรื่อง fault positive/fault negative ได้เหมือนกัน เพราะบางทีภาพเปลี่ยนนิดหน่อย ซึ่งคาดหวังว่าเป็นบั๊ก แต่โปรแกรมกลับตรวจไม่เจอ ปัญหาอีกเรื่องก็คือการดูแลจัดการ (maintenance) test case หลังจากที่เราเขียนเสร็จ หากเรามีเป็นร้อยเป็นพันเทส แล้วอนาคตโปรแกรมเปลี่ยนหน้าตาไป อาจเนื่องมาจากมี requirement ต้องเปลี่ยน การจะต้องมานั่ง capture รูปใหม่ทั้งหมดนั้นเป็นเรื่องที่ไม่น่าสนุกเลยแน่นอน
ส่วนแบบที่สอง จะเป็นการตรวจเช็คในเชิงของ HTML markup โดยอย่าง Serenium ก็จะมี web driver สำหรับแต่ละ browser และมี API ให้สำหรับแต่ละ programming language ซึ่งสามารถนำไปใช้ร่วมกับพวก unit test framework ได้เลย การรันเทสจึงเหมือนกับการรัน unit test ปกติธรรมดาครับ
สำหรับ tool ที่ใช้ในการเทส ที่ผมรู้จักก็จะแบ่งเป็น
1. tool ที่เทสโดยการเปรียบเทียบภาพบนหน้าจอ เช่น Sikuli
2. tool ที่เทสโดยการตรวจเช็คความถูกต้องของแท๊ก HTML เช่น Serenium
สำหรับการเขียนเทส แบบแรกจะให้เราใช้วิธี capture ภาพหน้าจอ หรือบางส่วนของหน้าจอ จากนั้นก็เขียน script (อย่าง Sikuli จะเป็น python) เพื่อรัน System Under Test (SUT) และรอตรวจสอบว่าหน้าจอเจอภาพที่เราคาดหวังปรากฎอยู่หรือไม่ โปรแกรมจะใช้ image processing เปรียบเทียบภาพบนหน้าจอ โดยสามารถกำหนด threshold ได้ว่าภาพจะต้องเหมือนแค่ไหนถึงจะเรียกว่าเจอ ข้อดีคือง่าย ตรงไปตรงมา ไม่ซับซ้อน แต่ก็มีปัญหาเรื่อง fault positive/fault negative ได้เหมือนกัน เพราะบางทีภาพเปลี่ยนนิดหน่อย ซึ่งคาดหวังว่าเป็นบั๊ก แต่โปรแกรมกลับตรวจไม่เจอ ปัญหาอีกเรื่องก็คือการดูแลจัดการ (maintenance) test case หลังจากที่เราเขียนเสร็จ หากเรามีเป็นร้อยเป็นพันเทส แล้วอนาคตโปรแกรมเปลี่ยนหน้าตาไป อาจเนื่องมาจากมี requirement ต้องเปลี่ยน การจะต้องมานั่ง capture รูปใหม่ทั้งหมดนั้นเป็นเรื่องที่ไม่น่าสนุกเลยแน่นอน
ส่วนแบบที่สอง จะเป็นการตรวจเช็คในเชิงของ HTML markup โดยอย่าง Serenium ก็จะมี web driver สำหรับแต่ละ browser และมี API ให้สำหรับแต่ละ programming language ซึ่งสามารถนำไปใช้ร่วมกับพวก unit test framework ได้เลย การรันเทสจึงเหมือนกับการรัน unit test ปกติธรรมดาครับ
แสดงความคิดเห็น
อยากขอคำแนะนำเรื่อง test tool ค่ะ
ที่มัน test ได้ทุก browser เลย โดยไม่ต้องใช้คนเทส เน้นเรื่อง combination test
แล้วก็ browser บน PC ด้วยค่ะ chorme, firefox, ie, safari ...