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

Nat Ketwadee
WeLoveBug dot Com
Published in
10 min readAug 11, 2023

เดินทางมาถึง EP.4 กันแล้ว เป็นยังไงกันบ้างคะ มีใครได้ลองเอาเทคนิคทั้งหมดไปใช้กับการทำงานจริงแล้วบ้าง หากใครยังไม่ค่อยเข้าใจเทคนิคต่าง ๆ หรือยังหยิบเอาแต่ละเทคนิคไปใช้ทำงานจริงไม่ถูก ผู้เขียนขอแนะนำว่าให้ฝึกทำซ้ำ ๆ กันต่อไปเรื่อย ๆ นะคะ อย่าเพิ่งธ๊อ! (สะกดคำนั้นไม่เป็น555) เราจะฝึกทำโจทย์เดิมหรือโจทย์ใหม่ก็ได้ค่ะ เพราะตัวผู้เขียนเองก็ฝึกทำซ้ำ ๆ มาแล้วหลากหลายโจทย์ ทั้งโจทย์ใหม่และโจทย์เก่า กว่าจะเข้าใจก็ใช้เวลามากพอสมควรเลยค่ะ เพราะฉะนั้นในบทความนี้ เราจะมาฝึกทำซ้ำกันต่อกับโจทย์ฝึกเรื่องการถอนเงินสด และโจทย์ฝึกใหม่ที่เกี่ยวกับระบบแต้มสะสม (Points System) ทั้งการได้มาซึ่งแต้ม และการใช้งานแต้มค่ะ

ก่อนจะไปเริ่มออกแบบกัน เราจะขอมาทบทวนส่วนประกอบของกรณีการทดสอบ (Test Case) และ สถานการณ์การทดสอบ (Test Scenario) กันก่อนค่ะ

โครงสร้างกรณีการทดสอบ (Test Case)

กรณีการทดสอบ (Test Case) = สิ่งที่ต้องเตรียมก่อนการทดสอบ (Arrange) + ข้อมูลที่ใช้ในการทดสอบ (Test Data) + เงื่อนไขที่จะถูกทดสอบ (Tested Condition) + ผลลัพธ์ที่คาดหวัง (Expected Result)

โครงสร้างกรณีการทดสอบ (Test Case)

โครงสร้างสถานการณ์การทดสอบ (Test Scenario)

สถานการณ์การทดสอบ (Test Scenario) = กรณีการทดสอบ (Test Case) + กรณีการทดสอบ (Test Case) + … + กรณีการทดสอบ (Test Case)

โครงสร้างสถานการณ์การทดสอบ (Test Scenario)

สิ่งที่ต้องเตรียมก่อนการทดสอบ (Arrange)

หมายถึง การเตรียมการก่อนเริ่มทำการทดสอบ เช่น การเตรียมข้อมูลที่จะต้องมีไว้ในระบบ ก่อนเราจะเริ่มต้นทดสอบในแต่ละ Test Scenario

ข้อมูลที่ใช้ในการทดสอบ (Test Data) หรือ ขั้นตอนการทดสอบ (Action)

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

เงื่อนไขที่จะถูกทดสอบ (Tested Condition)

หมายถึง เงื่อนไขทางธุรกิจ (Business Condition) ที่ได้มาจากเจ้าของความต้องการ แต่เราอาจจะได้มาเป็นเอกสาร หรือข้อความยาว ๆ หรือคำพูดปากเปล่า นั่นคือเราต้องระบุมันออกมาเป็นข้อ ๆ ให้ได้ (Identify Tested Condition)

ผลลัพธ์ที่คาดหวัง (Expected Result)

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

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

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

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

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

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

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

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

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

5.2 20 ปี 1 วัน ขึ้นไป ค่าธรรมเนียม 15.00 บาท (เก็บเงินสดที่ C-Store)

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

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

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

R1 ถอนได้ครั้งละ 10,000.00 บาท ต่อ คน

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

R1TC1

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

ข้อมูลที่ใช้ในการทดสอบ: ถอนเงิน 700.00 บาท

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

