การทดสอบที่ไม่ใช้งาน

⚡ สรุปอย่างชาญฉลาด

การทดสอบที่ไม่เกี่ยวข้องกับการทำงาน (Non Functional Testing) ตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานได้ถูกต้องอย่างไรในแง่ของความน่าเชื่อถือ การใช้งานง่าย ความปลอดภัย ความสามารถในการขยายขนาด และคุณลักษณะด้านคุณภาพอื่นๆ คู่มือนี้จะอธิบายถึงวัตถุประสงค์ พารามิเตอร์ ลักษณะเฉพาะ ประเภทการทดสอบทั่วไป และตัวอย่างกรณีทดสอบเชิงปฏิบัติที่ทีมประกันคุณภาพใช้

  • 🎯 เน้นคุณภาพ: การทดสอบที่ไม่เกี่ยวข้องกับการทำงานหลัก จะวัดว่าระบบทำงานอย่างไร มากกว่าที่จะวัดว่าระบบทำอะไรได้บ้าง
  • 📏 เกณฑ์ที่วัดได้: ทุกข้อกำหนดมีการระบุเป็นปริมาณอย่างชัดเจน จึงขจัดคำพูดที่เป็นอัตวิสัย เช่น ดี ดีกว่า หรือดีที่สุด ออกไป
  • 🔐 พารามิเตอร์ที่สำคัญ: ความปลอดภัย ความน่าเชื่อถือ ความสามารถในการขยายขนาด ความใช้งานง่าย และความสามารถในการพกพา เป็นคุณสมบัติหลักในการตรวจสอบที่ไม่เกี่ยวข้องกับการทำงานโดยตรง
  • 🧪 ประเภทการทดสอบที่หลากหลาย: การทดสอบประสิทธิภาพ การรับน้ำหนัก ความเครียด การฟื้นตัว และความเข้ากันได้ แต่ละการทดสอบจะประเมินความเสี่ยงด้านคุณภาพที่เฉพาะเจาะจง
  • 📊 ผลกระทบทางธุรกิจ: การทดสอบที่ไม่เกี่ยวข้องกับการทำงานอย่างมีประสิทธิภาพจะช่วยลดต้นทุนการผลิต เวลาหยุดทำงาน และความไม่พึงพอใจของลูกค้าในแต่ละเวอร์ชัน

การทดสอบที่ไม่ใช้งาน

การทดสอบแบบไม่ใช้งานคืออะไร?

การทดสอบแบบไม่ใช้งาน การทดสอบเชิงโครงสร้าง (Progressive Testing: EQ) คือการทดสอบซอฟต์แวร์ประเภทหนึ่งที่ตรวจสอบคุณสมบัติที่ไม่เกี่ยวข้องกับการทำงานของแอปพลิเคชัน เช่น ประสิทธิภาพ การใช้งาน ความน่าเชื่อถือ และคุณลักษณะด้านคุณภาพอื่นๆ ที่คล้ายคลึงกัน โดยจะประเมินความพร้อมของระบบตามเกณฑ์ที่การทดสอบเชิงฟังก์ชันไม่เคยกล่าวถึง เพื่อให้มั่นใจว่าแอปพลิเคชันตรงตามความคาดหวังขององค์กรภายใต้สภาวะการใช้งานจริง

ตัวอย่างคลาสสิกของการทดสอบที่ไม่เกี่ยวข้องกับการทำงานคือ การวัดจำนวนผู้ใช้พร้อมกันที่สามารถล็อกอินเข้าสู่แอปพลิเคชันได้โดยที่ประสิทธิภาพไม่ลดลง การทดสอบที่ไม่เกี่ยวข้องกับการทำงานมีความสำคัญไม่แพ้การทดสอบที่เกี่ยวข้องกับการทำงาน เพราะส่งผลโดยตรงต่อความพึงพอใจของลูกค้าและภาพลักษณ์โดยรวมของผลิตภัณฑ์

แผนภาพภาพรวมของการทดสอบที่ไม่ใช่เชิงฟังก์ชันคืออะไร

