ภาษา Gherkin: ไวยากรณ์ รูปแบบ และตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Gherkin เป็นภาษาที่เข้าใจง่ายสำหรับธุรกิจ ซึ่งอธิบายพฤติกรรมของซอฟต์แวร์โดยไม่ต้องลงรายละเอียดการใช้งาน โดยใช้คำหลัก Given, When และ Then ในการกำหนดเงื่อนไข Cucumber สถานการณ์ทดสอบที่อธิบายด้วยภาษาง่ายๆ ทำหน้าที่เป็นเอกสารอ้างอิงที่มีชีวิตและเป็นโครงสร้างพื้นฐานของการทดสอบ BDD แบบอัตโนมัติ

  • 📝 ภาษาที่เข้าใจง่าย: Gherkin อธิบายพฤติกรรมเพื่อให้ผู้ที่ไม่ใช่โปรแกรมเมอร์สามารถอ่านและเขียนการทดสอบได้
  • 🥒 Cucumber: Cucumber อ่านไฟล์ .feature และดำเนินการขั้นตอน Gherkin เป็นการทดสอบ
  • 🔑 Given-When-Then: Given กำหนดบริบท, When กระตุ้นการกระทำ, Then ยืนยันผลลัพธ์
  • 🧱 คำสำคัญ: โครงสร้างของแต่ละสถานการณ์ประกอบด้วย Feature, Background, Scenario และ But
  • ปฏิบัติที่ดีที่สุด: ให้แต่ละสถานการณ์แยกจากกัน และอธิบายว่าเกิดอะไรขึ้น ไม่ใช่ทำอย่างไร
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI ร่างสถานการณ์ Given-When-Then จากข้อกำหนดพื้นฐาน

ภาษาแตงกวาใน Cucumber

ภาษา Gherkin คืออะไร?

แตงเล็ก ๆ หนึ่งมีสีเหลือง เป็นภาษาที่เข้าใจง่ายในเชิงธุรกิจ ช่วยให้คุณอธิบายพฤติกรรมทางธุรกิจได้โดยไม่ต้องลงรายละเอียดการใช้งาน เป็นภาษาเฉพาะโดเมนสำหรับการกำหนดการทดสอบใน Cucumber รูปแบบนี้ใช้ภาษาที่เข้าใจง่ายในการอธิบายกรณีการใช้งาน และช่วยให้ผู้ใช้สามารถตัดรายละเอียดเชิงตรรกะออกจากการทดสอบพฤติกรรมได้

ข้อความใน Gherkin ทำหน้าที่เป็นทั้งเอกสารประกอบและโครงร่างสำหรับการทดสอบอัตโนมัติของคุณ รูปแบบ Gherkin นั้นอิงตามไวยากรณ์ TreeTop ซึ่งมีอยู่ในมากกว่า 37 ภาษา ดังนั้นคุณจึงสามารถเขียน Gherkin ได้ในภาษาพูดมากกว่า 37 ภาษา สคริปต์นี้มีวัตถุประสงค์หลักสองประการ คือ ใช้บันทึกสถานการณ์การใช้งานของผู้ใช้ และเป็นพื้นฐานสำหรับการเขียนการทดสอบ BDD แบบอัตโนมัติ

ทำไมต้องเกอร์คิน?

หากไม่มีรูปแบบภาษาที่เข้าใจง่ายและใช้ร่วมกันได้ ทีมธุรกิจและทีมเทคนิคจะอธิบายข้อกำหนดแตกต่างกัน ซึ่งก่อให้เกิดความเข้าใจผิด Gherkin ช่วยให้ทุกคนมีคำศัพท์ที่มีโครงสร้างเดียวที่อ่านง่ายเหมือนภาษาอังกฤษทั่วไป แต่สามารถแปลงเป็นชุดทดสอบที่สามารถดำเนินการได้โดยตรง

ไวยากรณ์ Gherkin

Gherkin เป็นภาษาที่เน้นการเขียนตามบรรทัด เช่นเดียวกับ YAML และ Pythonแต่ละบรรทัดเรียกว่าขั้นตอนและเริ่มต้นด้วยคำหลัก ใช้แท็บหรือช่องว่างสำหรับการเยื้อง สามารถเพิ่มความคิดเห็นได้ทุกที่ แต่ต้องเริ่มต้นด้วยเครื่องหมาย # ตัวแปลภาษาจะอ่านแต่ละบรรทัดหลังจากลบคำหลักของ Gherkin เช่น Given, When และ Then ออกแล้ว

Feature: Title of the Scenario
  Given [Preconditions or Initial Context]
  When [Event or Trigger]
  Then [Expected output]