R1TC2

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

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

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

R1TC3

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

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

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

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

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

R2TC1

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

ข้อมูลที่ใช้ในการทดสอบ: ถอนเงินวันละ 13,500.00 บาท

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

R2TC2

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

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

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

R2TC3

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

ข้อมูลที่ใช้ในการทดสอบ: ถอนเงินวันละ 28,000.00 บาท

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

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

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

R3TC1

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

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

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

R3TC2

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

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

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

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

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

R4TC1

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

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

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

R4TC2

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

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

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

R4TC3

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

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

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

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

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

5.2 20 ปี 1 วัน ขึ้นไป ค่าธรรมเนียม 15.00 บาท (เก็บเงินสดที่ C-Store)

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

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

R5TC1

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

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

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

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

R5TC2

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

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

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

R5TC3

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

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

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

R5TC4

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

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

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

R5TC5

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

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

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

R5TC6

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

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

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

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

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

R6TC1

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

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

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

R6TC2

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

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

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

R6TC3

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

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

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

R6TC4

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

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

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

R6TC5

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

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

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

R6TC6

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

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

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

ตัวอย่าง Test Case: การถอนเงินสด

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

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

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

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

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

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

Test Scenario ID: WD-SC-01

เงื่อนไขที่จะถูกทดสอบ

อายุเจ้าของบัญชีมากกว่า 15 ปี

และ

ถอนครั้งละเท่ากันกับ 10,000.00 บาท

และ

ถอนวันละน้อยกว่า 20,000.00 บาท

และ

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

และ

ถอนครั้งละมากกว่าขั้นต่ำ 100.00 บาท

และ

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

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลบัญชี

ชื่อธนาคาร: SCK Bank

ประเภท: ออมทรัพย์

สถานะ: ไม่ถูกอายัด

เลขบัญชี: 0298387111

ชื่อบัญชี: พรพิมล ศรีแก้ว

วันเกิด: 08/06/2549

อายุ: 17 ปี

และ

ยอดเงินในบัญชีก่อนถอน: 253,000.00 บาท

และ

วันและเวลาที่ถอน: 08/06/2566 เวลา 08:00 น.

และ

ยอดเงินถอนรวมทั้งวัน: 2,000.00 บาท

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

ข้อมูลสาขา C-Store ที่ถอนเงิน

รหัส 73662

สาขา คอนโดวีเค

และ

ยอดเงินที่ถอน: 10,000.00 บาท

ผลลัพธ์ที่คาดหวัง ก่อนถอนสำเร็จ

ค่าธรรมเนียม: 0.00 บาท

ผลลัพธ์ที่คาดหวัง หลังถอนสำเร็จ

ข้อมูลบัญชี

ชื่อธนาคาร: SCK Bank

ประเภท: ออมทรัพย์

สถานะ: ไม่ถูกอายัด

เลขบัญชี: 0298387111

ชื่อบัญชี: พรพิมล ศรีแก้ว

วันเกิด: 08/06/2549

อายุ: 17 ปี

และ

ยอดคงเหลือในบัญชีหลังฝาก = ยอดเงินในบัญชีก่อนถอน - ยอดเงินที่ถอน

= 253,000.00 - 10,000.00

= 243,000.00 บาท

และ

ยอดคงเหลือที่ถอนได้ทั้งวัน = 20,000.00 - ยอดเงินถอนรวมทั้งวัน - ยอดเงินที่ถอน

= 20,000.00 - 2,000.00 - 10,000.00

= 8,000.00 บาท

และ

ส่วนแบ่งให้ C-Store: 0.00 บาท

ส่วนแบ่งให้ ธนาคาร: 0.00 บาท

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

ตัวอย่างโจทย์ Points System

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

PS1 — ทุก ๆ ราคาสินค้าที่สั่งซื้อ 100.00 บาท มีค่าเท่ากับแต้มสะสม 1 แต้ม

PS2 — 1 แต้ม มีค่าเท่ากับ 1 บาท ที่ใช้ในการสั่งซื้อในครั้งต่อไป

