EP.3 เทคนิคการออกแบบกรณีการทดสอบ (Test Case) และ สถานการณ์การทดสอบ (Test Scenario)

Nat Ketwadee
WeLoveBug dot Com
Published in
5 min readAug 1, 2023

ในตัวอย่างโจทย์จาก 2 EP ที่ผ่านมา เราออกแบบกรณีการทดสอบ (Test Case) ทั้งหมดไว้ในไวท์บอร์ดแพลตฟอร์มที่มีชื่อว่า Miro board แต่ในตัวอย่างโจทย์ใน EP.3 นี้ เราจะพาทุกคนมาออกแบบทั้งหมดให้อยู่ในไฟล์ Sheet ทั้งกรณีการทดสอบ (Test Case) และสถานการณ์การทดสอบ (Test Scenario) เลยค่ะ

ตัวอย่างโจทย์ การฝากเงินสดที่ร้านสะดวกซื้อ C-Store

ความต้องการของลูกค้า (Requirements) หรือ เงื่อนไขทางธุรกิจ คือ

1. ฝากได้ครั้งละ 30,000.00 บาท ต่อ คน

2. ฝากได้วันละ 250,000.00 บาท ต่อ คน (รวมทุกสาขาทั้งวัน)

3. ต้องไม่เป็นบัญชีออมทรัพย์ที่ถูกอายัด

4. บัญชีออมทรัพย์แต่ละประเภทจะมีเงื่อนไขการรับฝากเงินขั้นต่ำ

5. ค่าธรรมเนียมการทำธุรกรรม คิดตามช่วงอายุ

5.1 15 ปี — 20 ปี ค่าธรรมเนียม 0.00 บาท

5.2 20 ปี 1 วัน ขึ้นไป ค่าธรรมเนียม 12.00 บาท

5.3 ค่าธรรมเนียมทั้งหมด 12.00 บาท แบ่งรายได้เป็นของ C-Store 8.00 บาท ของ ธนาคาร 4.00 บาท

6. ช่วงเวลาที่อนุญาตให้ทำรายการฝาก ได้ 08:00–20:00 น.

ตัวอย่างโจทย์ การฝากเงินสดที่ร้านสะดวกซื้อ C-Store by We love bug

R1 ฝากได้ครั้งละ 30,000.00 บาท ต่อ คน

สำหรับเงื่อนไขนี้เราจะใช้เทคนิค BVA สังเกตุจากเป็นค่าตัวเลข เราจึงแบ่งออกเป็น 3 ช่วงของข้อมูล ดังนี้

R1TC1

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละน้อยกว่า 30,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 1,500.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R1TC2

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละเท่ากันกับ 30,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 30,000.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R1TC3

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละมากกว่า 30,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 30,100.00 บาท

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

เงื่อนไข ฝากได้ครั้งละ 30,000.00 บาท ต่อ คน

R2 ฝากได้วันละ 50,000.00 บาท ต่อ คน (รวมทุกสาขาทั้งวัน)

สำหรับเงื่อนไขนี้เราจะใช้เทคนิค BVA แบ่งออกเป็น 3 ช่วงของข้อมูล ดังนี้

R2TC1

เงื่อนไขที่จะถูกทดสอบ: ฝากวันละน้อยกว่า 50,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 6,000.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R2TC2

เงื่อนไขที่จะถูกทดสอบ: ฝากวันละเท่ากันกับ 50,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 50,000.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R2TC3

เงื่อนไขที่จะถูกทดสอบ: ฝากวันละมากกว่า 50,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ฝากเงิน 50,200.00 บาท

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

เงื่อนไข ฝากได้วันละ 250,000.00 บาท ต่อ คน (รวมทุกสาขาทั้งวัน)

R3 ต้องไม่เป็นบัญชีออมทรัพย์ที่ถูกอายัด

สำหรับเงื่อนไขนี้เราจะใช้เทคนิค EP แบ่งออกเป็น 2 ช่วงของข้อมูล ดังนี้

R3TC1

เงื่อนไขที่จะถูกทดสอบ: บัญชีออมทรัพย์ไม่ถูกอายัด

ข้อมูลที่ใช้ในการทดสอบ: บัญชีออมทรัพย์ที่ไม่ถูกอายัด

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R3TC2

เงื่อนไขที่จะถูกทดสอบ: บัญชีออมทรัพย์ถูกอายัด

ข้อมูลที่ใช้ในการทดสอบ: บัญชีออมทรัพย์ที่ถูกอายัด

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

เงื่อนไข ต้องไม่เป็นบัญชีออมทรัพย์ที่ถูกอายัด

R4 บัญชีออมทรัพย์แต่ละประเภทจะมีเงื่อนไขการรับฝากเงินขั้นต่ำ

สำหรับเงื่อนไขนี้เราจะต้องกำหนดการฝากเงินขั้นต่ำ ซึ่งเราต้องดูจากเอกสารความต้องการหรือจากผู้ที่ให้ Requirements ซึ่งในที่นี้เราจะกำหนดขั้นต่ำเท่ากันกับ 200.00 บาท จะใช้เทคนิค BVA แบ่งออกเป็น 3 ช่วงของข้อมูล ดังนี้

R4TC1

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละน้อยกว่าขั้นต่ำ 200.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: 190.00 บาท

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

R4TC2

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละเท่ากันกับขั้นต่ำ 200.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: 200.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R4TC3

เงื่อนไขที่จะถูกทดสอบ: ฝากครั้งละมากกว่าขั้นต่ำ 200.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: 210.00 บาท

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

เงื่อนไข บัญชีออมทรัพย์แต่ละประเภทจะมีเงื่อนไขการรับฝากเงินขั้นต่ำ

R5 ค่าธรรมเนียมการทำธุรกรรม คิดตามช่วงอายุ

5.1 15 ปี — 20 ปี ค่าธรรมเนียม 0.00 บาท

5.2 20 ปี 1 วัน ขึ้นไป ค่าธรรมเนียม 12.00 บาท

5.3 ค่าธรรมเนียมทั้งหมด 12.00 บาท แบ่งรายได้เป็นของ C-Store 8.00 บาท ของ ธนาคาร 4.00 บาท

สำหรับเงื่อนไขนี้ จะมีขอบเขตของข้อมูล 2 ค่า นั่นก็คือ อายุ 15 ปี และ อายุ 20 ปี เราจะใช้เทคนิค BVA แบ่งออกเป็น 6 ช่วงของข้อมูล (มาจาก 3 ช่วง 2 ค่า) ดังนี้

R5TC1

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี น้อยกว่า 15 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 14 ปี

ผลลัพธ์ที่คาดหวัง: -

(ต้องสอบถามเจ้าของความต้องการเพิ่มเติมว่าอายุน้อยกว่า 15 ปี สามารถทำธุรกรรมได้หรือไม่)

R5TC2

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี เท่ากันกับ 15 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 15 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 0.00 บาท

R5TC3

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี มากกว่า 15 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 16 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 0.00 บาท

R5TC4

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี น้อยกว่า 20 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 19 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 0.00 บาท

R5TC5

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี เท่ากันกับ 20 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 20 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 0.00 บาท

R5TC6

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี มากกว่า 20 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 21 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 12.00 บาท แบ่งรายได้เป็นของ C-Store 8.00 บาท ของ ธนาคาร 4.00 บาท

เงื่อนไข ค่าธรรมเนียมการทำธุรกรรม คิดตามช่วงอายุ

สำหรับเงื่อนไขนี้ เราจะเห็นว่า R5TC3 และ R5TC4 ค่าของอายุจะมีความซ้อนทับกันอยู่ เราสามารถยุบรวมกันหรือเลือกมาให้เหลือ 1 Test Case ได้ โดยเราจะต้องขอความคิดเห็นจากทีมหรือผู้ที่กำหนดความต้องการ ว่าถ้ายุบแล้วจะใช้กรณีไหนหรือข้อมูลที่จะใช้ทดสอบเป็นเท่าไหร่ได้บ้าง อาจจะกำหนดจากการเก็บสถิติมาแล้วว่าอายุเท่าน้ีนั้นเป็นลูกค้าของธนาคารมากที่สุดก็เป็นได้ หรือถ้าอยากใช้ทั้ง 2 ข้อโดยไม่ยุบรวมเลยก็สามารถทำได้เช่นกัน

เงื่อนไข ค่าธรรมเนียมการทำธุรกรรม คิดตามช่วงอายุ

ตัวอย่างการยุบกรณีการทดสอบรวมกัน

R5TC3

เงื่อนไขที่จะถูกทดสอบ: อายุเจ้าของบัญชี อยู่ระหว่าง 15–20 ปี หรือ อายุเจ้าของบัญชีมากกว่า 15 ปี แต่น้อยกว่า 20 ปี

ข้อมูลที่ใช้ในการทดสอบ: เจ้าของบัญชีอายุ 18 ปี

ผลลัพธ์ที่คาดหวัง: ค่าธรรมเนียม 0.00 บาท

R6 ช่วงเวลาที่อนุญาตให้ทำรายการฝาก ได้ 08:00–20:00 น.

สำหรับเงื่อนไขนี้ จะมีขอบเขตของข้อมูล 2 ค่า นั่นก็คือ เวลา 08:00 น.​ และ เวลา 20:00 น. เราจะใช้เทคนิค BVA แบ่งออกเป็น 6 ช่วงของข้อมูล (มาจาก 3 ช่วง 2 ค่า) ดังนี้

R6TC1

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน ก่อน 08:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 7:55 น.

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

R6TC2

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน เท่ากันกับ 08:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 8:00 น.

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R6TC3

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน หลัง 08:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 8:30 น.

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R6TC4

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน ก่อน 20:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 15:00 น.

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R6TC5

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน เท่ากันกับ 20:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 20:00 น.

ผลลัพธ์ที่คาดหวัง: สามารถฝากเงินได้

R6TC6

เงื่อนไขที่จะถูกทดสอบ: เวลาฝากเงิน หลัง 20:00 น.

ข้อมูลที่ใช้ในการทดสอบ: 20:40 น.

ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้

เงื่อนไข ช่วงเวลาที่อนุญาตให้ทำรายการฝาก ได้ 08:00–20:00 น.

เช่นเดียวกันกับเงื่อนไขที่แล้ว ที่สามารถยุบรวมกันได้ระหว่าง R6TC3 และ R6TC4 หรือจะเก็บไว้ทั้ง 2 กรณีก็สามารถทำได้ค่ะ

เงื่อนไข ช่วงเวลาที่อนุญาตให้ทำรายการฝาก ได้ 08:00–20:00 น.

ขั้นตอนถัดมาจะเป็นการนำ กรณีการทดสอบ (Test Case) มารวมกันให้เป็นสถานการณ์การทดสอบ (Test Scenario) ของ Success Case ซึ่งเราจะเอามาเรียงกันแบบสุ่มมั่วไม่ได้ เพราะเราต้องคำนึงถึงข้อที่เป็นการฝากเงินขั้นต่ำด้วย

ตัวอย่างเช่น ถ้าเรานำกรณีที่ฝากเท่ากันกับขั้นต่ำ 200.00 บาท มารวมกับฝากครั้งละเท่ากันกับ 30,000.00 บาท มันจะขัดแย้งกัน เราจะใช้ข้อมูลการฝาก 200.00 บาท กับ 30,000.00 บาท ในข้อเดียวกันไม่ได้ ถ้าเราเลือกฝากเท่ากันกับขั้นต่ำ 200.00 บาท เราจะต้องเลือกฝากครั้งละน้อยกว่า 30,000.00 บาท มาคู่กันเท่านั้น ทำให้เราอาจจะใช้กรณีที่ฝากมากกว่าขั้นต่ำมาใช้เยอะกว่ากรณีที่ฝากเท่ากันกับขั้นต่ำ

และอีกหนึ่งข้อสังเกต เราจะมอง R5 ในเรื่องของการเสียค่าธรรมเนียมนั้นเป็น Expected Result ว่าในแต่ละ Scenario นั้นจะต้องตรวจสอบว่าเสียค่าธรรมเนียมเท่าไหร่บ้าง เราจึงขอนำ R5 เป็นตัวตั้งก่อนเป็นกรณีแรก

ตัวอย่าง Success Test Scenarios: ฝากเงินสดได้สำเร็จ