ไฟล์เอกสาร Gherkin มีนามสกุล .feature และเป็นเพียงไฟล์ทดสอบที่มีนามสกุลที่สื่อความหมายเท่านั้น Cucumber อ่านเอกสาร Gherkin และดำเนินการทดสอบเพื่อตรวจสอบว่าซอฟต์แวร์ทำงานตามที่ไวยากรณ์ Gherkin อธิบายไว้

คำศัพท์สำคัญที่ใช้ในร้าน Gherkin

คำหลักสำคัญได้แก่ คุณลักษณะ, พื้นหลัง, สถานการณ์, กำหนดให้, เมื่อใด, จากนั้น, และ, แต่ และโครงร่างสถานการณ์ Cucumber ไม่มีกฎการตั้งชื่อที่เคร่งครัด แต่การมีหลักเกณฑ์การตั้งชื่อที่ชัดเจนจะช่วยได้

คุณสมบัติ (Feature)

ไฟล์ควรมีนามสกุล .feature และแต่ละไฟล์ฟีเจอร์ควรอธิบายเพียงฟีเจอร์เดียวเท่านั้น คำหลัก Feature ขึ้นต้นด้วย คุณสมบัติ: ตามด้วยเว้นวรรคและชื่อฟีเจอร์

สถานการณ์

ไฟล์ฟีเจอร์แต่ละไฟล์อาจมีหลายสถานการณ์ และแต่ละสถานการณ์เริ่มต้นด้วย สถานการณ์สมมติ: ตามด้วยชื่อสถานการณ์

พื้นหลัง

คีย์เวิร์ด Background เพิ่มบริบทให้กับสถานการณ์ โดยอาจประกอบด้วยขั้นตอนที่ใช้ร่วมกันในทุกสถานการณ์ ความแตกต่างคือขั้นตอนเหล่านั้นจะทำงานก่อนสถานการณ์แต่ละครั้ง

ให้

คำหลัก Given จะกำหนดสถานะที่ทราบล่วงหน้าให้กับระบบก่อนที่ผู้ใช้จะเริ่มโต้ตอบกับระบบ โดยจะกำหนดเงื่อนไขหรือบริบทเบื้องต้น:

Given I am on "/."

เมื่อ

คำหลัก "When" กำหนดการกระทำที่ผู้ใช้ดำเนินการ:

When I perform "Sign In."

แล้วก็

คำว่า "Then" กำหนดผลลัพธ์ที่สังเกตได้หลังจากดำเนินการในขั้นตอน "When" คุณควรตรวจสอบเฉพาะการเปลี่ยนแปลงที่สังเกตเห็นได้เท่านั้น:

Then I should see "Welcome Tom."

และ&แต่

คุณอาจมีขั้นตอน Given, When หรือ Then หลายขั้นตอน คำหลัก And และ But จะเพิ่มขั้นตอนพิเศษเพื่อให้อ่านง่ายขึ้น:

And I enter "EmailAddress" with "tomjohn@gmail.com."
But I should see "Welcome Tom."

Given, When, Then, And และ But ล้วนเป็นขั้นตอนการทดสอบ ตัวแปลภาษาจะไม่แสดงข้อผิดพลาดหากคุณสลับคำเหล่านี้ แต่สถานการณ์จะอ่านไม่เข้าใจ ดังนั้นควรใช้คำหลักแต่ละคำตามวัตถุประสงค์ที่กำหนดไว้

ตัวอย่างผักชีฝรั่ง

1 ตัวอย่าง: ฟังก์ชันการเข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคมออนไลน์

Feature: Login functionality of a social networking site
  Given I am a registered user
  When I enter my username
  And I enter my password
  Then I should be redirected to the home page

Gherkin จะวิเคราะห์แต่ละขั้นตอนที่เขียนไว้ในไฟล์คุณลักษณะ และขั้นตอนในไฟล์คุณลักษณะจะต้องตรงกับขั้นตอนในไฟล์คำจำกัดความขั้นตอน

2 ตัวอย่าง: สถานการณ์การตรวจสอบสิทธิ์ผู้ใช้โดยมีพื้นหลังเป็นตัวช่วย

Feature: User Authentication

Background:
  Given the user is already registered on the website

Scenario: Successful login
  Given the user is on the login page
  When the user inputs the correct email address
  And the user inputs the correct password
  And the user clicks the Login button
  Then the user should be authenticated
  And the user should be redirected to their dashboard

แนวปฏิบัติที่ดีที่สุดในการใช้แตงกวาดอง

  • แต่ละสถานการณ์ควรดำเนินการแยกกันและเป็นอิสระจากกัน
  • ทุกฟังก์ชันควรสามารถเรียกใช้งานได้ด้วยตัวเอง
  • ควรแสดงข้อมูลขั้นตอนแยกต่างหาก
  • เชื่อมโยงสถานการณ์ของคุณเข้ากับข้อกำหนดและความต้องการของคุณ track สถานการณ์ใดบ้างที่ตรงกับข้อกำหนดแต่ละข้อ
  • สร้างขั้นตอนแบบโมดูลาร์ที่เข้าใจง่าย และผสานรวมสถานการณ์ทั่วไปเข้าด้วยกัน
  • อธิบายว่าระบบทำอะไร ไม่ใช่ว่ามันทำงานอย่างไร