PS3 — แต้มมีอายุ 180 วัน นับตั้งแต่วันที่แต้มถูกอนุมัติ

PS4 — แต้มจะอนุมัติเมื่อลูกค้ากดยืนยันการได้รับสินค้า โดยนับวันที่กดยืนยันการได้รับสินค้าเป็นวันที่ 1 ของอายุ 180 วัน

ตัวอย่างโจทย์ Points System By We Love Bug

จากโจทย์ เราสามารถแบ่งออกเป็น 2 ส่วนการทำงานของระบบได้ดังนี้

  1. การได้มาซึ่งแต้ม จากการซื้อสินค้า
  2. การใช้งานแต้มเป็นส่วนลด ในการซื้อสินค้า

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

การได้มาซึ่งแต้ม จากการซื้อสินค้า

PS1 — ทุก ๆ ราคาสินค้าที่สั่งซื้อ 100.00 บาท มีค่าเท่ากับแต้มสะสม 1 แต้ม

PS4 — แต้มจะอนุมัติเมื่อลูกค้ากดยืนยันการได้รับสินค้า โดยนับวันที่กดยืนยันการได้รับสินค้าเป็นวันที่ 1 ของอายุ 180 วัน

การใช้งานแต้มเป็นส่วนลด ในการซื้อสินค้า

PS2–1 แต้ม มีค่าเท่ากับ 1 บาท ที่ใช้ในการสั่งซื้อในครั้งต่อไป

PS3 — แต้มมีอายุ 180 วัน นับตั้งแต่วันที่แต้มถูกอนุมัติ

การได้มาซึ่งแต้ม จากการซื้อสินค้า และ การใช้งานแต้มเป็นส่วนลด ในการซื้อสินค้า

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

กรณีการทดสอบ (Test Case) : การได้มาซึ่งแต้ม จากการซื้อสินค้า

PS1 - ทุก ๆ ราคาสินค้าที่สั่งซื้อ 100.00 บาท มีค่าเท่ากับแต้มสะสม 1 แต้ม

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

PS1-TC1

เงื่อนไขที่จะถูกทดสอบ: ราคาสินค้าน้อยกว่า 100.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ซื้อสินค้าราคาเท่ากันกับ 99.00 บาท

ผลลัพธ์ที่คาดหวัง: จำนวนแต้มสะสม เท่ากันกับ 0 แต้ม

PS1-TC2

เงื่อนไขที่จะถูกทดสอบ: ราคาสินค้าเท่ากันกับ 100.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ซื้อสินค้าราคาเท่ากันกับ 100.00 บาท

ผลลัพธ์ที่คาดหวัง: จำนวนแต้มสะสม เท่ากันกับ 1 แต้ม

PS1-TC3

เงื่อนไขที่จะถูกทดสอบ: ราคาสินค้ามากกว่า 100.00 บาท

ข้อมูลที่ใช้ในการทดสอบ: ซื้อสินค้าราคาเท่ากันกับ 1,499.00 บาท

ผลลัพธ์ที่คาดหวัง: จำนวนแต้มสะสม เท่ากันกับ 14 แต้ม

PS1 — ทุก ๆ ราคาสินค้าที่สั่งซื้อ 100.00 บาท มีค่าเท่ากับแต้มสะสม 1 แต้ม

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

PS4 - แต้มจะอนุมัติเมื่อลูกค้ากดยืนยันการได้รับสินค้า โดยนับวันที่กดยืนยันการได้รับสินค้าเป็นวันที่ 1 ของอายุ 180 วัน

สำหรับเงื่อนไขนี้ เราจะใช้เทคนิคการออกแบบ State Transition นั่นก็คือ การกำหนดสถานะของแต้ม ในแต่ละจุดของการได้มาซึ่งแต้ม จากการซื้อสินค้า เราสามารถกำหนดออกมาได้ทั้งหมด 5 สถานะ ดังนี้

สถานะของแต้มที่ 1: รออนุมัติ

สถานะของแต้มที่ 2: อนุมัติ

สถานะของแต้มที่ 3: ถูกใช้เป็นส่วนลด

