Behavior Driven Development (BDD) ด้วย SpecFlow กันครับ… พี่น้อง

สวัสดีครับ

บทความนี้ ผมจะนำเสนอ วิธีการพัฒนาซอฟแวร์ที่เรียกว่า Behavior Driven Development (BDD) โดยใช้ SpecFlow ครับ

Behavior Driven Development (BDD) มันคือ กระบวนการพัฒนาซอฟแวร์วิธีหนึ่ง ที่รวมเอา การออกแบบ, ทดสอบ และ เขียน code เข้าไว้ด้วยกัน เป็นกระบวนการเดียว 

โดยมีขั้นตอน ดังนี้

  1. นักธุรกิจจะปรึกษากันในปัญหาของเขา แล้วร่วมกันเขียนออกมาเป็น ความต้องการทางธุรกิจ
  2. ทีมพัฒนา นำความต้องการทางธุรกิจ มาปรึกษาร่วมกัน แล้วร่วมกันเขียนออกมาเป็น ความต้องการ ที่มีรูปแบบเดียวกัน (ในบล็อกนี้ใช้ Gherkin format)
  3. นักทดสอบ นำความต้องการที่มีรูปแบบ มาใช้เป็น test cases ทำ automate test ได้ เพื่อตรวจสอบ แล้วแสดงผลความถูกต้องออกมา ให้ทุกคนที่เกี่ยวข้องรับรู้
  4. โปรแกรมเมอร์ นำความต้องการที่มีรูปแบบ มาสร้างซอฟแวร์ เขียน code ให้สมบูรณ์ 

BDD ถูกพัฒนาโดย Dan North โดยมีพื้นฐานสำคัญมาจาก Test-Driven Development (TDD) ที่พัฒนาโดย Kent Beck และ หลักการออกแบบ Domain-Driven Design (DDD) ที่พัฒนาโดย Eric Evans

แต่ BDD ได้เพิมเติมส่วนสำคัญที่สุดเข้าไป เพื่อใช้เป็นสื่อในการสื่อสารเดียวกัน เขียน specification ที่มีโครงสร้าง, อ่านง่าย และใช้สื่อสารเข้าใจตรงกันทุกคนที่เกี่ยวข้องได้ง่าย โดยใช้รูปแบบ Gherkin เขียน specifications แต่ต้องเขียนเป็นภาษาอังกฤษด้วยนะ

เรามาเริ่มทำ BDD กันดีกว่า

สิ่งที่ต้องติดตั้งก่อน

  1. ติดตั้ง Visual Studio 2015 community
  2. ติดตั้ง plugin IDE SpecFlow สำหรับ VS 2015

BDD Action!

  1. เปิด Visual Studio 2015 สร้าง new Project เลือกเป็น Unit Test  -> BankAccount.Specs
  2. ลบ file UnitTest1.cs ออกไป มันเปล่าประโยชน์
  3. ติดตั้ง SpecFlow โดยใช้ runner เป็น MS Test (runner ปกติจะเป็น NUnit) ให้ไปที่ Package Manager Console แล้วพิมพ์คำสั่ง PM> Install-Package SpecFlow.MsTest กด Enter 
  4. ไปที่ Solution Explorer สร้าง New Item -> BankAccount.feature (ดูรูป) new-bank-account-feature
  5. เขียน Specifications ในรูปแบบ Gherkin (ดูรูป หรือ Code)write-bank-account-specs
  6. ทดสอบ execute specs …open Test -> Windows -> Test Explore (ดูรูป) open-test-explorer-windows
  7. ลอง execute Specs ดูสิครับ รออะไร กด Run All… ที่ Test Explore (ดูรูป) test-run-all-specs
  8. สร้าง Execute Specifications โดยไปที่ file BankAccount.feature ที่เปิดอยู่แล้ว click ขวา -> Generate Step Definitions (ดูรูป) gen-exe-specs
  9. ลองแสดง preview ดูก่อนดีกว่า (ดูรูป) preview-exe-specs
  10. พร้อมแล้วกด Generate จะเด้งหน้าจอให้ save file TransferringMoneyBetweenAccountsSteps.cs กด Save เลยครับ

เอาละเราได้ Specification ที่มีโครงสร้าง สามารถ Execute ได้แล้ว หลังจากนี้ก็คืองานเขียน code ที่เกี่ยวกับงาน Bank Account เริ่มเลย

  1. ไปที่ project BankAccount.Specs เพิ่ม class Account, AccountEntry แล้วเขียน code ลงไป (ดู Code)
  2. เปิด file TransferringMoneyBetweenAccountsSteps.cs แล้ว เขียน code ให้ step ทำงานได้ถูกต้อง (ดู Code)
  3. เสร็จแล้ว ทดลอง Execute specification อีกครั้งครับ (ดูรูป) bdd-bankaccount-done

ผมก็ขอจบ BDD ด้วย SpecFlow ไว้เพียงเท่านี้ครับ …

ข้อมูลอ้างอิง

ขอบคุณครับ

#:P

Advertisements

#atdd, #%e0%b8%babdd, #tdd