ไม่ว่าจะทำอะไร ไม่ว่าใครก็ไม่อยากให้มีข้อผิดพลาดใช่ไหมล่ะครับ? ในการเขียนโปรแกรมก็เช่นกัน เราอาจจะคิดว่าโปรแกรมที่เราเขียนนั้นไม่มีข้อผิดพลาดหรอก แต่ในความเป็นจริงนั้นอาจจะมีจุดบกพร่องที่เราคาดไม่อยู่ก็เป็นได้ หากโปรแกรมที่เราเขียนนั้นเป็นโปรแกรมเล็กๆ ผลกระทบในข้อผิดพลาดนั้นอาจจะเล็กตาม
แต่ถ้าเราไปเขียนโปรแกรมที่มีขนาดใหญ่ แล้วยิ่งต้องเขียนร่วมกับคนอื่นแล้วเนี่ยอาจจะทำให้เกิดผลกระทบที่รุนแรงมากจนเราไม่อยากจะนึกได้เลยทีเดียว การทดสอบหรือการเทส จึงได้เกิดขึ้นมาเพื่อมาค้นหาจุดบกพร่องที่อาจหลงเหลืออยู่ในโปรแกรมของเรา แต่หลายคนอาจจะสงสัยว่า แล้วเราควรจะเทสอะไรบ้างล่ะ? วันนี้เราจึงจะมาพูดถึงการเทสขั้นพื้นฐานด้วยจำลองการใส่ input data ที่ควรทดสอบใน case ต่างๆ
Base Case
แน่นอนว่าก่อนที่เราจะเทสด้วยเคสแปลกๆ เรามาเทสด้วยเคสปกติกันก่อน ซึ่งก็คือการเทส ด้วยการใส่ input ปกติ
Edge Case
การทดสอบด้วยการใส่ input ด้วยการใส่ค่าที่สูงสุดที่โปรแกรมของเราจะรับได้ โดยที่เราจะต้องไม่ลืมว่าค่าที่สูงที่สุดนั้น มีทั้งในทางลบและทางบวก
Corner Case
กรณีนี้จะเป็นการเทสที่คล้ายกับ edge case ที่ทดสอบด้วยค่าสูงสุดเหมือนกัน แต่จะต่างกันตรงที่ corner case จะใส่ค่าสูงสุดในหลายๆตัวแปร เพื่อดูการทำงานเมื่อหลายตัวแปรมีค่า input สูงที่สุดพร้อมกัน แต่ edge case จะพิจารณาเพียงตัวแปรเดียวเท่านั้น
Boundary Case
กรณีที่เราใส่ input ที่ไม่ใช่ค่าปกติที่สามารถใส่ได้ เพื่อตรวจสอบว่าในสถานการณ์ที่คาดไม่ถึง โปรแกรมของเราสามารถรับมือกับมันได้หรือไม่
ถ้ายังไม่เห็นภาพ
เพื่อให้เห็นภาพเราจะมายกตัวอย่างการนำ test case เหล่านี้มาเทสกับโปรแกรมแสดงผลของหลอดเลือดของตัวละครในเกม ที่สมมุติว่าตัวละครของเรามีแถบเลือดสีแดงสูงสุดอยู่ 100 และมานาสีน้ำเงิน 100 กรณีที่มีการขาดหายไปให้แทนที่สีนั้นๆด้วยสีเทา
base case: เมื่อโดนดาเมจ 40 หลอดเลือดก็จะต้องแสดงผลว่าเหลือเลือด 60 แล้วหลอดเลือดหลังจาก 60 ก็จะเป็นสีเทา
edge case: ตัวละครเลือด 100 ของเราโดนดาเมจ 100 พอดีทำให้เลือดเหลือ 0 หลอดเลือดจะต้องแสดงผลเป็น
สีเทาทั้งหมดหรือเปล่า
corner case: ตัวละครที่ตายแล้วเกิดใหม่ของเราถูกชุบขึ้นมาด้วยเลือดและมานาเต็มหลอด แถบเลือดก็ต้องจะเติมเต็มด้วยสีแดง และมานาเติมด้วยสีน้ำเงิน
boundary case: ตัวละครของคุณโดนดาเมจที่รุนแรงมาก 999!! แต่อ้าว! หลอดเลือดมันเกินไปเป็น -899 แถบสีเทาทะลุไปทางซ้ายไปไกลแล้ววว
ถ้าโปรแกรมของเราแสดงแบบนี้ก็ดูจะไม่สมเหตุสมผลเท่าไหร่ใช่ไหมครับ ตามปกติแล้วไม่ว่าดาเมจจะเกินขนาดไหนก็จะควรเป็น 0 หรือ หากตัวละครของเราถูกรักษาด้วยผลที่เกิน 100 ก็ไม่ควรแสดงผลเกินหลอดเลือดยกเว้นแต่จะมีการกำหนดกรณีพิเศษ หากเป็นการแสดงในเกมก็อาจจะสามารถแสดงผลแบบนี้แล้วสร้างความตลก แต่ในการทำงานจริงแล้วการทำงานผิดพลาดอาจส่งผลกระทบที่รุนแรงกว่านั้นเช่น การหารด้วยเลข 0 นั้นจะเกิด error หากเราไม่จัดการกับมันอาจทำให้โปรแกรมเราหยุดการทำงานได้ด้วยเคสเล็กๆแบบนี้ หรือกระทั้งทดสอบว่าระบบของเรารองรับคนได้สูงสุด 100 คนพร้อมกันแล้วโปรแกรมของเราทำงานได้จริงหรือเปล่า
มาถึงขั้นนี้แล้วถ้าใครลองนำ case ที่กล่าวมาไปลองกับโปรแกรมของตัวเองแล้วโปรแกรมทำงานได้อย่างที่ควรจะเป็นแล้วล่ะก็ ยินดีด้วย! โปรแกรมของเราทำงานได้อย่างเสถียรระดับหนึ่งแล้ว แต่ว่า case ที่ยกตัวอย่างมานี้เป็นเพียงส่วนหนึ่งในการทำ Testing รูปแบบ Blackbox Testing เท่านั้น ยังมีการทดสอบอีกมากที่ยังต้องทำการทดสอบ ..~~