สถานะของแต้มที่ 4: แต้มถูกคืน

สถานะของแต้มที่ 5: หมดอายุ

ขั้นตอนถัดมา หลังจากที่กำหนดทุกสถานะครบเรียบร้อยแล้ว เราจะต้องกำหนด Action หรือ เงื่อนไขที่ทำให้เกิดการย้ายสถานะ และ Actor หรือ คนหรือสิ่งที่ทำให้เกิดการย้ายสถานะ ซึ่งการย้ายสถานะจะมี 4 คู่ดังนี้

สถานะของแต้มที่ 1 → สถานะของแต้มที่ 2 : รออนุมัติ จะเปลี่ยนไป อนุมัติ

Actor หรือ คนหรือสิ่งที่ทำให้เกิดการย้ายสถานะ คือ ลูกค้า

Action หรือ เงื่อนไขที่ทำให้เกิดการย้ายสถานะ คือ กดยืนยันการได้รับสินค้า

สถานะของแต้มที่ 2 → สถานะของแต้มที่ 3 : อนุมัติ จะเปลี่ยนไป ถูกใช้เป็นส่วนลด

Actor หรือ คนหรือสิ่งที่ทำให้เกิดการย้ายสถานะ คือ ลูกค้า

Action หรือ เงื่อนไขที่ทำให้เกิดการย้ายสถานะ คือ ใช้แต้มเป็นส่วนลด ในการซื้อสินค้า

สถานะของแต้มที่ 3 → สถานะของแต้มที่ 4: ถูกใช้เป็นส่วนลด จะเปลี่ยนไป แต้มถูกคืน

Actor หรือ คนหรือสิ่งที่ทำให้เกิดการย้ายสถานะ คือ ลูกค้า

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

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

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

ถือว่าเป็นอีกหนึ่งหน้าที่ของ Software Tester ที่จำเป็นต้องหาและระบุ Hidden Assumption ออกมาให้ได้ เพื่อให้การออกแบบของเราครอบคลุมเงื่อนไขมากที่สุดค่ะ

สถานะของแต้มที่ 2 → สถานะของแต้มที่ 5: อนุมัติ จะเปลี่ยนไป หมดอายุ

Actor หรือ คนหรือสิ่งที่ทำให้เกิดการย้ายสถานะ คือ ระบบ

Action หรือ เงื่อนไขที่ทำให้เกิดการย้ายสถานะ คือ แต้มมีอายุมากกว่า 180 วัน

PS4 — แต้มจะอนุมัติเมื่อลูกค้ากดยืนยันการได้รับสินค้า โดยนับวันที่กดยืนยันการได้รับสินค้าเป็นวันที่ 1 ของอายุ 180 วัน

ตัวอย่าง Success Test Scenarios: การได้มาซึ่งแต้ม จากการซื้อสินค้า

Test Scenario ID: PS-TS1

เงื่อนไขที่จะถูกทดสอบ

ราคาสินค้ามากกว่า 100.00 บาท

และ

สถานะของแต้ม รออนุมัติ → สถานะของแต้ม อนุมัติ

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลสมาชิก

รหัสสมาชิก: 13001

ชื่อ — สกุล: ฟ้าใส ใจดี

และ

ข้อมูลการสั่งซื้อ

รายการ: หม้อทอดไร้น้ำมัน

หมายเลขคำสั่งซื้อ: 200320POVE0EIW

วันที่ 10/08/2566 เวลา 12:00 น.

ราคาสินค้า: 2,400.00 บาท

หมายเลขการจัดส่ง: OB2800918364TH

และ

จำนวนแต้มที่มีอยู่: 50 แต้ม

และ

จำนวนแต้มที่จะได้รับ: 24 แต้ม

สถานะของแต้มที่จะได้รับ: รออนุมัติ

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่ได้รับสินค้า: วันที่ 13/08/2566 เวลา 15:00 น.

ผลลัพธ์ที่คาดหวัง หลังได้รับสินค้า

จำนวนแต้มที่จะได้รับ: 24 แต้ม

