EP.1 เทคนิคการออกแบบกรณีการทดสอบ (Test Case) และ สถานการณ์การทดสอบ (Test Scenario)
สำหรับบทความนี้ เราจะขอมาแชร์และบอกเล่าประสบการณ์ที่ได้เรียนรู้จากการเข้ามาอยู่ที่ #WeLoveBug ในเรื่องของเทคนิคการออกแบบกรณีการทดสอบ (Test Case) และสถานการณ์การทดสอบ (Test Scenario) โดยใช้การออกแบบการทดสอบประเภท Black Box ซึ่งทั้งหมดในบทความนี้เป็นความเข้าใจส่วนตัวของเราเอง หากมีส่วนไหนที่ผิดพลาดไป ต้องขออภัยล่วงหน้าไว้ก่อนนะคะ
Black Box หรือ กล่องสีดำ
เป็นการทดสอบโดยที่ไม่จำเป็นต้องรู้ว่าโค้ดด้านในหรือระบบถูกออกแบบมาอย่างไร แต่เราจำเป็นต้องรู้ว่าภายในกล่องนี้มีเงื่อนไขที่จะถูกทดสอบอะไรอยู่บ้าง ซึ่งเป็นสิ่งที่เราจะต้องรู้ก่อนเป็นอันดับแรก และถัดมาคือผลลัพธ์ที่คาดหวัง (Expected Result) และข้อมูลที่ต้องส่งเข้าไป (Input) เป็นลำดับถัดมา
การออกแบบการทดสอบ (Test Design) จะมีส่วนประกอบหลัก คือ
ที่อยากได้ (Needs) → เงื่อนไขทางธุรกิจ → เทคนิคการออกแบบกรณีการทดสอบ → กรณีการทดสอบ (Test Case) → สถานการณ์การทดสอบ (Test Scenario) กรณี Success และ กรณี Alternative หรือที่ทุกคนรู้จักกันในชื่อ Unsuccess นั่นเอง
เปลี่ยนจากที่อยากได้ (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 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง
สามารถนำมาเขียนในรูปแบบภาพได้ ดังรูปนี้
Boundary Value Analysis (BVA)
เทคนิคการออกแบบนี้จะใช้ขอบเขตของข้อมูล 3 ส่วนด้วยกัน นั่นคือ ค่าที่เท่ากันกับตัวมันเอง ค่าที่มากกว่าตัวมันเอง และค่าที่น้อยกว่าตัวมันเอง ซึ่งจะใช้กับกลุ่มข้อมูลที่เป็นตัวเลขหรือเวลา
ตัวอย่างเช่น เงื่อนไข ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง
เงื่อนไขช่วงที่ 1 ลูกค้าประเภท VIP ซื้อหนังสือน้อยกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ไม่ฟรีค่าจัดส่ง
เงื่อนไขช่วงที่ 2 ลูกค้าประเภท VIP ซื้อหนังสือเท่ากันกับ 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง
เงื่อนไขช่วงที่ 3 ลูกค้าประเภท VIP ซื้อหนังสือมากกว่า 5 เล่ม → ผลลัพธ์ที่คาดหวัง คือ ฟรีค่าจัดส่ง
สามารถนำมาเขียนในรูปแบบภาพได้ ดังรูปนี้
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)
ตัวอย่างโจทย์ ระบบร้านขายหนังสือออนไลน์
เงื่อนไขที่ 1 ลูกค้าประเภท VIP ที่ซื้อหนังสือตามจำนวนที่กำหนด จะได้สิทธิ์ฟรีค่าจัดส่ง
เราจะใช้เทคนิค BVA โดยการแบ่งเป็น 3 ช่วงของข้อมูล ดังนี้
Test Case 1
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือ น้อยกว่า จำนวนที่กำหนด
ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง
Test Case 2
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือ เท่ากันกับ จำนวนที่กำหนด
ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง
Test Case 3
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือ มากกว่า จำนวนที่กำหนด
ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง
เงื่อนไขที่ 2 ลูกค้าประเภท VIP จะต้องซื้อหนังสือขั้นต่ำ 5 เล่มขึ้นไป ถึงจะได้สิทธิ์ฟรีค่าจัดส่ง
ใช้เทคนิค BVA เพราะเงื่อนไขนี้เป็นข้อมูลเกี่ยวกับค่าตัวเลข เราจะแบ่งช่วงของข้อมูลเป็น 3 ช่วง ดังนี้
Test Case 1
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือน้อยกว่า 5 เล่ม
ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 4 เล่ม
ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง
Test Case 2
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือเท่ากันกับ 5 เล่ม
ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 5 เล่ม
ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง
Test Case 3
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือมากกว่า 5 เล่ม
ข้อมูลที่ใช้ในการทดสอบ: ซื้อหนังสือ 6 เล่ม
ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง
เงื่อนไขที่ 3 ลูกค้าประเภททั่วไป หรือ ลูกค้าประเภท VIP ที่ไม่ได้ซื้อหนังสือตามที่กำหนด จะไม่ได้สิทธิ์ฟรีค่าจัดส่ง
ใช้เทคนิค EP เราจะกำหนดขั้นต่ำจำนวน 5 เล่ม จากเงื่อนไขที่ได้รับมาจากข้อก่อนหน้านี้ ซึ่งในเงื่อนไขนี้จะแบ่งเป็น 3 ช่วงของข้อมูล ดังนี้
Test Case 1
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภททั่วไป
ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง
Test Case 2
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ที่ไม่ได้ซื้อหนังสือตามที่กำหนด
ผลลัพธ์ที่คาดหวัง: ไม่ฟรีค่าจัดส่ง
Test Case 3
เงื่อนไขที่จะถูกทดสอบ: ลูกค้าประเภท VIP ซื้อหนังสือขั้นต่ำ 5 เล่ม
ผลลัพธ์ที่คาดหวัง: ฟรีค่าจัดส่ง
รอติดตามขั้นตอนการนำกรณีการทดสอบ (Test Case) มาร้อยเรียงให้เป็นสถานการณ์การทดสอบ (Test Scenario) และเทคนิคการออกแบบอื่น ๆ ได้ในบทความ EP2 ได้เลยค่าา
สำหรับสุดท้ายนี้ ขอบคุณทุกคนที่อ่านมาจนจบนะคะ หวังว่าบทความนี้จะมีประโยชน์แก่ทุกคนไม่มากก็น้อยนะคะ