Expected Result คือ เสียค่าธรรมเนียมเท่ากันกับ 0.00 บาท

R5TC2 อายุเจ้าของบัญชี เท่ากันกับ 15 ปี

R1TC1 ฝากครั้งละน้อยกว่า 30,000.00 บาท

R2TC1 ฝากวันละน้อยกว่า 50,000.00 บาท

R3TC1 บัญชีออมทรัพย์ไม่ถูกอายัด

R4TC2 ฝากครั้งละเท่ากันกับขั้นต่ำ 200.00 บาท

R6TC2 เวลาฝากเงิน เท่ากันกับ 08:00 น.

เราสามารถออกแบบมาได้ทั้งหมด แบ่งตามสีที่เงื่อนไข R5 จะเหมือนกัน และเงื่อนไขอื่น ๆ จะสลับกันไป ดังรูปนี้

การออกแบบสถานการณ์การทดสอบ (Test Scenario)

จะเห็นว่า เงื่อนไข R3 จะเป็นการใช้ R3TC1 บัญชีไม่ถูกอายัด ซ้ำกับทุก Scenario เนื่องจากเป็นเทคนิค EP จึงจำเป็นต้องใช้ซ้ำกับกรณีฝากเงินได้สำเร็จ

และอย่าลืมว่าเราควรจะทำสัญลักษณ์ให้กับกรณีการทดสอบที่เราใช้งานไปแล้วนะคะ

การทำสัญลักษณ์ให้กับกรณีการทดสอบที่ถูกใช้งานแล้ว

เราควรออกแบบกรณีที่เป็นไปได้ทั้งหมดออกมาก่อน แล้วถ้าจะเลือกใช้แค่บางกรณีก็สามารถทำได้ แต่ก็ควรเลือกให้ครอบคลุมทุกเงื่อนไขมากที่สุด

ยกตัวอย่างเช่น เราจะเลือกมาสีละ 1 Scenario จากทั้งหมด ดังรูปนี้

การออกแบบสถานการณ์การทดสอบ (Test Scenario)

ต่อมาจะเป็นขั้นตอนการออกแบบ Template ของสถานการณ์การทดสอบ (Test Scenario) ในเรื่องของการฝากเงินสดเท่านั้น เพราะในแต่ละสถานการณ์การทดสอบ (Test Scenario) ที่ต่างกัน จะใช้ Template ที่ไม่เหมือนกัน เราจะไม่มี Template ที่ตายตัว ขึ้นอยู่กับการออกแบบของเราค่ะ

ตัวอย่าง Success Test Scenarios: ฝากเงินสดได้สำเร็จ

ตัวอย่าง Success Test Scenarios: ฝากเงินสดได้สำเร็จ

ข้อมูลที่เราใช้ในการทดสอบในบทความนี้ จะเป็นแค่ข้อมูลที่เราสร้างขึ้นมาเองเท่านั้น ไม่ได้มีข้อมูลจริงหรือตัวตนของบุคคลจริง ๆ แต่หากเป็นการทดสอบระบบของจริง เราจำเป็นต้องใช้ตัวอย่างของข้อมูลจริง ๆ (Real Example) ที่ใช้ในระบบเท่านั้น จะต้องไม่เป็นการสร้างขึ้นมามั่ว ๆ แบบไม่มีที่มา

หากมีความจำเป็นต้องสร้างขึ้นเอง เนื่องจากเป็นระบบที่ทำขึ้นมาใหม่ จึงไม่มีการเก็บข้อมูลการใช้งานเอาไว้ เราก็สามารถสร้างขึ้นเองได้ แต่ก็ควรใช้ข้อมูลที่เสมือนจริงมากที่สุด จะไม่ใช้คำว่า Test/ทดสอบ ลงไปในข้อมูลที่ใช้ในการทดสอบ เพื่อให้การทดสอบของเรานั้นใกล้เคียงกับการใช้งานจริงมากที่สุด

--

--

Nat Ketwadee
WeLoveBug dot Com

𝚂𝚘𝚏𝚝𝚠𝚊𝚛𝚎 𝚃𝚎𝚜𝚝𝚎𝚛 👩🏻‍💻˖ ۫ ּ