Skip to main content

Prepare test cases

Black Box Testing​

การทดสอบแบบกล่องดำหรือ Black Box Testing เป็นวิธีการทดสอบซอฟต์แวร์ที่เน้นการทดสอบซอฟต์แวร์โดยไม่ต้องสนใจรายละเอียดภายในของระบบ ผู้ทดสอบไม่รู้ถึงโครงสร้างภายในของซอฟต์แวร์ที่กำลังทดสอบ การทดสอบจะเริ่มต้นด้วยการเข้าใจความต้องการ (Requirement) และฟังก์ชันที่คาดหวังของระบบ (Expect Result) จะไม่มีการเข้าถึง Source Code สนใจแค่ว่า เมื่อใส่ Input เข้าไปในระบบ แล้ว Output ที่ได้ ตรงตาม Expected Result หรือไม่

การทดสอบซอฟต์แวร์แบ่งได้เป็น 2 กระบวนการ ดังนี้

  1. กระบวนการตรวจสอบความถูกต้องของซอฟต์แวร์ที่ถูกพัฒนาขึ้นว่าเป็นไปตามข้อกำหนดคุณลักษณะความต้องการใช้งานซอฟต์แวร์ที่ได้กำหนดไว้หรือไม่ (Verification)
  2. กระบวนการตรวจสอบผลการพัฒนาซอฟต์แวร์ที่เกิดขึ้นจริงว่าตรงกับความคาดหวังของผู้ใช้หรือไม่ (Validation)
ข้อแนะนำ

ในส่วนการทำงานของผู้ทดสอบระบบจะทดสอบในระดับ Integration Testing คือ การทดสอบระบบ หลังจากมีการนำเอาแต่ละฟังก์ชันหรือแต่ละระบบย่อยมารวมเข้าด้วยกันจะเป็นการทดสอบการทำงานร่วมกันของแต่ละฟังก์ช์นหรือระบบย่อย


Techniques & Examples​

Equivalence Partition​

เป็นวิธีการทดสอบโดยแบ่งข้อมูล และผลลัพธ์ได้ควาดหวัง (Expected Results) ออกเป็นช่วงๆ โดยจำนวนการแบ่ง (Parition) จะมีจำนวนเท่ากับกรณีการทดสอบ (Test Cases) วิธีการนี้จะมีการกำหนดค่าในการทดสอบ (Input) คือ

1.Valid Partition คือชุดข้อมูลที่ถูกต้อง

2.Invalid Partition คือ ชุดข้อมูลที่ไม่ถูกต้อง โดยจะอยู่นอกเหนือจากชุดข้อมูลของ Valid Partition

Examples

Invalid ParttionValid PartitionInvalid Parttion
<1001-100> 100

โดยตามหลักการกำหนดชุดข้อมูล ของ Equivalence Parttion ได้ระบุว่า

  1. Each value in partition can be representative for the whole partition (if one work, all value will work) หมายความว่า แต่ละค่าใน Partition สามารถเป็นตัวแทนได้ของทั้ง Partition ถ้าค่าหนึ่งใช้งานได้ ค่าที่เหลือก็จะใช้งานได้เช่นกัน
  2. Test one from each partition better than test all value from one partition หมายความว่า แต่ละ Partition สามารถเลือกเพียงค่าหนึ่งมาทดสอบ แต่ให้เลือกมาทดสอบให้ครบทุก Partition ดีกว่า การเลือกทดสอบทุกค่าใน Partition เดียวกัน

โจทย์ตัวอย่าง : Module การค้นหาข้อมูลนักศึกษา จากรหัสนักศึกษา มีกติกาของรหัสนักศึกษา ดังนี้ ความยาวของรหัสนักศึกษา 10 ตัวอักษร รหัสนักศึกษาต้องเป็นตัวเลขเท่านั้น รหัสนักศึกษาที่ใส่ ต้องมีข้อมูลในฐานข้อมูล เมื่อเราได้หลักเกณฑ์แล้วจึงทำการสร้าง Equivalence Partition table

ConditionValidTagInvaildTag
ความยาวของรหัสนักศึกษา10 ตัวอักษรV1<10I1
>10I2
รหัสนักศึกษาต้องเป็นตัวเลขทั้งหมด0-9 ตัวอักษรV2มีตัวเลขและตัวอักษรผสมกันI3
รหัสนักศึกษา พบในฐานข้อมูลYesV3NoI4

* V คือ Valid

* I คือ Invalid

จากข้อมูลตารางด้านบน จะเรียว่า Test Conditon และสามารถนำมาสร้างเป็น Test case ได้ดังนี้

T1T2T3T4T5T6
ความยาวของรหัสนักศึกษาV1xx
I1xx
I2xx
รหัสนักศึกษาต้องเป็นตัวเลขV2xxx
I3xxx
รหัสนักศึกษา พบในฐานข้อมูลV3x
I4xxxxx

* T คือ Test Case

จากตารางจะได้ Test case ทั้งหมด 6 ข้อ จะขอยกตัวอย่างมาอธิบาย ดังนี้

Test Case 1 = V1, V2,V3 จะเป็นแบบ Valid -> ตาม condition คือ มี 10 ตัวอักษร แต่ละตัวมีเลข 0-9 และ เป็นรหัสนักศึกษาที่มีอยู่ในระบบ เช่น 5110025225

Test Case 4 = I1,I3,I4 จะเป็นแบบ InValid -> ตาม condition คือ มีน้อยกว่า 10 ตัวอักษร มีตัวเลขและตัวอักษรผสมกัน และไม่พบในระบบ เช่น 51O125

โดยแต่ละ Test Case ก็จะมีการ Expect result ที่แตกต่างกัน ให้ผู้ใช้งานระบบได้ทราบ ว่าต้องดำเนินการอย่างไรต่อไป สรุปได้ว่า วิธี Equivalent Partition ช่วยให้เราจัดกลุ่มเพื่อสร้าง Test Case ให้ครอบคลุมใน condition ที่ต้องการได้​

Boundary Value Analysis​

หลัการของ Boundary Value Analaysis คือ การกำหนดกลุ่มข้อมูลที่สามารถเป็นตัวแทนของข้อมูลทั้งหมดใน Class หรือ Test case นั้นได้ โดยค่าดังกล่าว จะเป็น

  • ค่าที่มาก/น้อยกว่า ค่าขอบเขตขั้นต่ำของเงื่อนไข
  • ค่าที่มาก/น้อยกว่า ค่าขอบเขตสูงสุดของเงื่อนไข

ยกตัวอย่าง เช่น นักเรียนที่จะสมัครเข้า สาขาวิทยาศาสตร์ได้ ต้องมี GPA ตั้งแต่ 3.00 - 4.00 น. ดังนั้น

  • GPA น้อยกว่า 3.00 เป็น Invalid
  • GPA ตั้งแต่ 3.00 - 4.00 จะเป็น Valid

จาก ภาพ

  • ค่าขอบเขตขั้นต่ำคือ 3.00
  • ค่าขอบเขตสูงสุดคือ 4.00
  • กลุ่มข้อมูลที่ใช้ในการทดสอบ : 2.99, 3.00, 3.01, 3.99, 4.00

อินพุตที่ถูกต้อง: 3.00, 3.01, 3.99, 4.00 อินพุตไม่ถูกต้อง: 2.99 สามารถสร้างเป็น Test Case ได้ดังนี้

  1. ป้อนค่า 2.99 : Invalid
  2. ป้อนค่า 3.01 : valid
  3. ป้อนค่า 3.00 : valid
  4. ป้อนค่า 3.99 : valid
  5. ป้อนค่า 4.00 : valid

State transition testing​

เป็นวิธีการทดสอบซอฟต์แวร์ที่ใช้กับระบบที่มีการเปลี่ยนแปลงของสถานะ (state) ภายในระบบ ซึ่งสถานะนั้นๆ มักจะมีพฤติกรรมที่แตกต่างกันในแต่ละสถานะ

ตัวอย่างง่ายๆ ของ state transition testing เช่น การทดสอบเกมคอมพิวเตอร์ที่มีสถานะต่างๆ เช่น "เริ่มเกม", "กำลังเล่น", "ชนะ", "แพ้" ฯลฯ

  • สถานะเริ่มต้น (Initial State): เกมเริ่มต้น
  • สถานะกำลังเล่น (Playing State): เล่นเกม
  • สถานะชนะ (Winning State): ชนะเกม
  • สถานะแพ้ (Losing State): แพ้เกม

และมีการเปลี่ยนสถานะต่างๆ เมื่อเกิดเหตุการณ์บางอย่าง เช่น การคลิกที่ปุ่ม "เริ่มเกม" จะทำให้เกมเข้าสู่สถานะ "กำลังเล่น" หรือการทำลายศัตรูจะทำให้เกมเข้าสู่สถานะ "ชนะ" ฯลฯ

การทดสอบ state transition นี้จะโฟกัสที่การย้ายจากสถานะไปสถานะหนึ่งถึงอีกสถานะหนึ่ง และการทำให้เกิดการเปลี่ยนแปลงในพฤติกรรมของระบบ

ตัวอย่างการลงทะเบียนเรียนของนักศึกษา

สถานะเริ่มต้นEvent/การกระทำสถานะที่เปลี่ยนไปหมายเหตุ
ยังไม่เพิ่มวิชาลงตะกร้าเพิ่มวิชาลงตะกร้าวิชาอยู่ในตะกร้า
วิชาอยู่ในตะกร้ายืนยันการลงทะเบียนลงทะเบียนแล้ว
วิชาอยู่ในตะกร้าเอาวิชาออกจากตะกร้ายังไม่เพิ่มวิชาลงตะกร้า
ลงทะเบียนแล้ว--วิชานั้นหายไป 1 ที่นั่ง
ลงทะเบียนแล้วถอนรายวิชายังไม่เพิ่มวิชาลงตะกร้าวิชานั้นว่างเพิ่มอีก 1 ที่นั่ง

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

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


Decision Table Testing​

เป็นการนำเอาเงื่อนไขและการทำที่เป็นไปได้ ที่เกี่ยวข้องกันนำมาสร้างเป็นตารางความสัมพันธ์ ( Matrix Table ) เพื่อหากรณีที่เป็นไปได้ในการทดสอบ โดยจะใช้กับธุรกิจที่มีเงื่อนไขและการกระทำที่ไม่ซับซ้อน ซึ่งในตารางความสัมพันธ์จะประกอบด้วย 4 องค์ประกอบ

  • Condition Stubs เป็นเงืี่อนไขในธุรกิจ
  • Action Stubs เป็นการกระทำที่เกิิดขึ้นจากเงื่อนไข
  • Condition Entries หรือ Rules เป็นการกระทำที่เกิดขึ้นตามเงื่อนไข โดยจะระบุ เป็นค่า Yes ( Y)/No(N) หรือ True(T)/ False(F)
  • Action Entries เป็นการกระทำที่เกิดขึ้น ของแต่ละ Rules โดยอาจจะระบุเป็นข้อความผลลัพธ์ของระบบที่เกิดขึ้น เช่น Success/Un Success หรือเครื่องหมาย เป็นต้น

ตัวอย่าง เงื่อนไขการสมัครโครงการเรียนดี R1 ไม่มีสิทธิ์ R2 สาขาคณิตศาสตร์ GPA 2.75 - 4.00 R3 สาขาเคมี GPA 2.90 - 4.00 R4 สาขาวิทยาศาสตร์ GPA 3.00 - 4.00

Conditions and ActionR1R2R3R4
C1.เกรดเฉลี่ยน้อยกว่า 2.75C1.เกรดเฉลี่ยน้อยกว่า 2.75TFFF
C2.เกรดเฉลี่ยตั้งแต่ 2.75 แต่น้อยกว่า 2.90FTFF
C3.เกรดเฉลี่ยตั้งแต่ 2.90 แต่น้อยกว่า 3.00FTTF
C4.เกรดเฉลี่ยตั้งแต่ 3.00FTTT
A1.ไม่มีสิทธิ์สมัคร/
A2.มีสิทธิ์สมัคร///