พฤติกรรมขับเคลื่อนการพัฒนา - แตงกวา
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 |