ใช้ Feature Template เขียน User Stories กันเถอะ… Action!

รูปแบบของ Feature Template เป็นดังนี้


Feature:
ชื่อคุณสมบัติ(feature)ของสิ่งประดิษฐ์นี้(สิ่งประดิษฐ์ เช่น ซอฟแวร์) 

In Order to: ทำเพื่ออะไร ให้อรรถประโยชน์อะไร แก่ผู้ใช้ เมื่อใช้ feature นี้

As a: สิ่งใดละ ที่ทำ feature นี้

I want: ผู้ใช้ต้องการอะไร หรือต้องได้อะไร หลังจากใช้ feature นี้แล้ว

Scenario: ชื่อเหตุการณ์ หรือสถานะการณ์ที่มีการใช้ feature นี้

Given: เงื่อนไขเริ่มต้นของสถานะการณ์ (เปลียบได้กับการ Setup ใน xUnit Test Pattern)

[And:] เงื่อนไขอื่นๆ ถ้ามีก็เติมเข้าไป…

When: ผู้ใช้ feature ดำเนินเรื่อง หรือกระทำให้เกิด สถานะการณ์ (เปลียบได้กับการ Exercise ใน xUnit Test Pattern)

Then: เกิดอะไรขึ้น (งานเขียนตรงนี้จะเปลียบได้กับค่าที่คาดหวัง เพื่อจะเอาไปทำ Verify หรือ Assert ใน xUnit Test Pattern)

[เพิ่ม Scenario ต่อไปได้อีกเรื่อยๆ จนเต็ม]

User Stories ที่เขียนด้วยรูปแบบ Feature Template นี้จะมีคุณสมบัติของ INVEST อย่างครบถ้วนทีเดียวเลยละครับ

ดูตัวอย่างแล้วลองลงมือทำกันเถอะ… Action!


ตัวอย่าง-1: User Stories ของ ร้านชา
นมไข่มุกอร่อยสุดๆทั้ง 3 โลก

Feature: สั่งชานมไข่มุก

In Order to: รับคำสั่งชานมไข่มุกจากลูกค้า ส่งไปให้คนชงชา คนชงชาทำชาให้ลูกค้าได้ถูกต้อง

As a: พนักงานรับคำสั่้งซื้อชานมไข่มุก

I want: สรุปคำสั่งชงชานมไข่มุก แสดงชนิดชาที่สั่งซื้อ จำนวน ราคา เวลาที่ต้องรอ และราคาที่ลูกค้าต้องจ่ายทั้งหมด

Scenario: ลูกค้าสั่งซื้อชานมไข่มุก 1 แก้ว

Given: คนชงชาว่าง พร้อมทำอยู่พอดี

When: ฉันพิมพ์คำสั่งซื้อชานมไข่มุก 1 แก้ว

Then: ฉันจะต้องได้ใบสรุปสั่งซื้อ ตามนี้

ชานมไข่มุก: 1 แก้ว แก้วละ 25 บาท

รอชงเสร็จประมาณ: 1 นาที

ราคา: 25 บาท

Scenario: ลูกค้าสั่งซื้อชานมไข่มุก 5 แก้วแบบปกติ และอีก 5 แก้วไม่ใส่ไข่มุก

Given: คนชงชาไม่ว่างรออีก 5 นาที จึงพร้อมที่จะทำ

When: ฉันพิมพ์คำสั่งซื้อชานมไข่มุก 5 แก้ว กับอีก 5 แก้ว  พร้อมคำอธิบายว่าไม่ใส่ไข่มุก

Then: ฉันจะต้องได้ใบสรุปสั่งซื้อ ตามนี้

ชานมไข่มุก: 10 แก้ว แก้วละ  25 บาท

รอชงเสร็จประมาณ: 15 นาที

ราคา: 250 บาท


ตัวอย่าง-2: User Stories ของ ซอฟแวร์วิเคราะห์ข้อมูลทางสถิติ

Feature: คำนวณค่าสถิติของสมการเชิงเส้นตรงแบบหลายตัวแปร

In Order to: นำค่าที่คำนวณได้ไปวิเคราะห์ เพื่อการพยากรณ์วางแผน หรือเพื่ออธิบายทฤษฏีอะไรบางอย่าง

As a: โมดูลสถิติวิเคราะห์

I want: ค่าตัวสถิติที่ถูกต้องตามวิธีการคำนวณสมการเชิงเส้นตรงแบบหลายตัวแปร เมื่อฉันใส่ข้อมูลลงไป

Scenario: คำนวณค่าสถิติของแบบจำลอง y = b1*x1 + b0 หรือ มี dependency เดียว

Given: y = [10, 20, 30, 40, 50, 60]

And:  x1 = [1,2,3,4,5,6]

And:  y เป็น dependent variable

When: ฉัน กดคำสั่ง คำนวณแบบจำลองเชิงเส้นตรง

Then: ฉันจะต้องได้แบบจำลองเชิงเช้นที่มีค่าตัวสถิติตามนี้ b1 = 10 และ b0 = 0

 

Scenario: คำนวณค่าสถิติการแบบจำลอง y = b1*x1 + b2*x2 + b0 หรือ แบบมีหลาย dependency

Given: y = [2, 4, 6, 8, 10, 12]

And:  x1 = [1,2,3,4,5,6]

And:  x2 = [1,2,3,4,5,6]

And:  y เป็น dependent variable

When: ฉัน กดคำสั่ง คำนวณแบบจำลองเชิงเส้นตรง

Then: ฉันจะต้องได้แบบจำลองเชิงเส้นที่มีค่าีตัวสถิติ b1 =1 ,  b2 = 1 และ b0 = 0


ก็พอแค่นี้ละกันครับ จะเขียน user stories ให้เก่งให้น่าอ่านได้ ก็ต้องอ่าน สังเกตุ และลงมือ ฝึกเขียนด้วยตัวท่านเองบ่อยๆนะครับ โดยอาจจะเริ่มจากเขียนเรื่องใกล้ๆตัวเราก่อน หรือเรื่องที่เราสนใจมากก่อนก็ได้ เช่นหนัง หรือการ์ตูนที่เราชอบครับ เช่น

ผมขอแปล User Stories เป็นไทยว่า “เรื่องเล่าของผู้ใช้”

ตัวอย่าง-3: เรื่องเล่าของ แฮร์รี่ พอตเตอร์

Feature: เสกคาถา เอกซ์เปกโต พาโตรนุม

In Order to: เรียกผู้ผู้พิทักษ์ส่วนตัว ออกมาจัดการปกป้อง หรือจัดการกับผู้คุมวิญญาณ

As a: พ่อมด หรือแม่มด

I want: ผู้พิทักษ์ส่วนตัว จะออกมาปกป้องตัวฉันให้ปลอดภัย และขับไล่ผู้คุมวิญญาณไปให้ใกลๆ

Scenario: เจอกับผู้คุมวิญญาณ 10 ตัวอยู่รอบๆ

Given: มีผู้คุมวิญญาณออกมา 10 ตัวอยู่รอบๆตัวฉัน

And:  ฉันมีไม้เสกคาถา

When: ฉันเสกคาถา  เอกซ์เปกโต พาโตรนุม

Then:ผู้ พิทักษ์ส่วนตัวของฉันออกมา ขับไล่ผู้คุมวิญญาณทั้ง 10 ตัวออกไปให้ไกลๆ

Feature: เสกคาถา แอ๊กซิโอ

In Order to: เรียกของอะไรก็ได ไม่ว่าจะใกล้ หรือไกล มาหาตัวผู้เสกคาถา

As a: พ่อมด หรือแม่มด

I want: เรียกของมาหาตัวฉันโดยไม่ต้องเดินไปหยิบเอง

Scenario: เรียกหนังสือมาหา

Given: หนังสือวางอยู่บนโต๊ะ ไกล 100 เมตร

And:  ฉันมีไม้เสกคาถา

When: ฉันเสกคาถา  แอ๊กซิโอ

Then: หนังสือลอยเข้ามาใกล้ๆ ให้ฉันหยิบ

จบละครับกับ ใช้ Feature Template เขียน User Stories กันเถอะ… Action! มีอะไรสนุกๆ ก็มาเขียน เรื่องเล่า ให้ผมได้อ่านไว้บ้างก็ได้เลยครับ…

ดัดแปลงจาก: Cucumber BDD

ขอบคุณครับ
#:P

Advertisements

#agile-software-development, #design, #unit-test