สถานะของแต้มที่จะได้รับ: รออนุมัติ

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่กดยืนยันการรับสินค้า: วันที่ 15/08/2566 เวลา 20:30 น.

ผลลัพธ์ที่คาดหวัง หลังกดยืนยันการรับสินค้า

จำนวนแต้มที่ได้รับ: 24 แต้ม

สถานะของแต้มที่ได้รับ: อนุมัติ

จำนวนแต้มที่สามารถใช้งานได้

= จำนวนแต้มที่มีอยู่ + จำนวนแต้มที่ได้รับ = 50 + 24 = 74 แต้ม

วันและเวลาที่แต้มมีอายุ 1 วัน: วันที่ 15/08/2566 เวลา 20:30 น.

วันและเวลาที่แต้มมีอายุ 180 วัน: วันที่ 11/02/2567 เวลา 23:59 น.

Test Scenario ID: PS-TS1

Test Scenario ID: PS-TS2

เงื่อนไขที่จะถูกทดสอบ

ราคาสินค้าเท่ากันกับ 100.00 บาท

และ

สถานะของแต้ม รออนุมัติ → สถานะของแต้ม อนุมัติ

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลสมาชิก

รหัสสมาชิก: 23905

ชื่อ — สกุล: ศุภนัฐ หิรัญกิจ

และ

ข้อมูลการสั่งซื้อ

รายการ: น้ำซุปชาบูน้ำดำ

หมายเลขคำสั่งซื้อ: 831192DSSA5BEP

วันที่ 01/07/2566 เวลา 11:30 น.

ราคาสินค้า: 100.00 บาท

หมายเลขการจัดส่ง: EP9910028453SQ

และ

จำนวนแต้มที่มีอยู่: 129 แต้ม

และ

จำนวนแต้มที่จะได้รับ: 1แต้ม

สถานะของแต้มที่จะได้รับ: รออนุมัติ

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่ได้รับสินค้า: วันที่ 04/07/2566 เวลา 09:23 น.

ผลลัพธ์ที่คาดหวัง หลังได้รับสินค้า

จำนวนแต้มที่จะได้รับ: 1 แต้ม

สถานะของแต้มที่จะได้รับ: รออนุมัติ

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่กดยืนยันการรับสินค้า: วันที่ 04/07/2566 เวลา 18:11 น.

ผลลัพธ์ที่คาดหวัง หลังกดยืนยันการรับสินค้า

จำนวนแต้มที่ได้รับ: 1 แต้ม

สถานะของแต้มที่ได้รับ: อนุมัติ

จำนวนแต้มที่สามารถใช้งานได้

= จำนวนแต้มที่มีอยู่ + จำนวนแต้มที่ได้รับ = 129 + 1 = 130 แต้ม

วันและเวลาที่แต้มมีอายุ 1 วัน: วันที่ 04/07/2566 เวลา 18:11 น.

วันและเวลาที่แต้มมีอายุ 180 วัน: วันที่ 31/12/2566 เวลา 23:59 น.

Test Scenario ID: PS-TS2

ตัวอย่าง Alternative Test Scenarios: การไม่ได้มาซึ่งแต้ม จากการซื้อสินค้า

Test Scenario ID: PS-TSA1

เงื่อนไขที่จะถูกทดสอบ

ราคาสินค้าน้อยกว่า 100.00 บาท

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลสมาชิก

รหัสสมาชิก: 100082

ชื่อ — สกุล: เกศินี อมรศิลป์

และ

ข้อมูลการสั่งซื้อ

รายการ: น้ำสมแท้ 100% (500 ml)

หมายเลขคำสั่งซื้อ: 003185BNMJ1LHX

วันที่ 01/10/2566 เวลา 11:30 น.

ราคาสินค้า: 99.00 บาท

หมายเลขการจัดส่ง: SP0030121439AB

และ

จำนวนแต้มที่มีอยู่: 10 แต้ม

และ

จำนวนแต้มที่จะได้รับ: 0 แต้ม

สถานะของแต้มที่จะได้รับ: -

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่ได้รับสินค้า: วันที่ 12/09/2566 เวลา 14:05 น.

