มาทำความรู้จักกับ 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 ดังนี้

เพียงเท่านี้ก็สามารถใช้งานได้แล้วนะ
ลองใช้งานกันดู เป็นอีกเครื่องมือที่น่าสนใจ
เครื่องมือนั้นสำคัญ แต่ที่สำคัญกว่าคือ การทำงานเป็นทีม