PlusMagi's Blog By Pitt Phunsanit Backend การทำ UAT Acceptance Criteria: การเขียนเงื่อนไขการรับรองระบบด้วย Gherkin Syntax (Given-When-Then)

การทำ UAT Acceptance Criteria: การเขียนเงื่อนไขการรับรองระบบด้วย Gherkin Syntax (Given-When-Then)

ในโลกของการพัฒนาซอฟต์แวร์ที่ความต้องการทางธุรกิจ (Business Requirements) มีการเปลี่ยนแปลงอย่างรวดเร็ว การรับรองว่าระบบที่สร้างขึ้นมานั้นตอบโจทย์ผู้ใช้งานจริงได้อย่างสมบูรณ์จึงเป็นหัวใจสำคัญของโครงการใดๆ ความคลุมเครือของข้อกำหนด (Vague Requirements) คือสาเหตุหลักที่ทำให้เกิดการแก้ไขงานซ้ำซ้อน (Rework) และส่งผลให้เกิดความล่าช้าในการปล่อยผลิตภัณฑ์สู่ตลาด

การมีชุดเกณฑ์การยอมรับ (Acceptance Criteria) ที่ชัดเจนและเป็นรูปธรรมตั้งแต่ต้นจึงไม่ใช่แค่ทางเลือก แต่คือมาตรฐานที่ทีมพัฒนาคุณภาพ (QA) และนักวิเคราะห์ธุรกิจ (BA) ต้องยึดถือ แนวคิดที่เข้ามาช่วยแก้ปัญหานี้คือ Behavior Driven Development (BDD) ซึ่งใช้ภาษาเฉพาะที่เรียกว่า Gherkin Syntax


Gherkin Syntax คืออะไร และทำไมต้องใช้?

Gherkin เป็นภาษาที่ถูกออกแบบมาเพื่อเปลี่ยนข้อกำหนดทางธุรกิจที่คลุมเครือให้กลายเป็นชุดพฤติกรรม (Behavior) ที่สามารถทดสอบได้จริง โดยมีโครงสร้างหลักคือ Given-When-Then เป้าหมายหลักคือการสร้าง Ubiquitous Language หรือภาษาที่ทุกคนในทีม ตั้งแต่ผู้ใช้งานทางธุรกิจ, นักวิเคราะห์, ไปจนถึงนักพัฒนา สามารถเข้าใจตรงกันได้

โครงสร้างหลัก: Given-When-Then

การทำความเข้าใจองค์ประกอบทั้งสามส่วนนี้มีความสำคัญอย่างยิ่งในการเขียน Acceptance Criteria ที่สมบูรณ์:

  1. Given (บริบทเริ่มต้น): คือการกำหนดบริบท (Context) หรือสถานะเริ่มต้นของระบบก่อนที่จะเกิดเหตุการณ์ใดๆ ต้องระบุให้ชัดเจนว่าระบบอยู่ในสภาวะใด เช่น ผู้ใช้ต้องล็อกอินแล้ว, หรือข้อมูลในตารางมีค่าเริ่มต้นเท่าไหร่
  2. When (การกระทำ): คือการกระทำ (Action) ที่ผู้ใช้งานหรือระบบดำเนินการ เป็นการกระตุ้นให้เกิดพฤติกรรมที่ต้องการทดสอบ เช่น การกรอกฟอร์ม, การคลิกปุ่ม, หรือการเรียกใช้ API
  3. Then (ผลลัพธ์ที่คาดหวัง): คือผลลัพธ์ (Expected Outcome) ที่ต้องเกิดขึ้นหลังจากการกระทำนั้นๆ ผลลัพธ์ต้องเป็นสิ่งที่วัดผลได้ (Measurable) และเป็นข้อเท็จจริง ไม่ใช่ความรู้สึก เช่น ระบบควรแสดงข้อความผิดพลาดที่ระบุสาเหตุชัดเจน

ตัวอย่างการเขียน UAT Acceptance Criteria (Context: PostgreSQL Data Validation)

สมมติว่าเรากำลังพัฒนาฟังก์ชันที่ต้องตรวจสอบความถูกต้องของข้อมูล (Data Validation) ในระบบที่ใช้ PostgreSQL โดยเฉพาะการตรวจสอบว่า User ID ที่ป้อนเข้ามานั้นต้องเป็นค่าบวกและไม่ซ้ำกัน เราสามารถเขียน Scenario ได้ดังนี้:

HTML

Feature: User ID Validation for System Access</code><br><br><code>  Scenario: Successful validation of a unique positive User ID</code><br><code>    Given a user with the role 'Admin' exists in the 'users' table</code><br><code>    And the 'user_id' column is set to a unique positive integer</code><br><code>    When the system attempts to create a new user with a valid ID (e.g., 1001)</code><br><code>    Then the system should successfully insert the record into the 'users' table</code><br><br><code>  Scenario: Validation fails when ID is negative</code><br><code>    Given the system requires 'user_id' to be non-negative</code><br><code>    When a user attempts to register with 'user_id' = -5</code><br><code>    Then the system should return an error message: 'User ID must be positive.'

สรุป: ประโยชน์ของการใช้ Gherkin ใน UAT

การใช้ Gherkin Syntax ไม่ได้เป็นเพียงแค่รูปแบบการเขียนเท่านั้น แต่เป็นการเปลี่ยนแปลงกระบวนทัศน์ (Paradigm Shift) ในการสื่อสาร ทำให้ทุกคนในทีมมีภาษาเดียวกันในการพูดถึง ‘สิ่งที่ระบบควรทำ’ (What the system should do) การเขียน Acceptance Criteria ด้วย Given-When-Then อย่างเป็นระบบ จะช่วยให้ทีมสามารถสร้าง Test Case ที่ครอบคลุมทุกมุมมอง ลดความเข้าใจผิด และทำให้กระบวนการ UAT มีประสิทธิภาพสูงสุด นำไปสู่การส่งมอบผลิตภัณฑ์ที่ตรงตามความต้องการทางธุรกิจอย่างแท้จริง