วัตถุประสงค์ของการทดสอบที่ไม่เกี่ยวข้องกับการทำงาน

การทดสอบที่ไม่เกี่ยวข้องกับการทำงานจริงนั้นดำเนินการเพื่อปรับปรุงคุณภาพโดยรวมและอายุการใช้งานของผลิตภัณฑ์ วัตถุประสงค์หลักได้แก่:

  • เพิ่มความสะดวกในการใช้งาน ประสิทธิภาพ การบำรุงรักษา และการพกพาของผลิตภัณฑ์
  • ลดความเสี่ยงในการผลิตและต้นทุนที่เกี่ยวข้องกับข้อบกพร่องที่ใช้งานไม่ได้
  • ปรับปรุงวิธีการติดตั้ง ตั้งค่า ใช้งาน บริหารจัดการ และตรวจสอบผลิตภัณฑ์ให้เหมาะสมที่สุด
  • รวบรวมข้อมูลการวัดและตัวชี้วัดเพื่อการวิจัยและพัฒนาภายในองค์กร
  • เพื่อเพิ่มความเข้าใจเกี่ยวกับพฤติกรรมของผลิตภัณฑ์และเทคโนโลยีที่ใช้

ลักษณะของการทดสอบที่ไม่เกี่ยวข้องกับการทำงาน

ลักษณะต่อไปนี้กำหนดวิธีการวางแผนและดำเนินการทดสอบที่ไม่เกี่ยวข้องกับการทำงาน:

  • มันต้องวัดผลได้ ไม่เปิดโอกาสให้มีการบรรยายแบบอัตวิสัย เช่น ดี ดีกว่า หรือดีที่สุด
  • โดยปกติแล้ว ตัวเลขที่แน่นอนมักจะยังไม่ทราบในขั้นตอนเริ่มต้นของการกำหนดความต้องการ
  • ต้องจัดลำดับความสำคัญของข้อกำหนดต่างๆ โดยเริ่มจากการแก้ไขปัญหาในพื้นที่ที่มีความเสี่ยงสูงที่สุดก่อน
  • คุณลักษณะด้านคุณภาพจะถูกระบุอย่างแม่นยำในระหว่างขั้นตอนการพัฒนาซอฟต์แวร์

พารามิเตอร์การทดสอบที่ไม่เกี่ยวข้องกับการทำงาน

โดยทั่วไปจะใช้พารามิเตอร์ 11 ข้อในการกำหนดขอบเขตของการทดสอบที่ไม่เกี่ยวข้องกับฟังก์ชันการทำงาน:

  1. การรักษาความปลอดภัย: วัดระดับการป้องกันระบบจากการโจมตีโดยเจตนาและโดยไม่ตั้งใจจากแหล่งภายในหรือภายนอก ตรวจสอบผ่านการทดสอบความปลอดภัย
  2. ความน่าเชื่อถือ: ระดับที่ระบบสามารถปฏิบัติหน้าที่ตามที่กำหนดได้อย่างต่อเนื่องโดยไม่เกิดข้อผิดพลาด ตรวจสอบได้ผ่านการทดสอบความน่าเชื่อถือ
  3. ความอยู่รอด: ยืนยันว่าระบบยังคงทำงานและกู้คืนตัวเองได้หลังจากเกิดความล้มเหลว ผ่านการตรวจสอบโดยการทดสอบการกู้คืนแล้ว
  4. สถานะ: กำหนดระดับที่ผู้ใช้สามารถพึ่งพาระบบได้ในระหว่างการใช้งาน ตรวจสอบแล้วผ่านการทดสอบความเสถียร
  5. การใช้งาน: ความง่ายในการเรียนรู้ การใช้งาน การเตรียมข้อมูลป้อนเข้า และการรับข้อมูลจากระบบของผู้ใช้ ได้รับการตรวจสอบแล้วผ่านการทดสอบการใช้งาน (Usability Testing)
  6. scalability: ระดับที่แอปพลิเคชันซอฟต์แวร์สามารถขยายขีดความสามารถในการประมวลผลเพื่อตอบสนองความต้องการที่เพิ่มขึ้น ตรวจสอบผ่านการทดสอบความสามารถในการขยายขนาด (Scalability Testing)
  7. ความสามารถในการทำงานร่วมกัน: ตรวจสอบว่าระบบซอฟต์แวร์หนึ่งเชื่อมต่อกับระบบซอฟต์แวร์อื่นอย่างไร โดยผ่านการทดสอบความสามารถในการทำงานร่วมกัน (Interoperability Testing)
  8. ประสิทธิภาพ: ขอบเขตที่ระบบสามารถรองรับความจุ ปริมาณ และเวลาตอบสนองภายใต้ภาระงาน
  9. ความยืดหยุ่น: แอปพลิเคชันนี้สามารถทำงานได้ง่ายบนฮาร์ดแวร์และซอฟต์แวร์ที่มีการกำหนดค่าแตกต่างกัน เช่น RAM หรือ CPU ที่มีสเปคต่างกัน
  10. Portability: ความยืดหยุ่นของซอฟต์แวร์ในการย้ายจากสภาพแวดล้อมฮาร์ดแวร์หรือซอฟต์แวร์ปัจจุบันไปยังสภาพแวดล้อมอื่น
  11. การนำกลับมาใช้ใหม่: หมายถึงส่วนหนึ่งของระบบซอฟต์แวร์ที่สามารถปรับเปลี่ยนเพื่อนำไปใช้ในแอปพลิเคชันอื่นได้

แผนภาพพารามิเตอร์การทดสอบที่ไม่ใช้งาน

ประเภทของการทดสอบซอฟต์แวร์

โดยทั่วไป การทดสอบซอฟต์แวร์สามารถแบ่งออกได้เป็น 3 ประเภทหลักๆ ดังนี้:

  • การทดสอบสมรรถนะ
  • การทดสอบแบบไม่ใช้งาน
  • การทดสอบการบำรุงรักษา

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

รายการประเภทการทดสอบนี้ไม่ได้ครอบคลุมทั้งหมด — มีประเภทการทดสอบที่แตกต่างกันมากกว่า 100 ประเภท และประเภทใหม่ๆ ก็ยังคงเกิดขึ้นอย่างต่อเนื่อง ไม่ใช่ทุกประเภทจะเหมาะสมกับทุกโครงการ ขอบเขตขึ้นอยู่กับลักษณะ โปรไฟล์ความเสี่ยง และความซับซ้อนของแอปพลิเคชันที่กำลังทดสอบ

ประเภทของการทดสอบที่ไม่ใช่หน้าที่

ประเภทของการทดสอบที่ไม่เกี่ยวข้องกับการทำงานที่ทีม QA ดำเนินการบ่อยที่สุด ได้แก่:

  • การทดสอบประสิทธิภาพ
  • โหลดการทดสอบ
  • การทดสอบความล้มเหลว
  • การทดสอบความเข้ากันได้
  • การทดสอบการใช้งาน
  • การทดสอบความเครียด
  • การทดสอบการบำรุงรักษา
  • การทดสอบความสามารถในการปรับขนาด
  • การทดสอบปริมาตร
  • การทดสอบความปลอดภัย
  • การทดสอบการกู้คืนความเสียหาย
  • การทดสอบการปฏิบัติตามข้อกำหนด
  • การทดสอบความสามารถในการพกพา
  • การทดสอบประสิทธิภาพ
  • การทดสอบความน่าเชื่อถือ
  • การทดสอบพื้นฐาน
  • การทดสอบความทนทาน
  • การทดสอบเอกสาร
  • การทดสอบการกู้คืน
  • การทดสอบความเป็นสากล

ตัวอย่างกรณีทดสอบสำหรับการทดสอบที่ไม่เกี่ยวข้องกับการทำงานหลัก

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการเขียนกรณีทดสอบที่ไม่เกี่ยวข้องกับการทำงานในโครงการจริง:

กรณีทดสอบ # กรณีทดสอบ โดเมน
1 เวลาในการโหลดแอปพลิเคชันไม่ควรเกิน 5 วินาที เมื่อมีผู้ใช้งานเข้าใช้งานพร้อมกันสูงสุด 1000 คน การทดสอบประสิทธิภาพ
2 ซอฟต์แวร์ควรสามารถติดตั้งได้บนทุกเวอร์ชันที่รองรับ Windows และ macOS. การทดสอบความเข้ากันได้
3 รูปภาพทั้งหมดบนเว็บไซต์ควรมีแท็ก alt ที่อธิบายรายละเอียด การทดสอบการช่วยสำหรับการเข้าถึง

คำถามที่พบบ่อย

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

เครื่องมือยอดนิยมได้แก่ JMeter และใช้ LoadRunner เพื่อเพิ่มประสิทธิภาพ Selenium เพื่อการทำงานอัตโนมัติที่ช่วยเพิ่มความสะดวกในการใช้งาน Burp Suite และ OWASP ZAP สำหรับด้านความปลอดภัย และ BrowserStack สำหรับด้านความเข้ากันได้ เครื่องมือแต่ละอย่างมุ่งเป้าไปที่ส่วนที่ไม่ใช่ฟังก์ชันการทำงานเฉพาะที่ทีม QA ต้องการวัดผล

การทดสอบที่ไม่เกี่ยวข้องกับการทำงานควรเริ่มต้นเมื่อระบบมีความเสถียรในด้านการทำงานแล้ว และก่อนการเปิดตัวเวอร์ชันหลัก การทดสอบประสิทธิภาพ ความปลอดภัย และความน่าเชื่อถือมักจะถูกกำหนดไว้ในขั้นตอนการทดสอบช่วงท้ายๆ แต่กลยุทธ์แบบ "shift-left" ส่งเสริมให้ดำเนินการทดสอบเหล่านี้ตั้งแต่เนิ่นๆ ควบคู่ไปกับการพัฒนา

แต่ละพารามิเตอร์จะถูกวัดเทียบกับเกณฑ์ที่สามารถกำหนดปริมาณได้ ประสิทธิภาพวัดจากเวลาตอบสนองและปริมาณงาน ความปลอดภัยวัดจากจำนวนช่องโหว่ ความสามารถในการใช้งานวัดจากอัตราการทำงานให้เสร็จสมบูรณ์ และความน่าเชื่อถือวัดจากเวลาเฉลี่ยระหว่างความล้มเหลว Numbers แทนที่ความคิดเห็นส่วนตัว

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

AI สร้างโปรไฟล์การโหลด ทำนายปัญหาคอขวดด้านประสิทธิภาพ จัดลำดับความสำคัญของกรณีทดสอบที่มีความเสี่ยง และวิเคราะห์ข้อมูลบันทึกโดยอัตโนมัติ แพลตฟอร์มที่ขับเคลื่อนด้วย AI ช่วยลดเวลาในการดำเนินการและตรวจพบข้อผิดพลาดได้เร็วขึ้นping ทีม QA จะขยายขอบเขตการครอบคลุมที่ไม่เกี่ยวข้องกับฟังก์ชันการทำงานในแต่ละเวอร์ชัน

ไม่เลย AI ช่วยเร่งความเร็วในการสแกน การสร้างค่าพื้นฐาน และการตรวจจับความผิดปกติ แต่ผู้ทดสอบผู้เชี่ยวชาญยังคงตีความผลลัพธ์ ตรวจสอบความถูกต้องของห่วงโซ่การโจมตี และออกแบบสถานการณ์ทดสอบ AI ช่วยเสริมการตัดสินใจของมนุษย์ในการทดสอบที่ไม่เกี่ยวข้องกับฟังก์ชันการทำงานมากกว่าที่จะมาแทนที่วิศวกร QA ที่มีประสบการณ์

สรุปโพสต์นี้ด้วย: