EP.3 เทคนิคการออกแบบกรณีการทดสอบ (Test Case) และ สถานการณ์การทดสอบ (Test Scenario)
ในตัวอย่างโจทย์จาก 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 น.
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 บาท
ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้
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 บาท
ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้
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 น.
ผลลัพธ์ที่คาดหวัง: ไม่สามารถฝากเงินได้
เช่นเดียวกันกับเงื่อนไขที่แล้ว ที่สามารถยุบรวมกันได้ระหว่าง R6TC3 และ R6TC4 หรือจะเก็บไว้ทั้ง 2 กรณีก็สามารถทำได้ค่ะ
ขั้นตอนถัดมาจะเป็นการนำ กรณีการทดสอบ (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 จะเหมือนกัน และเงื่อนไขอื่น ๆ จะสลับกันไป ดังรูปนี้
จะเห็นว่า เงื่อนไข R3 จะเป็นการใช้ R3TC1 บัญชีไม่ถูกอายัด ซ้ำกับทุก Scenario เนื่องจากเป็นเทคนิค EP จึงจำเป็นต้องใช้ซ้ำกับกรณีฝากเงินได้สำเร็จ
และอย่าลืมว่าเราควรจะทำสัญลักษณ์ให้กับกรณีการทดสอบที่เราใช้งานไปแล้วนะคะ
เราควรออกแบบกรณีที่เป็นไปได้ทั้งหมดออกมาก่อน แล้วถ้าจะเลือกใช้แค่บางกรณีก็สามารถทำได้ แต่ก็ควรเลือกให้ครอบคลุมทุกเงื่อนไขมากที่สุด
ยกตัวอย่างเช่น เราจะเลือกมาสีละ 1 Scenario จากทั้งหมด ดังรูปนี้
ต่อมาจะเป็นขั้นตอนการออกแบบ Template ของสถานการณ์การทดสอบ (Test Scenario) ในเรื่องของการฝากเงินสดเท่านั้น เพราะในแต่ละสถานการณ์การทดสอบ (Test Scenario) ที่ต่างกัน จะใช้ Template ที่ไม่เหมือนกัน เราจะไม่มี Template ที่ตายตัว ขึ้นอยู่กับการออกแบบของเราค่ะ
ตัวอย่าง Success Test Scenarios: ฝากเงินสดได้สำเร็จ
ข้อมูลที่เราใช้ในการทดสอบในบทความนี้ จะเป็นแค่ข้อมูลที่เราสร้างขึ้นมาเองเท่านั้น ไม่ได้มีข้อมูลจริงหรือตัวตนของบุคคลจริง ๆ แต่หากเป็นการทดสอบระบบของจริง เราจำเป็นต้องใช้ตัวอย่างของข้อมูลจริง ๆ (Real Example) ที่ใช้ในระบบเท่านั้น จะต้องไม่เป็นการสร้างขึ้นมามั่ว ๆ แบบไม่มีที่มา
หากมีความจำเป็นต้องสร้างขึ้นเอง เนื่องจากเป็นระบบที่ทำขึ้นมาใหม่ จึงไม่มีการเก็บข้อมูลการใช้งานเอาไว้ เราก็สามารถสร้างขึ้นเองได้ แต่ก็ควรใช้ข้อมูลที่เสมือนจริงมากที่สุด จะไม่ใช้คำว่า Test/ทดสอบ ลงไปในข้อมูลที่ใช้ในการทดสอบ เพื่อให้การทดสอบของเรานั้นใกล้เคียงกับการใช้งานจริงมากที่สุด