[ATH2016] BDD with Cucumber มันไม่ง่าย แต่เริ่มได้

หัวข้อ BDD with Cucumber เป็นอีกเรื่องที่แตกมาจาก Blog หลักครับ สรุปงาน Agile Thailand 2016  โดยเรื่องนี้ Speaker คือ คุณ Tanjai ครับ สำหรับตอนนี้ DD เยอะแยะเลย มีทั้ง TDD, ATDD และ BDD เป็นต้นครับ โดยของพวกนี้มีมาเพิ่มตรวจสอบความถูกต้องครับ

เจ้า ตัว BDD หรือ Behavior Driven Development มาตรวจสอบความถูกต้องระหว่าง Business Test, Technical Test และ Test Case ตรงกัน หรือไม่? เพิ่มการทำงานร่วมกันของคน 3 กลุ่ม คือ Business Analyst, System Analyst, Programmer และ Quality Assurance ครับ โดยก่อนเริ่มทำ BDD เราต้อง

  • Explore - หาสิ่งที่ทำ คือ อะไร / Feature ที่ทำอยู่
  • Discover - ทำงานอย่างไร มี Scenario อย่างไร
  • Define - กำหนด Acceptance Criteria คือ อะไร
  • Drive - ทำให้ BDD มันก่อกำเนิดขึ้นมาครับ

มาเริ่มกันเลย โดยการถามว่า Feature สร้างมาเพิ่มอะไร ทำอย่างไร มี Scenario อย่างไร เพื่อให้ได้ Example ที่เป็น Concrete Example เช่น Facebook มีระบบ Search แต่การ Search มี Scenario เมื่อป้นชื่อเพื่อนระบบ List ชื่อเพื่อนมาให้ อันนี้ คือ Concrete Example

สำหรับ Tools ที่ใช้ คือ Cucumber (Java Base) แต่ต้นตำรับขอบตัว BDD เป็นตัว RSpec ของภาษา Ruby ที่ใช้ Cucumber เพราะมันใช้ได้กับเว็บ และตัว Mobile App ครับ เพียงแก้ปรับ Config โดย Cucumber มันฮิตมาก มีคนเอาไปแปลงสำหรับแต่ละภาษาด้วย เช่น Python PHP หลังรู้จาก Tools แล้ว เรามารู้ส่วนประกอบของ Cucumber เพื่อเอามาทำ BDD ก่อน

  • Feature File - บอกว่า Feature อะไร Scenario เป็นอย่างไร เป็นภาษาคน ตรงนี้ Tester มีมาพูดคุยกับ BA, PM แล้วว่าที่ทำอยู่ใช้ หรือไม่
    • Given - บริบท
    • When - Action ที่ทำให้เกิดผลลัพธ์
    • THEN - Expect ผลลัพธ์
    • AND - ถ้า THEN เยอะไป
  • Step File - Implement ของ Feature File เป็นทางแห่งการ Coding และ โดยตัว IDE แต่ละตัวมีตัวช่วย Generate Step File ขึ้นมา เช่น IntelliJ IDEA ตรงนี้ Tester มีมาพูดคุยกับ Dev ถึงการเขียน Code Test ครับ
  • POM File - เอาไว้ Config Dependency ต่างๆ เช่น พวก Selenium, webdriver , junit (ไม่ชัวร์ว่า แต่ละภาษาที่แตกไป เช่น Python PHP ต้องใช้ POM File หรือป่าว เข้าใจว่า POM มันของ Maven ที่ใช้กับ Java, Groovy)

สิ่งที่ได้ออกมาเป็น Automate Test แต่เราทำ BDD ได้ต้องมีข้อควรระวังนิดนึง

  • เข้าใจระบบ หรือยัง
  • ทำทีละ Feature และ เอาอะไรที่เอามาทำ Automate Test
  • Success Scenario สร้างกำลังใจ
  • อะไรที่เสี่ยง ไม่ควรให้คนอื่นรู่ เช่น ฝั่ง BA เอาไปซ่อนใน step file

การร่วมมือระหว่างหลายฝ่ายอาจจะมองว่าเป็น Pair Programming หรือ Cross Functional ก็ได้ครับ โดยสำหรับ Resource ที่แนะนำมี ดังนี้

  • The cucumber book (ruby)
  • Cucumber Recipes
  • The Cucumber for Java book - จำได้ว่าเคยซื่อมา แต่ดองเอาไว้ไหนไม่รู้
  • Specification by Example

ต่อไปเป้นสรุป Q&A

  • Q : ในส่วนของ Mobile มีการ Test อย่างไร
    A: ใช้ Appium กับ Cucumber แต่มีคนแนะนำให้ทำ Device Farm ได้ทดสอบกับเครื่องจริงครบทุกรุ่น
  • Q : ข้อมูลในการ Test อันนี้ให้ข้อมูลจริง หรือป่าว หรือ Stub เข้าไป
    A : มีการเตรียมข้อมูลจริงที่เครื่อง Test เอา แต่ทางที่ดีควรนำเอา Service Virtualization ถ้า Test ไปทำข้อมูลพังนี้ ได้เตรียม Data กันยาว และยิ่งพวก Bank ทำยากด้วย ตัวที่ใช้ได้มี mountebank เป็นต้น
  • Q : ถ้าเป็น Scenario ที่ต้องรอ Data มีวิธีการทำอย่างไร
    A: ตัว Step File มีคำสั่งให้รอได้ แต่ทางทีดีควรใช้ Service Virtualization ดีกว่าครับ
  • Q : ถ้ามีการแก้ Element กลางที่ผูกกับ BDD ไว้แล้วมีวิธีจัดการอย่างไร
    A: ประชุมปรึกษากันสร้าง BDD สำหรับ Element นั้นประกบ

 

 


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.