มาทำความรู้จักกับ Gauge เป็น test automation framework
สำหรับการเขียน acceptance test ขึ้นมาในรูปแบบของ Markdown
ช่วยทำให้สามารถเขียนชุดการทดสอบในรูปแบบเอกสารสาร (Documentation)
ตอบโจทย์เรื่องของ Living documentation อย่างมาก
น่าจะเป็นอีกทางเลือกหนึ่งที่น่าสนใจ
มาเริ่มกันเลย
ก่อนจะเริ่มเขียนกันนั้น ต้องเข้าใจโครงสร้างการทำงานก่อน
ชุดการทดสอบด้วย Gauge ประกอบไปด้วย 2 ส่วนหลัก คือ
- ชุดการทดสอบที่เขียนในรูปแบบ Markdown เรียกว่า Spec หรือ Specification ซึ่งมีรูปแบบตามที่กำหนด
- Steps หรือ Step definition ใช้สำหรับการเขียน code สำหรับทดสอบระบบงานอีกที
ในส่วนของ Steps นั้น ถ้าใครเคยเขียนพวก BDD
เช่น Cucumber จะคุ้นเคยอย่างมาก
ดังนั้น Gauge สามารถทดสอบระบบในรูปแบบใด ๆ ก็ได้
ทั้ง Web, Mobile และ API เป็นต้น
เนื่องจากการทดสอบจริง ๆ จะอยู่ในส่วนของ Steps
ซึ่งเราก็ต้องไปหา library/framework/tool มาใช้นั่นเอง
มาติดตั้ง Gauge กัน
Gauge นั้นพัฒนาด้วยภาษา Go
แต่ในการเขียน code ส่วนของ Steps นั้น
จะใช้ได้หลายภาษา program
ทั้ง Go, C#, Java, JavaScript, Python และ Ruby
รวมไปถึงการ config Editor และ IDE อีกด้วย
โดยในเอกสารจัดว่าดีมาก ๆ มีให้เลือกเลย
มันดีต่อคนเริ่มต้นใหม่มาก ๆ ดังนี้เลย
ยกตัวอย่างติดตั้งบน Mac OS ด้วย Home brew ดังนี้
จากนั้นทำการติดตั้ง plugin ต่าง ๆ ที่ต้องการใช้งานทั้ง
- Test runner ในภาษา program ที่ต้องการ
- IDE Plugin
- Report
เมื่อติดตั้งเรียบร้อย ก็ทำการเขียน Specs และ Steps ดีกว่า
ทำการสร้าง project ขึ้นมาก่อน
ตัวอย่างสร้าง project ด้วยภาษา JavaScript
$gauge init js
ได้ผลดังนี้
จากนั้นลองเขียน Specs ง่าย ๆ กันหน่อย
ซึ่งเขียนในรูปแบบ Markdown
สามารถสร้างไฟล์ที่มีนามสกุล .md หรือ .spec ก็ได้
ซึ่งอยู่ใน folder specs ดังนี้
คำอธิบาย
- ขึ้นต้นด้วย # คือ Specification heading เป็นส่วนการอธิบายชุดการทดสอบทั้งหมดนั่นเอง ในแต่ละไฟล์จะมีเพียงอันเดียวเท่านั้น
- ขึ้นต้นด้วย ## คือ Scenario สำหรับการประกาศชื่อการทดสอบว่า จะทดสอบอะไร มี flow อย่างไรบ้าง แน่นอนว่ามีได้มากกว่า 1 scenario แน่นอน
- ในแต่ละ Scenario จะมีขั้นตอนการทำงาน ขึ้นต้นด้วย * เรียกว่า Step
- ในแต่ละ Step สามารถส่งใส่ parameter หรือข้อมูลได้ด้วยการใช้งาน “”
ส่วนความสามารถอื่น ๆ
ก็มีทั้ง การใส่ tag เพื่อกำหนดกลุ่มของการทดสอบ
นำไปใช้งานร่วมกับการ run แบบ parallel ได้ดีมาก ๆ
การทดสอบแบบ data-driven นั่นคือใส่ข้อมูลเยอะ ๆ ในรูปแบบ table ได้
ส่วน comment คือข้อความใด ๆ ที่ไม่มีสัญลักษ์ต่าง ๆ ที่อธิบายมานะ
นั่นคือ ส่วนของการอธิบายการทดสอบนั่นเอง
ยังไม่พอ เมื่อเขียน Spec เรียบร้อยแล้ว ยังไม่สามารถทำงานได้
จะต้องเขียน Step definition ด้วยภาษา program ที่ต้องการ
จากตัวอย่างจะเขียนด้วยภาษา JavaScript Code
ส่วนนี้จะอยู่ในไฟล์ tests/step_*.js ดังนี้
จะเห็นได้ว่า เป็น code ที่ mapping Step จากไฟล์ Spec
ในรูปแบบ Markdown นั่นเอง
แน่นอนว่า ต้องมีความสามารถในการเขียน code หน่อยนะ
ดังนั้นจะทำการทดสอบแบบอัตโนมัติแล้ว จะหนีการ coding ไม่ได้เลย !!
มาลอง Run Spec ที่เขียนกันดีกว่า
ต้องติดตั้ง plugin ชื่อว่า html-report ด้วยนะ
ได้ผลรายงานในรูปแบบ HTML ดังนี้
เพียงเท่านี้ก็สามารถใช้งานได้แล้วนะ
ลองใช้งานกันดู เป็นอีกเครื่องมือที่น่าสนใจ
เครื่องมือนั้นสำคัญ แต่ที่สำคัญกว่าคือ การทำงานเป็นทีม