พฤติกรรมขับเคลื่อนการพัฒนา - Gherkin
Gherkin เป็นภาษาที่ใช้ในการเขียน Features, Scenarios, and Steps. จุดประสงค์ของ Gherkin คือช่วยเราเขียนข้อกำหนดที่เป็นรูปธรรม
เพื่อทำความเข้าใจความหมายของข้อกำหนดที่เป็นรูปธรรมให้พิจารณาตัวอย่างต่อไปนี้ -
ควรป้องกันไม่ให้ลูกค้าป้อนรายละเอียดบัตรเครดิตที่ไม่ถูกต้อง
หากลูกค้าป้อนหมายเลขบัตรเครดิตที่มีความยาวไม่ตรง 16 หลักเมื่อพยายามส่งแบบฟอร์มควรแสดงข้อความแสดงข้อผิดพลาดอีกครั้งเพื่อแจ้งให้ทราบจำนวนหลักที่ถูกต้อง
หลังไม่มีความคลุมเครือและหลีกเลี่ยงข้อผิดพลาดและสามารถทดสอบได้มากขึ้น
Gherkin ออกแบบมาเพื่อสร้างข้อกำหนดที่เป็นรูปธรรมมากขึ้น ใน Gherkin ตัวอย่างข้างต้นมีลักษณะดังนี้ -
Feature
ข้อเสนอแนะเมื่อป้อนรายละเอียดบัตรเครดิตที่ไม่ถูกต้อง Feature Definition
ในการทดสอบผู้ใช้เราได้เห็นคนจำนวนมากที่ทำเอกสารผิดพลาด
Background True for all Scenarios Below
Given ฉันได้เลือกสินค้าที่จะซื้อ
And ฉันกำลังจะป้อนหมายเลขบัตรเครดิตของฉัน
Scenario - หมายเลขบัตรเครดิตสั้นเกินไปScenario Definition
When ฉันป้อนหมายเลขบัตรที่มีความยาวน้อยกว่า 16 หลัก
And รายละเอียดอื่น ๆ ทั้งหมดถูกต้อง
And ฉันส่งแบบฟอร์มSteps
Then ควรแสดงแบบฟอร์มอีกครั้ง
And ฉันควรเห็นข้อความแจ้งจำนวนหลักที่ถูกต้อง
รูปแบบและไวยากรณ์ของ Gherkin
ไฟล์ Gherkin เป็นไฟล์ข้อความธรรมดาและมีนามสกุล. คุณลักษณะ แต่ละบรรทัดที่ไม่ว่างจะต้องขึ้นต้นด้วยคีย์เวิร์ด Gherkin ตามด้วยข้อความที่คุณต้องการ คีย์เวิร์ดคือ -
Feature
Scenario
รับเมื่อนั้นและ แต่ (ขั้นตอน)
Background
เค้าโครงสถานการณ์
Examples
"" "(สตริงเอกสาร)
| (ตารางข้อมูล)
@ (แท็ก)
# (ความคิดเห็น)
*
ลักษณะเฉพาะ
Featureคำสำคัญใช้เพื่ออธิบายคุณลักษณะของซอฟต์แวร์และเพื่อจัดกลุ่มสถานการณ์ที่เกี่ยวข้อง คุณลักษณะมีองค์ประกอบพื้นฐานสามประการ -
คำสำคัญ - คุณลักษณะ
ชื่อของสถานที่ซึ่งอยู่ในบรรทัดเดียวกับคำหลักคุณลักษณะ
คำอธิบายที่ไม่บังคับ (แต่แนะนำอย่างยิ่ง) ที่สามารถขยายได้หลายบรรทัดเช่นข้อความทั้งหมดระหว่างบรรทัดที่มีคุณลักษณะคำหลักและบรรทัดที่ขึ้นต้นด้วย Scenario, Background หรือ Scenario Outline
นอกเหนือจากชื่อและคำอธิบายแล้วฟีเจอร์ยังมีรายการสถานการณ์หรือโครงร่างสถานการณ์และพื้นหลังเพิ่มเติม
เป็นเรื่องธรรมดาที่จะตั้งชื่อ a .featureโดยใช้ชื่อของฟีเจอร์แปลงเป็นตัวพิมพ์เล็กและแทนที่ช่องว่างด้วยขีดเส้นใต้ ตัวอย่างเช่น,
feedback_when_entering_invalid_credit_card_details.feature
ในการระบุคุณลักษณะในระบบของคุณคุณสามารถใช้สิ่งที่เรียกว่า "เทมเพลตการแทรกฟีเจอร์"
คำอธิบาย
เอกสารบางส่วนของ Gherkin ไม่จำเป็นต้องขึ้นต้นด้วยคีย์เวิร์ด
ในบรรทัดต่อจากคุณลักษณะสถานการณ์โครงร่างสถานการณ์หรือตัวอย่างคุณสามารถเขียนอะไรก็ได้ที่คุณต้องการตราบเท่าที่ไม่มีบรรทัดใดขึ้นต้นด้วยคำสำคัญ นี่คือวิธีรวมคำอธิบาย
สถานการณ์
ในการแสดงลักษณะการทำงานของระบบของคุณคุณแนบสถานการณ์อย่างน้อยหนึ่งสถานการณ์กับแต่ละคุณสมบัติ เป็นเรื่องปกติที่จะเห็น 5 ถึง 20 สถานการณ์ต่อฟีเจอร์เพื่อระบุพฤติกรรมทั้งหมดที่อยู่รอบ ๆ ฟีเจอร์นั้นอย่างสมบูรณ์
สถานการณ์เป็นไปตามรูปแบบต่อไปนี้ -
อธิบายบริบทเริ่มต้น
อธิบายเหตุการณ์
อธิบายผลที่คาดว่าจะได้รับ
เราเริ่มต้นด้วยบริบทอธิบายการกระทำและตรวจสอบผลลัพธ์ นี้ทำตามขั้นตอน Gherkin มีคำหลักสามคำเพื่ออธิบายบริบทการกระทำและผลลัพธ์เป็นขั้นตอน
Given - สร้างบริบท
When - ดำเนินการ
Then - ตรวจสอบผลลัพธ์
คำหลักเหล่านี้ช่วยให้สามารถอ่านสถานการณ์ได้
Example
Scenario - ถอนเงินจากบัญชี
Given ฉันมีเงิน $ 100 ในบัญชีของฉัน
When ฉันขอ $ 20
Then ควรจ่าย $ 20
หากมีหลายตัว Given หรือ When คุณสามารถใช้ขั้นตอนข้างใต้ And หรือ But. ช่วยให้คุณระบุสถานการณ์โดยละเอียดได้
Example
Scenario - พยายามถอนโดยใช้บัตรที่ถูกขโมย
Given ฉันมีเงิน $ 100 ในบัญชีของฉัน
But บัตรของฉันไม่ถูกต้อง
When ฉันขอ $ 50
Then บัตรของฉันไม่ควรถูกส่งคืน
And ฉันควรจะบอกให้ติดต่อธนาคาร
ในขณะที่สร้างสถานการณ์โปรดจำไว้ว่า 'แต่ละสถานการณ์ต้องเหมาะสมและสามารถดำเนินการได้โดยไม่ขึ้นกับสถานการณ์อื่น ๆ ' ' ซึ่งหมายความว่า -
คุณไม่สามารถมีเงื่อนไขความสำเร็จของสถานการณ์หนึ่งขึ้นอยู่กับข้อเท็จจริงที่ว่าสถานการณ์อื่น ๆ ถูกดำเนินการก่อนหน้านั้น
แต่ละสถานการณ์สร้างบริบทเฉพาะดำเนินการสิ่งหนึ่งและทดสอบผลลัพธ์
สถานการณ์ดังกล่าวให้ประโยชน์ดังต่อไปนี้ -
แบบทดสอบจะง่ายขึ้นและเข้าใจง่ายขึ้น
คุณสามารถเรียกใช้สถานการณ์เพียงบางส่วนได้และไม่ต้องกังวลว่าชุดทดสอบของคุณจะพัง
ขึ้นอยู่กับระบบของคุณคุณอาจสามารถเรียกใช้การทดสอบควบคู่กันได้ซึ่งจะช่วยลดระยะเวลาในการดำเนินการทดสอบทั้งหมดของคุณ
เค้าโครงสถานการณ์
หากคุณต้องเขียนสถานการณ์ที่มีอินพุตหรือเอาต์พุตหลายรายการคุณอาจต้องสร้างสถานการณ์ต่างๆที่แตกต่างกันตามค่าของสถานการณ์เท่านั้น วิธีแก้ปัญหาคือการใช้โครงร่างสถานการณ์ ในการเขียนโครงร่างสถานการณ์
ตัวแปรในขั้นตอนเค้าร่างสถานการณ์จะถูกทำเครื่องหมายด้วย <และ>
ค่าต่างๆของตัวแปรจะแสดงเป็นตัวอย่างในตาราง
Example
สมมติว่าคุณกำลังเขียนคุณลักษณะสำหรับการเพิ่มตัวเลขสองตัวบนเครื่องคิดเลข
Feature - เพิ่ม
Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input | output |
| 2+2 | 4 |
| 98+1 | 99 |
| 255+390 | 645 |
ส่วนโครงร่างสถานการณ์จะตามมาด้วยตัวอย่างหนึ่งส่วนหรือมากกว่าเสมอซึ่งเป็นคอนเทนเนอร์สำหรับตาราง ตารางต้องมีแถวส่วนหัวที่สอดคล้องกับตัวแปรในขั้นตอนเค้าร่างสถานการณ์ แต่ละแถวด้านล่างจะสร้างสถานการณ์ใหม่โดยกรอกค่าตัวแปร