พฤติกรรมขับเคลื่อนการพัฒนา - แตงกวา
Cucumber เป็นเครื่องมือที่รองรับข้อมูลจำเพาะของ Executable Test automation และ Living documentation
การพัฒนาพฤติกรรมที่ขับเคลื่อนขยายไปตามข้อกำหนดตามตัวอย่าง นอกจากนี้ยังกำหนดแนวทางปฏิบัติที่ดีที่สุดของ Test-Driven Development โดยเฉพาะอย่างยิ่งมุมมองของการทำงานจากภายนอกใน งานพัฒนาเป็นไปตามข้อกำหนดที่ปฏิบัติการได้
key features ของข้อกำหนดที่สามารถปฏิบัติการได้มีดังนี้ -
ข้อมูลจำเพาะที่ปฏิบัติการได้คือ -
มาจากตัวอย่างที่แสดงถึงพฤติกรรมของระบบ
เขียนด้วยความร่วมมือของทุกฝ่ายที่เกี่ยวข้องในการพัฒนารวมถึงธุรกิจและผู้มีส่วนได้ส่วนเสีย
ขึ้นอยู่กับเกณฑ์การยอมรับ
การทดสอบการยอมรับที่เป็นไปตามข้อกำหนดปฏิบัติการเป็นไปโดยอัตโนมัติ
ภาษาที่ใช้ร่วมกันและแพร่หลายถูกใช้เพื่อเขียนข้อกำหนดที่สามารถปฏิบัติการได้และการทดสอบอัตโนมัติดังกล่าว -
มีการใช้คำศัพท์เฉพาะโดเมนตลอดการพัฒนา
ทุกคนรวมถึงลูกค้าและผู้มีส่วนได้ส่วนเสียพูดถึงระบบข้อกำหนดและการนำไปใช้ในลักษณะเดียวกัน
คำศัพท์เดียวกันนี้ใช้เพื่อหารือเกี่ยวกับระบบที่มีอยู่ในข้อกำหนดเอกสารการออกแบบรหัสการทดสอบ ฯลฯ
ทุกคนสามารถอ่านและทำความเข้าใจข้อกำหนดและวิธีสร้างข้อกำหนดเพิ่มเติมได้
การเปลี่ยนแปลงสามารถแก้ไขได้ง่าย
เอกสารสดได้รับการดูแล
แตงกวาช่วยในกระบวนการนี้เนื่องจากเชื่อมโยงข้อมูลจำเพาะที่ปฏิบัติการได้กับรหัสจริงของระบบและการทดสอบการยอมรับอัตโนมัติ
วิธีนี้ได้รับการออกแบบมาเพื่อให้ลูกค้าและนักพัฒนาทำงานร่วมกัน เมื่อการทดสอบการยอมรับผ่านไปหมายความว่าข้อกำหนดของลักษณะการทำงานของระบบที่แสดงนั้นได้รับการปรับใช้อย่างถูกต้อง
การทดสอบการยอมรับแตงกวาโดยทั่วไป
ลองพิจารณาตัวอย่างต่อไปนี้
Feature − Sign up
การลงทะเบียนควรรวดเร็วและเป็นมิตร
สถานการณ์ - ลงทะเบียนสำเร็จ
New ผู้ใช้ควรได้รับอีเมลยืนยันและได้รับการต้อนรับเป็นการส่วนตัว
Given ฉันได้เลือกที่จะลงทะเบียน
When ฉันลงทะเบียนด้วยรายละเอียดที่ถูกต้อง
Then ฉันควรได้รับอีเมลยืนยัน
And ฉันควรเห็นข้อความทักทายส่วนตัว
จากตัวอย่างนี้เราจะเห็นว่า -
การทดสอบการยอมรับอ้างถึง Features.
คุณสมบัติอธิบายโดย Scenarios.
สถานการณ์ประกอบด้วย Steps.
ข้อกำหนดนี้เขียนด้วยภาษาธรรมชาติในไฟล์ข้อความธรรมดา แต่สามารถเรียกใช้งานได้
การทำงานของแตงกวา
Cucumber เป็นเครื่องมือบรรทัดคำสั่งที่ประมวลผลไฟล์ข้อความที่มีคุณลักษณะที่กำลังมองหาสถานการณ์ที่สามารถดำเนินการกับระบบของคุณได้ ให้เราเข้าใจว่าแตงกวาทำงานอย่างไร
ใช้ประโยชน์จากข้อตกลงมากมายเกี่ยวกับวิธีการตั้งชื่อไฟล์และตำแหน่งที่อยู่ (โฟลเดอร์ที่เกี่ยวข้อง) เพื่อให้ง่ายต่อการเริ่มต้น
แตงกวาช่วยให้คุณเก็บข้อมูลจำเพาะการทดสอบอัตโนมัติและเอกสารไว้ในที่เดียวกัน
แต่ละสถานการณ์คือรายการของขั้นตอนที่อธิบายถึงเงื่อนไขก่อนการดำเนินการและหลังเงื่อนไขของสถานการณ์ หากแต่ละขั้นตอนดำเนินการโดยไม่มีข้อผิดพลาดสถานการณ์จะถูกทำเครื่องหมายว่าผ่าน
เมื่อสิ้นสุดการวิ่งแตงกวาจะรายงานจำนวนสถานการณ์ที่ผ่านไป
หากมีบางอย่างล้มเหลวจะให้ข้อมูลเกี่ยวกับสิ่งที่ล้มเหลวเพื่อให้นักพัฒนาสามารถดำเนินการต่อได้
ในแตงกวา Features, Scenariosและขั้นตอนจะเขียนด้วยภาษาที่เรียกว่า Gherkin.
Gherkin เป็นภาษาอังกฤษแบบข้อความธรรมดา (หรือหนึ่งในกว่า 60 ภาษาอื่น ๆ ) ที่มีโครงสร้าง Gherkin เรียนรู้ได้ง่ายและโครงสร้างของมันช่วยให้คุณสามารถเขียนตัวอย่างได้อย่างกระชับ
แตงกวาดำเนินการไฟล์ของคุณที่มีข้อกำหนดปฏิบัติการที่เขียนด้วย Gherkin
แตงกวาต้องการคำจำกัดความของขั้นตอนเพื่อแปล Gherkin Steps ข้อความธรรมดาเป็นการกระทำที่จะโต้ตอบกับระบบ
เมื่อแตงกวาดำเนินการขั้นตอนในสถานการณ์จำลองจะมองหาคำจำกัดความของขั้นตอนที่ตรงกันเพื่อดำเนินการ
Step Definition คือโค้ดชิ้นเล็ก ๆ ที่มีรูปแบบติดอยู่
รูปแบบนี้ใช้เพื่อเชื่อมโยง Step Definition กับขั้นตอนที่ตรงกันทั้งหมดและโค้ดคือสิ่งที่ Cucumber จะดำเนินการเมื่อเห็นขั้นตอน Gherkin
แต่ละขั้นตอนจะมาพร้อมกับคำจำกัดความของขั้นตอน
ขั้นตอนส่วนใหญ่จะรวบรวมข้อมูลเข้าจากนั้นมอบหมายให้กับเฟรมเวิร์กที่เฉพาะเจาะจงสำหรับโดเมนแอปพลิเคชันของคุณเพื่อทำการโทรบนเฟรมเวิร์กของคุณ
Cucumber รองรับแพลตฟอร์มซอฟต์แวร์ที่แตกต่างกันมากกว่าโหล คุณสามารถเลือกการใช้งานแตงกวาที่เหมาะกับคุณได้ ทุกการใช้งาน Cucumber มีฟังก์ชันการทำงานโดยรวมเหมือนกันและยังมีขั้นตอนการติดตั้งและฟังก์ชันเฉพาะแพลตฟอร์มของตัวเองอีกด้วย
ขั้นตอนการทำแผนที่และคำจำกัดความของขั้นตอน
กุญแจสำคัญของแตงกวาคือการจับคู่ระหว่างขั้นตอนและคำจำกัดความขั้นตอน
                การใช้แตงกวา
ด้านล่างนี้คือการใช้แตงกวา
                 
                 | 
ทับทิม / JRuby | 
                 
                 | 
JRuby (ใช้ Cucumber-JVM) | 
                 
                 | 
Java | 
                 
                 | 
Groovy | 
                 
                 | 
.NET (ใช้ SpecFlow) | 
                 
                 | 
JavaScript | 
                 
                 | 
JavaScript (ใช้ Cucumber-JVM และ Rhino) | 
                 
                 | 
Clojure | 
                 
                 | 
โกซู | 
                 
                 | 
ลัวะ | 
                 
                 | 
PHP (ใช้ Behat) | 
                 
                 | 
Jython | 
                 
                 | 
C ++ | 
                 
                 | 
Tcl | 
การรวมกรอบ
ด้านล่างนี้คือการใช้งาน Framework
                 
                 | 
ทับทิมบนราง | 
                 
                 | 
ซีลีเนียม | 
                 
                 | 
PicoContainer | 
                 
                 | 
กรอบสปริง | 
                 
                 | 
Watir |