ผลลัพธ์ที่คาดหวัง หลังได้รับสินค้า

จำนวนแต้มที่จะได้รับ: 0 แต้ม

สถานะของแต้มที่จะได้รับ: -

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

วันและเวลาที่กดยืนยันการรับสินค้า: วันที่ 16/09/2566 เวลา 10:15 น.

ผลลัพธ์ที่คาดหวัง หลังกดยืนยันการรับสินค้า

จำนวนแต้มที่ได้รับ: 0 แต้ม

สถานะของแต้มที่ได้รับ: -

จำนวนแต้มที่สามารถใช้งานได้

= 10 + 0 = 10 + 0 = 10 แต้ม

วันและเวลาที่แต้มมีอายุ 1 วัน: -

วันและเวลาที่แต้มมีอายุ 180 วัน: -

การใช้ Template ของกรณี Alternative เราจะต้องใช้ Template เดียวกันกับของกรณี Success นั่นคือ เราต้องออกแบบออกมาให้ใช้ได้กับทั้งคู่ ให้ใช้คอลัมน์เดียวกันได้ และหากไม่ได้ใช้คอลัมน์ไหน เราก็จะเว้นไว้ หรือ ขีด หรือใช้คำว่า ไม่มี ไม่ได้กรอก ก็ได้

กรณีการทดสอบ (Test Case) : การใช้งานแต้มเป็นส่วนลด ในการซื้อสินค้า

PS2 - 1 แต้ม มีค่าเท่ากับ 1 บาท ที่ใช้ในการสั่งซื้อในครั้งต่อไป

สำหรับเงื่อนไขนี้ เราจะใช้เทคนิค Use Case เราต้องระบุกรณีการใช้งานที่สามารถเกิดขึ้นได้ในระบบทั้งหมด ออกแบบมาได้ ดังนี้

กรณีที่มีแต้ม แต่ไม่ใช้แต้มเป็นส่วนลด

PS2-TC1 กรณีที่มีแต้ม แต่ไม่ใช้แต้มเป็นส่วนลด เมื่อมีแต้มน้อยกว่าราคาสินค้า

PS2-TC2 กรณีที่มีแต้ม แต่ไม่ใช้แต้มเป็นส่วนลด เมื่อมีแต้มเท่ากันกับราคาสินค้า

PS2-TC3 กรณีที่มีแต้ม แต่ไม่ใช้แต้มเป็นส่วนลด เมื่อมีแต้มมากกว่าราคาสินค้า

กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดแค่บางส่วน

PS2-TC4 กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดแค่บางส่วน เมื่อมีแต้มน้อยกว่าราคาสินค้า

PS2-TC5 กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดแค่บางส่วน เมื่อมีแต้มเท่ากันกับราคาสินค้า

PS2-TC6 กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดแค่บางส่วน เมื่อมีแต้มมากกว่าราคาสินค้า

กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดทั้งหมด

PS2-TC7 กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดทั้งหมด เมื่อมีแต้มน้อยกว่าราคาสินค้า

PS2-TC8 กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดทั้งหมด เมื่อมีแต้มเท่ากันกับราคาสินค้า

กรณีที่ไม่มีแต้ม ไม่มีแต้มไปใช้เป็นส่วนลด

PS2-TC9 กรณีที่ไม่มีแต้ม ไม่มีแต้มไปใช้เป็นส่วนลด

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

PS2–1 แต้ม มีค่าเท่ากับ 1 บาท ที่ใช้ในการสั่งซื้อในครั้งต่อไป

PS3 — แต้มมีอายุ 180 วัน นับตั้งแต่วันที่แต้มถูกอนุมัติ

สำหรับเงื่อนไขนี้ เราสามารถใช้เทคนิค BVA มาใช้ในการออกแบบได้ ดังนี้

PS3-TC1

เงื่อนไขที่จะถูกทดสอบ: แต้มมีอายุน้อยกว่า 180 วัน

ข้อมูลที่ใช้ในการทดสอบ: แต้มมีอายุ 175 วัน

ผลลัพธ์ที่คาดหวัง: สามารถใช้แต้มเป็นส่วนลดได้

PS3-TC2

เงื่อนไขที่จะถูกทดสอบ: แต้มมีอายุเท่ากันกับ 180 วัน

ข้อมูลที่ใช้ในการทดสอบ: แต้มมีอายุ 180 วัน

ผลลัพธ์ที่คาดหวัง: สามารถใช้แต้มเป็นส่วนลดได้

PS3-TC3

เงื่อนไขที่จะถูกทดสอบ: แต้มมีอายุมากกว่า 180 วัน

ข้อมูลที่ใช้ในการทดสอบ: แต้มมีอายุ 181 วัน

ผลลัพธ์ที่คาดหวัง: ไม่สามารถใช้แต้มเป็นส่วนลดได้

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

แบบที่ 1 ยืนยันรับสินค้าวันที่ 02/08/66 เวลา 13:00 น. แต้มจะหมดอายุวันที่ 29/01/67 เวลา 12:59 น.

แบบที่ 2 ยืนยันรับสินค้าวันที่ 02/08/66 เวลา 13:00 น. แต้มจะหมดอายุวันที่ 29/01/67 เวลา 13:00 น.

แบบที่ 3 ยืนยันรับสินค้าวันที่ 02/08/66 เวลา 13:00 น. แต้มจะหมดอายุวันที่ 29/01/67 เวลา 23:59 น.

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

ดังนั้น ในบทความนี้เราจะกำหนดให้ใช้แบบที่ 3 คือ ยืนยันรับสินค้าวันที่ 02/08/66 เวลา 13:00 น. แต้มจะหมดอายุวันที่ 29/01/67 เวลา 23:59 น.

PS3 — แต้มมีอายุ 180 วัน นับตั้งแต่วันที่แต้มถูกอนุมัติ

ตัวอย่าง Success Test Scenarios: การใช้งานแต้มเป็นส่วนลด ในการซื้อสินค้า

Test Scenario ID: PS-TA1

เงื่อนไขที่จะถูกทดสอบ

กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดแค่บางส่วน เมื่อมีแต้มมากกว่าราคาสินค้า

และ

แต้มมีอายุน้อยกว่า 180 วัน

และ

สถานะของแต้ม อนุมัติ → สถานะของแต้ม ถูกใช้เป็นส่วนลด

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลสมาชิก

รหัสสมาชิก: 001943

ชื่อ — สกุล: กัญญา รัตนพงษ์

และ

จำนวนแต้มที่มีอยู่: 215 แต้ม

สถานะของแต้มที่มีอยู่: อนุมัติ

อายุของแต้มที่มีอยู่ ณ วันที่ 22/06/2566: 150 วัน

วันและเวลาที่แต้มมีอายุ 1 วัน: วันที่ 23/01/2566 เวลา 12:05 น.

วันและเวลาที่แต้มมีอายุ 180 วัน: วันที่ 22/07/2566 เวลา 23:59 น.

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

ข้อมูลการสั่งซื้อ

1

รายการ: ฟองเต้าหู้ม้วน 300 กรัม

ราคาสินค้า: 129.00 บาท

2

รายการ: เส้นมันเทศจีน 200g

ราคาสินค้า: 39.00 บาท

วันที่ 22/06/2566 เวลา 08:32 น.

หมายเลขคำสั่งซื้อ: 831572PERF50SSZ

และ

ข้อมูลการชำระเงิน

ราคาสินค้ารวมทั้งหมด = 129.00 + 39.00 = 168.00 บาท

ค่าจัดส่ง: 35.00 บาท

จำนวนแต้มที่ใช้เป็นส่วนลด: 100 แต้ม

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

ราคารวมสุทธิ = (ราคาสินค้ารวมทั้งหมด + ค่าจัดส่ง) - จำนวนแต้มที่ใช้เป็นส่วนลด

= (168.00 + 35.00) - 100.00

= 203.00 - 100.00

= 103.00 บาท

และ

การใช้งานแต้มเป็นส่วนลด: สามารถใช้งานแต้มเป็นส่วนลดได้สำเร็จ

สถานะของแต้ม: ถูกใช้เป็นส่วนลด

จำนวนแต้มที่สามารถใช้งานได้ = จำนวนแต้มที่มีอยู่ - จำนวนแต้มที่ใช้เป็นส่วนลด

= 215 - 100 = 115 แต้ม

Test Scenario ID: PS-TA1

Test Scenario ID: PS-TA2

เงื่อนไขที่จะถูกทดสอบ

กรณีที่มีแต้ม ใช้แต้มเป็นส่วนลดทั้งหมด เมื่อมีแต้มน้อยกว่าราคาสินค้า

และ

แต้มมีอายุเท่ากันกับ 180 วัน

และ

สถานะของแต้ม อนุมัติ → สถานะของแต้ม ถูกใช้เป็นส่วนลด

สิ่งที่ต้องเตรียมการก่อนการทดสอบ

ข้อมูลสมาชิก

รหัสสมาชิก: 112546

ชื่อ — สกุล: พชร เหมสถิต

และ

จำนวนแต้มที่มีอยู่: 56 แต้ม

สถานะของแต้มที่มีอยู่: อนุมัติ

อายุของแต้มที่มีอยู่ ณ วันที่ 09/09/2566: 180 วัน

วันและเวลาที่แต้มมีอายุ 1 วัน: วันที่ 13/03/2566 เวลา 12:05 น.

วันและเวลาที่แต้มมีอายุ 180 วัน: วันที่ 09/09/2566 เวลา 23:59 น.

ข้อมูลที่ใช้ในการทดสอบ หรือ ขั้นตอนการทดสอบ

ข้อมูลการสั่งซื้อ

1

รายการ: น้ำยาซักผ้า Dee-Nee ขนาด 500 ml

ราคาสินค้า: 65.00 บาท

2

รายการ: น้ำยาปรับผ้านุ่ม FS ขนาด 650 ml

ราคาสินค้า: 55.00 บาท

3

รายการ: น้ำยาซักผ้าขาว ขนาด 320 มล.

ราคาสินค้า: 69.00 บาท

วันที่ 09/09/2566 เวลา 15:27 น.

หมายเลขคำสั่งซื้อ: 300294KLLV0QAC

และ

ข้อมูลการชำระเงิน

ราคาสินค้ารวมทั้งหมด = 65.00 + 55.00 + 69.00 = 189.00 บาท

ค่าจัดส่ง: 40.00 บาท

จำนวนแต้มที่ใช้เป็นส่วนลด: 56 แต้ม

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

ราคารวมสุทธิ = (ราคาสินค้ารวมทั้งหมด + ค่าจัดส่ง) - จำนวนแต้มที่ใช้เป็นส่วนลด

= (189.00 + 40.00) - 56.00

= 229.00 - 56.00

= 173.00 บาท

และ

การใช้งานแต้มเป็นส่วนลด: สามารถใช้งานแต้มเป็นส่วนลดได้สำเร็จ

สถานะของแต้ม: ถูกใช้เป็นส่วนลด

จำนวนแต้มที่สามารถใช้งานได้ = จำนวนแต้มที่มีอยู่ — จำนวนแต้มที่ใช้เป็นส่วนลด

= 56 - 56 = 0 แต้ม

Test Scenario ID: PS-TA2

และสุดท้ายนี้ ผู้เขียนขอย้ำกันอีกครั้งว่าทุกอย่างที่เขียนขึ้นในบทความนี้ เกิดจากการทำความเข้าใจและฝึกทำซ้ำ ๆ ของตัวผู้เขียนเองเท่านั้นค่ะ หากมีข้อผิดพลาดหรือทำให้เกิดความเข้าใจผิดประการใด ผู้เขียนต้องขออภัยมา ณ ที่นี้ด้วยค่า

ขอบคุณทุกคนที่อ่านจนจบนะคะ และพบกันใหม่ค่ะ

--

--

Nat Ketwadee
WeLoveBug dot Com

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