BDD เพิ่มรอบรอบวัฏจักร TDD
ดังนั้นคุณเริ่มต้นด้วยพฤติกรรมและปล่อยให้การทดสอบของคุณขับเคลื่อนจากนั้นให้การทดสอบขับเคลื่อนการพัฒนา โดยหลักการแล้ว BDD นั้นได้รับการขับเคลื่อนด้วยการทดสอบการยอมรับบางประเภท แต่ไม่จำเป็นต้องใช้ 100% ตราบใดที่คุณมีพฤติกรรมที่กำหนดไว้คุณก็โอเค
สมมุติว่าคุณกำลังเขียนหน้าเข้าสู่ระบบ
เริ่มต้นด้วยเส้นทางแห่งความสุข:
Given that I am on the login page
When I enter valid details
Then I should be logged into the site
And shown my default page
รูปแบบที่ให้ - และ - เมื่อ - และ - แล้ว - และนี้เป็นเรื่องปกติในการพัฒนาพฤติกรรมที่ขับเคลื่อนด้วย ข้อดีอย่างหนึ่งของมันคือมันสามารถอ่าน (และด้วยการฝึกอบรมการเขียน) โดยผู้ที่ไม่ใช่นักพัฒนา - นั่นคือผู้มีส่วนได้เสียของคุณสามารถดูรายการพฤติกรรมที่คุณกำหนดไว้เพื่อความสำเร็จของงานและดูว่า ตรงกับความคาดหวังของพวกเขาก่อนที่คุณจะปล่อยผลิตภัณฑ์ที่ไม่สมบูรณ์
มีภาษาสคริปต์ที่รู้จักกันในชื่อ Gherkin ซึ่งมีลักษณะเหมือนด้านบนและช่วยให้คุณสามารถเขียนโค้ดทดสอบหลังส่วนคำสั่งในพฤติกรรมเหล่านี้ คุณควรมองหานักแปลที่ใช้ Gherkin สำหรับกรอบการพัฒนาตามปกติของคุณ ไม่ได้อยู่ในขอบเขตของคำตอบนี้
อย่างไรก็ตามกลับไปที่พฤติกรรม แอปพลิเคชันปัจจุบันของคุณยังไม่ได้ทำสิ่งนี้ (ถ้าเป็นเช่นนั้นเพราะเหตุใดจึงมีคนขอเปลี่ยนแปลง) ดังนั้นคุณจึงล้มเหลวในการทดสอบนี้ไม่ว่าคุณจะใช้นักวิ่งทดสอบหรือทดสอบด้วยตนเอง
ดังนั้นถึงเวลาที่จะเปลี่ยนเป็นวัฏจักร TDD เพื่อให้การทำงานนั้น
ไม่ว่าคุณจะเขียน BDD หรือไม่ก็ตามการทดสอบของคุณควรตั้งชื่อเป็นไวยากรณ์ทั่วไป หนึ่งในปัญหาที่พบบ่อยที่สุดคือไวยากรณ์ "ควร" ที่คุณอธิบายไว้
เขียนทดสอบ: ShouldAcceptValidDetails ผ่านวงจร Red-Green-Refactor จนกว่าคุณจะพอใจ ตอนนี้เราผ่านการทดสอบพฤติกรรมหรือไม่? ถ้าไม่เขียนการทดสอบอื่น: ShouldRedirectToUserDefaultPage Red-Green-Refactor จนกว่าคุณจะมีความสุข ซักล้างซ้ำจนกว่าคุณจะปฏิบัติตามเกณฑ์ที่กำหนดไว้ในพฤติกรรม
จากนั้นเราก็ไปยังพฤติกรรมต่อไป
Given that I am on the login page
When I enter an incorrect password
Then I should be returned to the login page
And shown the error "Incorrect Password"
ตอนนี้คุณไม่ควรยึดเอาสิ่งนี้ไว้เพื่อผ่านพฤติกรรมก่อนหน้านี้ของคุณ คุณควรทดสอบนี้ไม่สำเร็จ ดังนั้นกลับลงไปที่รอบ TDD ของคุณ
และจนกว่าคุณจะมีหน้าของคุณ
ขอแนะนำRspec Bookสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับ BDD และ TDD แม้ว่าคุณจะไม่ใช่นักพัฒนา Ruby