การทดสอบเชิงลบคืออะไร? กรณีทดสอบพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทดสอบเชิงลบจะตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานอย่างไรเมื่อได้รับข้อมูลอินพุตหรือสภาวะการทำงานที่ไม่คาดคิด เพื่อให้ผลิตภัณฑ์สามารถลดระดับการทำงานลงได้อย่างราบรื่น แทนที่จะเกิดการขัดข้อง ข้อมูลเสียหาย หรือเปิดเผยช่องโหว่ด้านความปลอดภัย
การทดสอบเชิงลบ
การทดสอบเชิงลบ การทดสอบเชิงลบ (Negative Testing) คือการทดสอบซอฟต์แวร์ประเภทหนึ่งที่ใช้ตรวจสอบแอปพลิเคชันซอฟต์แวร์กับข้อมูลอินพุตและเงื่อนไขที่ไม่คาดคิด ข้อมูลหรือเงื่อนไขที่ไม่คาดคิดมีตั้งแต่ชนิดข้อมูลที่ไม่ถูกต้องในช่องกรอกข้อมูลแบบง่ายๆ ไปจนถึงการโจมตีโดยเจตนาจากแฮกเกอร์ จุดประสงค์ของการทดสอบเชิงลบคือเพื่อป้องกันไม่ให้แอปพลิเคชันล่มเมื่อป้อนข้อมูลที่ไม่ถูกต้อง และเพื่อปรับปรุงคุณภาพและความเสถียรของผลิตภัณฑ์
การทดสอบเชิงบวกเพียงอย่างเดียวพิสูจน์ได้เพียงว่าระบบทำงานได้ภายใต้สภาวะปกติ การทดสอบเชิงลบยืนยันว่าระบบเดียวกันนี้สามารถรับมือกับสภาวะผิดปกติได้ ซึ่งเป็นสิ่งที่ผลิตภัณฑ์ที่ทนต่อความผิดพลาดจำเป็นต้องมี
ตัวอย่างการทดสอบเชิงลบ
ลิฟต์เป็นตัวอย่างที่มักใช้ในการอธิบายการทดสอบเชิงลบ เนื่องจากพฤติกรรมปกติและพฤติกรรมเมื่อเกิดความผิดพลาดนั้นสามารถจินตนาการได้ง่าย
หลักการทำงานของลิฟต์นั้นคุ้นเคยกันดีอยู่แล้ว คือ การกดหมายเลขชั้นจะทำให้ลิฟต์ไปที่ชั้นนั้น และประตูจะเปิดโดยอัตโนมัติเมื่อลิฟต์ถึงชั้นที่กำหนด
สถานการณ์เชิงลบที่อาจเกิดขึ้นจากมาตรการดังกล่าวมีดังต่อไปนี้ โดยเปรียบเทียบกับสมมติฐานที่ว่าการตรวจหาเชื้อในเชิงบวกจะทำให้มาตรการนั้นมีประสิทธิภาพมากขึ้น
| การทดสอบเชิงลบ | การทดสอบเชิงบวก |
|---|---|
| จะเกิดอะไรขึ้นหากจำนวนคน (น้ำหนัก) เกินขีดจำกัดที่กำหนด? | สมมติว่าจะมีเพียงจำนวนคนที่ระบุไว้เท่านั้นที่จะขึ้นลิฟต์ |
| จะเกิดอะไรขึ้นหากมีคนสูบบุหรี่หรือก่อไฟไหม้ภายในลิฟต์? | สมมติว่าไม่มีควันหรือไฟไหม้ภายในลิฟต์ |
| ถ้าไฟดับระหว่างการใช้งานจะเกิดอะไรขึ้น? | สมมติว่าจะไม่มีไฟฟ้าดับขณะที่ลิฟต์กำลังทำงาน |
กรณีทั้งหมดนี้อยู่ภายใต้ผลการตรวจที่เป็นลบ อย่างไรก็ตาม ไม่มีกรณีใดที่จะรับประกันได้ว่าจะไม่เกิดขึ้น ดังนั้นจึงต้องควบคุมสถานการณ์ในแต่ละกรณี
สมมติว่าไม่เคยมีการตรวจสอบสภาพน้ำหนักเกิน และลิฟต์ทำงานผิดปกติเมื่อบรรทุกน้ำหนักเกิน ช่องโหว่เพียงเล็กน้อยนี้ก็ส่งผลเสียต่อความน่าเชื่อถือของระบบ และอาจเป็นอันตรายถึงชีวิตได้ นี่คือความหมายของการทดสอบเชิงลบในทางปฏิบัติ และเหตุผลว่าทำไมมันถึงสำคัญ
ซอฟต์แวร์ก็ทำงานในลักษณะเดียวกัน การทดสอบเชิงลบคือการจงใจเบี่ยงเบนจากขั้นตอนการทำงานปกติ ลองพิจารณาแบบฟอร์มลงทะเบียน
| การทดสอบเชิงลบ | การทดสอบเชิงบวก |
|---|---|
| กรอกอีเมลที่ไม่ถูกต้องลงในช่องอีเมล | เฉพาะอีเมลที่ถูกต้องเท่านั้นที่จะถูกป้อนลงในช่องอีเมล |
| ป้อนหมายเลขโทรศัพท์ที่ไม่ถูกต้อง เช่น ตัวอักษร ในช่องหมายเลขโทรศัพท์ | ช่องตัวเลขต้องป้อนเฉพาะตัวเลขเท่านั้น |
| อัปโหลดภาพที่มีขนาดเกินขอบเขตที่กำหนด | เฉพาะภาพที่มีขนาดอยู่ในขอบเขตที่กำหนดเท่านั้นที่จะถูกอัปโหลด |
| อัปโหลดไฟล์ที่ไม่ถูกต้อง เช่น XML or SQL ไฟล์ในช่องอัปโหลดรูปภาพ | อนุญาตให้อัปโหลดเฉพาะไฟล์ภาพที่มีรูปแบบถูกต้อง เช่น .jpg หรือ .png เท่านั้น |
ในกรณีเชิงลบเหล่านี้ ระบบจะต้องยังคงทำงานได้ต่อไป เช่น หากพิมพ์อักขระลงในช่องตัวเลข แอปพลิเคชันจะไม่สามารถประมวลผลข้อมูลที่ไม่คาดคิดได้ และอาจทำให้โปรแกรมหยุดทำงาน ที่แย่กว่านั้นคือ... การแทรก SQL การใช้สตริงซ้ำในฟิลด์เดียวกันอาจลบข้อมูลในฐานข้อมูลได้ ความเสียหายในลักษณะนี้เป็นสาเหตุที่ทำให้มีการทดสอบเชิงลบเกิดขึ้น
ทำไมต้องทำการทดสอบเชิงลบ?
การทดสอบนั้นใช้เวลาและเงิน ดังนั้นการตัดสินใจว่าจะทดสอบอะไร อย่างไร และมากน้อยแค่ไหนจึงมีความสำคัญ เหตุผลในการจัดสรรงบประมาณส่วนหนึ่งสำหรับการทดสอบเชิงลบนั้นดูแตกต่างกันไปในมุมมองของทั้งสองฝ่ายของโครงการ
มุมมององค์กร
การส่งมอบผลิตภัณฑ์ที่มีคุณภาพดีให้แก่ลูกค้าเป็นความรับผิดชอบขององค์กร และการทดสอบเชิงลบก็เป็นส่วนหนึ่งของภาระผูกพันนั้น นอกจากนี้ยังเป็นหลักฐานที่แสดงให้เห็นว่าองค์กรได้ทำทุกอย่างที่สมเหตุสมผลเพื่อป้องกันความล้มเหลว แม้ว่าจะไม่มีระบบใดที่ปราศจากข้อผิดพลาดโดยสิ้นเชิงก็ตาม
ผลกระทบคือปัจจัยชี้ขาด เว็บไซต์อีคอมเมิร์ซอาจผ่านการทดสอบเชิงบวกทุกอย่าง แต่ก็ยังอาจมีช่องโหว่ที่ทำให้ผู้โจมตีสามารถใช้คำสั่ง SQL injection และลบข้อมูลทั้งหมดได้ ซึ่งเป็นการละเมิดความปลอดภัยที่ร้ายแรง และมีเพียงการทดสอบเชิงลบเท่านั้นที่ใช้ตรวจสอบช่องโหว่นี้ได้
แอปพลิเคชันที่เปิดให้สาธารณะใช้งาน โดยเฉพาะเว็บไซต์ แทบจะไม่มีการควบคุมใดๆ เกี่ยวกับการใช้งานของผู้เข้าชม ดังนั้น การทดสอบเชิงลบจึงเป็นวิธีเดียวที่จะยืนยันได้ว่าการใช้งานที่ผิดปกติได้รับการครอบคลุมและควบคุมไว้แล้ว เช่นเดียวกับผู้ใช้งานที่เป็นอันตราย ผู้โจมตีมักมองหาโอกาสที่จะเจาะระบบ และสถานการณ์การแฮ็กควรอยู่ในขอบเขตของการทดสอบเชิงลบอย่างเต็มที่
มุมมองลูกค้า
ลูกค้าคาดหวังผลิตภัณฑ์ที่ปราศจากช่องโหว่ และการทดสอบเชิงลบคือสิ่งที่สนับสนุนความคาดหวังนั้น สำหรับผลิตภัณฑ์ที่มีความอ่อนไหวสูง เช่น อีคอมเมิร์ซ หรือการซื้อขายหุ้นออนไลน์ การทดสอบความปลอดภัย และการตรวจหาเชื้อที่เป็นลบนั้นเป็นข้อบังคับ ไม่ใช่ทางเลือก
สิ่งที่ลูกค้ากังวลจริงๆ มีเพียงอย่างเดียวคือเรื่องค่าใช้จ่าย เมื่อวิเคราะห์ผลกระทบจากความล้มเหลวแล้ว ลูกค้าจะสามารถตัดสินใจได้ว่าควรดำเนินการทดสอบเชิงลบไปไกลแค่ไหน
วิธีการตรวจหาเชื้อแล้วผลเป็นลบ
การทดสอบเชิงลบเริ่มต้นด้วยการพิจารณาข้อมูลป้อนเข้าทั้งหมดที่แอปพลิเคชันสามารถรับได้จริง ไม่ใช่เฉพาะข้อมูลป้อนเข้าที่ควรจะได้รับเท่านั้น ข้อมูลป้อนเข้าแต่ละอย่างควรอยู่ใน... กรณีทดสอบ แม้ว่าจะเป็นวิธีใช้งานฟีเจอร์ที่ผิดอย่างเห็นได้ชัดก็ตาม ช่องอีเมลจะถูกทดสอบด้วยทุกอย่างที่ไม่ใช่ที่อยู่อีเมลที่ถูกต้อง และตัวควบคุมการอัปโหลดรูปภาพจะถูกทดสอบด้วยทุกประเภทไฟล์ที่ไม่ใช่รูปภาพ
รายการข้อมูลป้อนเข้าที่ไม่ถูกต้องนั้นแทบจะไม่มีที่สิ้นสุด ดังนั้นจึงต้องจัดลำดับความสำคัญของกรณีทดสอบเชิงลบ สำหรับช่องรูปภาพที่รับเฉพาะไฟล์ .png เท่านั้น ไฟล์ที่อาจอัปโหลดได้นั้นรวมถึง .jpeg, .xml, .xls และอื่นๆ อีกมากมาย ไฟล์ XML หรือ SQL มีผลกระทบมากกว่าไฟล์ .jpeg มาก ดังนั้นกรณีเหล่านั้นจึงถูกดำเนินการก่อน การจัดลำดับกรณีตามผลกระทบก่อนดำเนินการคือสิ่งที่ทำให้การทดสอบเชิงลบมีราคาไม่แพง
กรณีทดสอบเชิงลบส่วนใหญ่มักเกิดจากเทคนิคการออกแบบที่เป็นที่ยอมรับกันอยู่แล้ว มากกว่าที่จะมาจากการด้นสด:
- ค่าขอบเขต: ใช้ค่าที่อยู่นอกช่วงค่าที่ถูกต้องทันที เช่น 0 และ 101 สำหรับช่องข้อมูลที่ยอมรับค่าตั้งแต่ 1 ถึง 100
- คลาสเทียบเท่าที่ไม่ถูกต้อง: เลือกตัวแทนหนึ่งรายจากแต่ละประเภทของข้อมูลที่ถูกปฏิเสธ เช่น ตัวอักษรในช่องตัวเลข
- การคาดเดาข้อผิดพลาด: ใช้ประสบการณ์จากข้อบกพร่องในอดีตเพื่อกำหนดเป้าหมายอินพุตที่น่าจะทำให้ฟีเจอร์ประเภทนี้ทำงานผิดพลาดมากที่สุด
- ข้อมูลที่ผิดรูปแบบและเป็นอันตราย: แท็กสคริปต์, ส่วนของคำสั่ง SQL และเพย์โหลดขนาดใหญ่เกินไปที่ตรวจสอบความถูกต้องและการจัดการด้านความปลอดภัย
- การทดสอบฝอย: สร้างข้อมูลป้อนเข้าแบบสุ่มหรือแบบกลายพันธุ์จำนวนมากโดยอัตโนมัติ เพื่อค้นหาข้อผิดพลาดที่ไม่ได้รับการจัดการ
- การไหลของข้อมูลถูกขัดจังหวะ: ยกเลิก รีเฟรช หมดเวลา หรือขาดการเชื่อมต่อระหว่างการทำธุรกรรม
ไม่ว่าเทคนิคใดจะทำให้เกิดกรณีดังกล่าว ผลลัพธ์ที่คาดหวังจะต้องถูกบันทึกไว้เป็นความล้มเหลวที่ควบคุมได้และอ่านได้ เช่น ข้อความตรวจสอบความถูกต้อง การอัปโหลดที่ถูกปฏิเสธ หรือการย้อนกลับที่ราบรื่น และไม่ควรบันทึกเพียงแค่ว่า "ระบบไม่ล่ม"
ข้อดีและข้อเสียของการตรวจแล้วไม่พบเชื้อ
เช่นเดียวกับเทคนิคการทดสอบอื่นๆ การทดสอบเชิงลบก็มีข้อดีและข้อเสีย ซึ่งขึ้นอยู่กับสถานที่ เวลา และปริมาณที่นำไปใช้
ข้อดีของการทดสอบเชิงลบ
- มันช่วยปกป้องคุณภาพของผลิตภัณฑ์โดยตรง เพราะผลิตภัณฑ์ที่มีคุณภาพดีคือผลิตภัณฑ์ที่ไม่มีช่องโหว่ที่สามารถถูกโจมตีได้
- มันช่วยขยายขอบเขตการครอบคลุม ข้อมูลที่ไม่ถูกต้องอาจเข้าสู่ระบบที่ใช้งานอยู่โดยตั้งใจหรือไม่ตั้งใจ ดังนั้นกรณีที่ไม่ถูกต้องจึงต้องเกิดขึ้นควบคู่ไปกับกรณีที่ถูกต้องเพื่อให้การครอบคลุมมีความหมาย
- ช่วยเพิ่มความมั่นใจให้กับลูกค้าก่อนการเปิดตัวผลิตภัณฑ์อย่างเป็นทางการ
- มันเผยให้เห็นข้อบกพร่องที่การทดสอบเชิงบวกไม่สามารถเข้าถึงได้ในเชิงโครงสร้าง เช่น ข้อผิดพลาดที่ไม่ได้จัดการ และการตรวจสอบความถูกต้องของข้อมูลนำเข้าที่ไม่รัดกุม
ข้อเสียของการทดสอบเชิงลบ
- ในบางสถานการณ์ การทดสอบแบบนั้นเป็นการเสียเวลาและพลังงานโดยเปล่าประโยชน์ หากแอปพลิเคชันถูกสร้างขึ้นสำหรับผู้ใช้เพียงคนเดียว การทดสอบกรณีผู้ใช้พร้อมกัน 100 คนนั้นไม่คุ้มค่า ดังนั้นการเลือกเงื่อนไขที่เหมาะสมจึงมีความสำคัญ และบางระบบแทบไม่ต้องมีการทดสอบเชิงลบเลยด้วยซ้ำ
- การออกแบบเคสเหล่านี้จำเป็นต้องใช้ผู้ที่มีทักษะและประสบการณ์
- จากมุมมองของลูกค้าแล้ว มันจะเพิ่มต้นทุนและอาจทำให้การเปิดตัวล่าช้าได้
- มันแข่งขันกันในเรื่องความพยายาม ทีมที่ทุ่มเงินไปกับการตรวจหาเชื้อเชิงลบมาก อาจลงทุนกับการตรวจหาเชื้อเชิงบวกน้อยเกินไปในที่สุด