ข้อดีของเกอร์คิน

  • Gherkin นั้นเรียบง่ายพอที่คนที่ไม่ใช่โปรแกรมเมอร์จะเข้าใจได้
  • โปรแกรมเมอร์สามารถใช้มันเป็นพื้นฐานที่มั่นคงในการเริ่มต้นการทดสอบของพวกเขาได้
  • มันทำให้เรื่องราวของผู้ใช้เข้าใจง่ายขึ้นและตรงกับความต้องการทางธุรกิจ
  • ทั้งผู้บริหารธุรกิจและนักพัฒนาสามารถอ่านสคริปต์เดียวกันได้
  • กรณีทดสอบ Gherkin เชื่อมโยงการทดสอบการยอมรับเข้ากับการทดสอบอัตโนมัติโดยตรง
  • รูปแบบการเขียนนี้ทำให้การนำโค้ดไปใช้ซ้ำในการทดสอบต่างๆ ทำได้ง่ายขึ้น

ข้อเสียของเกอร์คิน

  • จำเป็นต้องอาศัยการมีส่วนร่วมและความร่วมมือทางธุรกิจในระดับสูง
  • วิธีนี้อาจใช้ไม่ได้ผลดีในทุกสถานการณ์
  • ข้อสอบที่เขียนไม่ดีอาจทำให้ค่าใช้จ่ายในการบำรุงรักษาข้อสอบเพิ่มขึ้น

คำถามที่พบบ่อย

BDD (Behavior-Driven Development) เป็นแนวทางปฏิบัติแบบ Agile ที่ทีมจะอธิบายพฤติกรรมที่คาดหวังด้วยภาษาที่เข้าใจง่ายก่อนที่จะเริ่มเขียนโค้ด Gherkin scenarios จะบันทึกพฤติกรรมนั้นไว้ ทำให้ทั้งสมาชิกในทีมฝ่ายธุรกิจและฝ่ายเทคนิคมีความเข้าใจตรงกัน

Gherkin คือไวยากรณ์ภาษาธรรมดาสำหรับการเขียนสถานการณ์จำลอง Cucumber เป็นหนึ่งในเครื่องมือหลายอย่างที่อ่านไฟล์ Gherkin .feature และดำเนินการตามขั้นตอนกับแอปพลิเคชันของคุณ

โครงร่างสถานการณ์จำลองจะดำเนินการตามขั้นตอนเดียวกันกับชุดข้อมูลหลายชุดที่ระบุไว้ในตารางตัวอย่าง ซึ่งจะช่วยหลีกเลี่ยงการสร้างสถานการณ์จำลองซ้ำสำหรับแต่ละชุดค่าอินพุต

นิยามขั้นตอนจะแมปแต่ละขั้นตอนของ Gherkin กับโค้ดที่ใช้รันขั้นตอนนั้น เมื่อ Cucumber เมื่ออ่านขั้นตอนแล้ว จะค้นหาคำจำกัดความที่ตรงกันและเรียกใช้เมธอดนั้นกับแอปพลิเคชัน

สามสหายนี้ประกอบด้วยเจ้าของผลิตภัณฑ์ นักพัฒนา และผู้ทดสอบ ที่ร่วมกันตรวจสอบฟีเจอร์ มุมมองที่รวมกันของพวกเขาทำให้ได้สถานการณ์จำลอง Gherkin ที่ชัดเจนและสมบูรณ์กว่าการทำงานเพียงบทบาทเดียว

นอกเหนือจาก CucumberGherkin ได้รับการสนับสนุนโดย SpecFlow สำหรับ .NET และ Behave for Pythonรวมถึงเฟรมเวิร์ก BDD อื่นๆ ด้วย

ใช่แล้ว ผู้ช่วย AI จะแปลงเรื่องราวของผู้ใช้ให้เป็นสถานการณ์แบบ Given-When-Then ฉบับร่าง แนะนำกรณีพิเศษ และรักษาความสอดคล้องของถ้อยคำ แม้ว่าผู้ทดสอบควรตรวจสอบความถูกต้องอีกครั้งก็ตาม

เครื่องมือ AI อ่านข้อกำหนดแบบง่ายๆ และสร้างร่างแรกของขั้นตอนที่มีโครงสร้างแบบ Given-When-Then โดยอัตโนมัติ ซึ่งจะช่วยเร่งกระบวนการเขียน แต่ทีมงานยังคงต้องปรับแต่งถ้อยคำให้ตรงกับเกณฑ์การยอมรับจริงอยู่ดี

สรุปโพสต์นี้ด้วย: