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

Nat Ketwadee
WeLoveBug dot Com
Published in
4 min readJul 17, 2023

สำหรับบทความนี้ เราจะขอมาแชร์และบอกเล่าประสบการณ์ที่ได้เรียนรู้จากการเข้ามาอยู่ที่ #WeLoveBug ในเรื่องของเทคนิคการออกแบบกรณีการทดสอบ (Test Case) และสถานการณ์การทดสอบ (Test Scenario) โดยใช้การออกแบบการทดสอบประเภท Black Box ซึ่งทั้งหมดในบทความนี้เป็นความเข้าใจส่วนตัวของเราเอง หากมีส่วนไหนที่ผิดพลาดไป ต้องขออภัยล่วงหน้าไว้ก่อนนะคะ

Black Box หรือ กล่องสีดำ

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

การออกแบบการทดสอบ (Test Design) จะมีส่วนประกอบหลัก คือ

ที่อยากได้ (Needs) → เงื่อนไขทางธุรกิจ → เทคนิคการออกแบบกรณีการทดสอบ → กรณีการทดสอบ (Test Case) → สถานการณ์การทดสอบ (Test Scenario) กรณี Success และ กรณี Alternative หรือที่ทุกคนรู้จักกันในชื่อ Unsuccess นั่นเอง

Photo by We Love Bug

เปลี่ยนจากที่อยากได้ (Needs) ให้ไปเป็น เงื่อนไขที่จะถูกทดสอบ หรือเงื่อนไขทางธุรกิจ

เราสามารถหาข้อมูลได้จากเอกสารความต้องการ (Requirements Document) เอกสาร Specifications หรืออาจจะถามจากผู้ที่มีประสบการณ์ในธุรกิจนั้น ๆ หรือจะเป็นผู้ที่เข้าใจใน Business Domain นั้นเป็นอย่างดีก็ได้เหมือนกัน ซึ่งในขั้นตอนนี้เราจะทำการวิเคราะห์เงื่อนไขทางธุรกิจออกมาเป็นข้อ ๆ

ตัวอย่างเช่น ระบบร้านขายหนังสือออนไลน์

  • ลูกค้าประเภท VIP ที่ซื้อหนังสือตามจำนวนที่กำหนด จะได้สิทธิ์ฟรีค่าจัดส่ง
  • ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง
  • ลูกค้าประเภททั่วไป หรือ ลูกค้าประเภท VIP ที่ไม่ได้ซื้อหนังสือตามที่กำหนด จะไม่ได้สิทธิ์ฟรีค่าจัดส่ง

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

ทำความรู้จักกับเทคนิคการออกแบบกรณีการทดสอบ (Test Design Techniques)

Equivalence Partitioning (EP)

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

ตัวอย่างเช่น เงื่อนไข ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง

เงื่อนไขช่วงที่ 1 ลูกค้าประเภท VIP ซื้อหนังสือน้อยกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ไม่ฟรีค่าจัดส่ง

เงื่อนไขช่วงที่ 2 ลูกค้าประเภท VIP ซื้อหนังสือมากกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง

สามารถนำมาเขียนในรูปแบบภาพได้ ดังรูปนี้

ตัวอย่างเทคนิคการออกแบบ Equivalence Partitioning (EP)

Boundary Value Analysis (BVA)

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

ตัวอย่างเช่น เงื่อนไข ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง

เงื่อนไขช่วงที่ 1 ลูกค้าประเภท VIP ซื้อหนังสือน้อยกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ไม่ฟรีค่าจัดส่ง

เงื่อนไขช่วงที่ 2 ลูกค้าประเภท VIP ซื้อหนังสือเท่ากันกับ 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง

เงื่อนไขช่วงที่ 3 ลูกค้าประเภท VIP ซื้อหนังสือมากกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง

สามารถนำมาเขียนในรูปแบบภาพได้ ดังรูปนี้

ตัวอย่างเทคนิคการออกแบบ Boundary Value Analysis (BVA)

State Transition

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

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

Use Cases

เทคนิคนี้จะเป็นการออกแบบกรณีการใช้งานของผู้ใช้งาน หรือพฤติกรรมของผู้ใช้งานที่เกิดขึ้นได้จริงในระบบ เราจะออกแบบความเป็นไปได้ทั้งหมดที่จะสามารถเกิดขึ้นได้กับระบบภายใต้เงื่อนไขทางธุรกิจนั้น ๆ เราจะใช้เทคนิคนี้กับเงื่อนไขที่ไม่สามารถแบ่งแยกออกเป็น 2 หรือ 3 ส่วนได้

ตัวอย่างเช่น เงื่อนไข การใช้แต้มสะสม 1 แต้ม จะเท่ากันกับส่วนลด 1.00 บาท

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

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

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

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

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

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

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

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

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

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

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

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

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

ตัวอย่างโจทย์ ระบบร้านขายหนังสือออนไลน์

เงื่อนไขที่ 1 ลูกค้าประเภท VIP ที่ซื้อหนังสือตามจำนวนที่กำหนด จะได้สิทธิ์ฟรีค่าจัดส่ง

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

Test Case 1

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

ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง

Test Case 2

เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือ เท่ากันกับ จำนวนที่กำหนด

ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง

Test Case 3

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

ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง

ลูกค้าประเภท VIP ที่ซื้อหนังสือตามจำนวนที่กำหนด จะได้สิทธิ์ฟรีค่าจัดส่ง

เงื่อนไขที่ 2 ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง

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

Test Case 1

เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือน้อยกว่า 5 เล่ม

ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 4 เล่ม

ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง

Test Case 2

เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือเท่ากันกับ 5 เล่ม

ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 5 เล่ม

ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง

Test Case 3

เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือมากกว่า 5 เล่ม

ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 6 เล่ม

ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง

ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง

เงื่อนไขที่ 3 ลูกค้าประเภททั่วไป หรือ ลูกค้าประเภท VIP ที่ไม่ได้ซื้อหนังสือตามที่กำหนด จะไม่ได้สิทธิ์ฟรีค่าจัดส่ง

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

Test Case 1

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

ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง

Test Case 2

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

ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง

Test Case 3

เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือขั้นต่ำ 5 เล่ม

ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง

ลูกค้าประเภททั่วไป หรือ ลูกค้าประเภท VIP ที่ไม่ได้ซื้อหนังสือตามที่กำหนด จะไม่ได้สิทธิ์ฟรีค่าจัดส่ง

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

สำหรับสุดท้ายนี้ ขอบคุณทุกคนที่อ่านมาจนจบนะคะ หวังว่าบทความนี้จะมีประโยชน์แก่ทุกคนไม่มากก็น้อยนะคะ

--

--

Nat Ketwadee
WeLoveBug dot Com

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