บทช่วยสอนการทดสอบประสิทธิภาพ

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

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

  • กำหนดขอบเขตงานตั้งแต่เนิ่นๆ: ก่อนออกแบบการทดสอบประสิทธิภาพใดๆ ควรระบุสภาพแวดล้อมการทดสอบ เกณฑ์การยอมรับ และสถานการณ์สำคัญต่างๆ ให้ชัดเจน
  • 🔄 ครอบคลุมการทดสอบทุกประเภท: ใช้การทดสอบด้านภาระ ความเครียด ความทนทาน แรงกระแทก ปริมาตร และความสามารถในการปรับขนาด เพื่อประเมินรูปแบบความล้มเหลวที่แตกต่างกัน
  • 📊 ตรวจสอบตัวชี้วัดที่สำคัญอย่างสม่ำเสมอ: Track คือค่าการใช้งานโปรเซสเซอร์ การใช้หน่วยความจำ เวลาตอบสนอง ปริมาณงาน และอัตราข้อผิดพลาดระหว่างการทดสอบแต่ละครั้ง
  • ⚠️ วิเคราะห์ปัญหาคอขวดอย่างเป็นระบบ: ตรวจสอบการใช้งาน CPU, หน่วยความจำ, เครือข่าย และดิสก์ เพื่อระบุสาเหตุหลักของประสิทธิภาพการทำงานที่ลดลง
  • 🔁 ทำซ้ำและทดสอบใหม่: วิเคราะห์ผลลัพธ์ ปรับแต่งการตั้งค่า และทดสอบซ้ำจนกว่าประสิทธิภาพจะตรงตามเกณฑ์การยอมรับที่กำหนดไว้ล่วงหน้า
  • 🤖 ใช้ประโยชน์จากการวิเคราะห์ที่ขับเคลื่อนด้วย AI: ใช้ปัญญาประดิษฐ์เพื่อการตรวจจับความผิดปกติเชิงคาดการณ์ การวิเคราะห์สาเหตุหลักโดยอัตโนมัติ และการจัดสรรทรัพยากรอย่างชาญฉลาดระหว่างการทดสอบ

บทช่วยสอนการทดสอบประสิทธิภาพ

การทดสอบประสิทธิภาพคืออะไร?

การทดสอบประสิทธิภาพ เป็นกระบวนการทดสอบซอฟต์แวร์ที่ใช้สำหรับทดสอบความเร็ว เวลาตอบสนอง ความเสถียร ความน่าเชื่อถือ ความสามารถในการปรับขนาด และการใช้ทรัพยากรของแอปพลิเคชันซอฟต์แวร์ภายใต้ปริมาณงานเฉพาะ วัตถุประสงค์หลักของการทดสอบประสิทธิภาพคือเพื่อระบุและขจัดปัญหาคอขวดของประสิทธิภาพในแอปพลิเคชันซอฟต์แวร์ เป็นส่วนย่อยของวิศวกรรมประสิทธิภาพและยังเป็นที่รู้จักในชื่อ “การทดสอบที่สมบูรณ์แบบ”.

การทดสอบประสิทธิภาพมุ่งเน้นไปที่การตรวจสอบ:

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

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

เยือน PFLB

เหตุใดการทดสอบประสิทธิภาพจึงมีความสำคัญ

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

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

เหตุใดการทดสอบประสิทธิภาพจึงมีความสำคัญ

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

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

ตามข้อมูลของ Dunn & Bradstreet บริษัทในกลุ่ม Fortune 59 จำนวน 500% ประสบปัญหาระบบหยุดทำงานประมาณ 1.6 ชั่วโมงต่อสัปดาห์ หากพิจารณาว่าบริษัทในกลุ่ม Fortune 500 ที่มีพนักงานอย่างน้อย 10,000 คน จ่ายเงิน 56 ดอลลาร์ต่อชั่วโมง ค่าใช้จ่ายด้านแรงงานสำหรับระบบหยุดทำงานขององค์กรดังกล่าวจะอยู่ที่ 896,000 ดอลลาร์ต่อสัปดาห์ ซึ่งคิดเป็นเงินมากกว่า 46 ล้านดอลลาร์ต่อปี

เพียง การหยุดทำงาน 5 นาที of Google.com (19 ส.ค. 13) คาดว่าจะทำให้ยักษ์ใหญ่ด้านการค้นหาต้องเสียค่าใช้จ่ายมากถึง... $ 545,000

คาดการณ์ว่าบริษัทต่างๆ สูญเสียยอดขายไปมูลค่า... $ 1100 ต่อวินาที เนื่องจากล่าสุด Amazon บริการเว็บหยุดทำงาน

ดังนั้นการทดสอบประสิทธิภาพจึงมีความสำคัญ เพื่อช่วยคุณในกระบวนการนี้ โปรดดูรายชื่อนี้ เครื่องมือทดสอบประสิทธิภาพ.

ประเภทของการทดสอบประสิทธิภาพ

การทดสอบประสิทธิภาพซอฟต์แวร์มีอยู่ 6 ประเภทหลักๆ ดังที่อธิบายไว้ด้านล่างนี้

  • การทดสอบโหลด – ตรวจสอบความสามารถของแอปพลิเคชันในการทำงานภายใต้โหลดของผู้ใช้ที่คาดการณ์ไว้ วัตถุประสงค์คือเพื่อระบุปัญหาคอขวดของประสิทธิภาพก่อนที่แอปพลิเคชันซอฟต์แวร์จะเผยแพร่
  • การทดสอบความเครียด - เกี่ยวข้องกับการทดสอบแอปพลิเคชันภายใต้ปริมาณงานที่รุนแรงเพื่อดูว่าแอปพลิเคชันจัดการกับปริมาณข้อมูลสูงหรือการประมวลผลข้อมูลอย่างไร วัตถุประสงค์คือเพื่อระบุจุดแตกหักของแอปพลิเคชัน
  • การทดสอบความทนทาน – การตรวจสอบนี้ทำขึ้นเพื่อให้แน่ใจว่าซอฟต์แวร์สามารถรองรับภาระงานที่คาดหวังได้ในระยะยาว ช่วยตรวจจับปัญหาต่างๆ เช่น การรั่วไหลของหน่วยความจำและการหมดลงของทรัพยากร ซึ่งมักปรากฏให้เห็นเฉพาะในระหว่างการใช้งานอย่างต่อเนื่องเท่านั้น
  • การทดสอบขัดขวาง – การทดสอบนี้เป็นการทดสอบการตอบสนองของซอฟต์แวร์ต่อปริมาณการใช้งานที่เพิ่มขึ้นอย่างรวดเร็วและฉับพลันจากผู้ใช้งาน ซึ่งแตกต่างจากการทดสอบความเครียด (stress testing) การทดสอบแบบนี้จะเน้นเฉพาะวิธีการที่ระบบจัดการและฟื้นตัวจากปริมาณการใช้งานที่เพิ่มขึ้นอย่างรวดเร็วและฉับพลันในช่วงเวลาสั้นๆ
  • การทดสอบปริมาณ – กระบวนการนี้เกี่ยวข้องกับการป้อนข้อมูลจำนวนมากเข้าไปในฐานข้อมูลและตรวจสอบพฤติกรรมโดยรวมของระบบซอฟต์แวร์ โดยมีวัตถุประสงค์เพื่อตรวจสอบประสิทธิภาพของแอปพลิเคชันซอฟต์แวร์ภายใต้ปริมาณข้อมูลในฐานข้อมูลที่แตกต่างกัน
  • การทดสอบความสามารถในการขยายขนาด – ช่วยประเมินประสิทธิภาพของแอปพลิเคชันซอฟต์แวร์ในการ "ปรับขนาด" เพื่อรองรับปริมาณผู้ใช้งานที่เพิ่มขึ้น และช่วยในการวางแผนการเพิ่มขีดความสามารถให้กับระบบซอฟต์แวร์ของคุณ

ปัญหาด้านประสิทธิภาพทั่วไป

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

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

วิธีทำการทดสอบประสิทธิภาพ

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

ด้านล่างนี้คือขั้นตอนทั่วไปในการดำเนินการทดสอบประสิทธิภาพ

กระบวนการทดสอบประสิทธิภาพ
กระบวนการทดสอบประสิทธิภาพ

ขั้นตอนที่ 1) ระบุสภาพแวดล้อมการทดสอบของคุณ

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

ขั้นตอนที่ 2) ระบุเกณฑ์การยอมรับผลการปฏิบัติงาน

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

ขั้นตอนที่ 3) การทดสอบประสิทธิภาพการวางแผนและการออกแบบ

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

ขั้นตอนที่ 4) กำหนดค่าสภาพแวดล้อมการทดสอบ

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

ขั้นตอนที่ 5) ใช้การออกแบบการทดสอบ

สร้างการทดสอบประสิทธิภาพตามการออกแบบการทดสอบของคุณ

ขั้นตอนที่ 6) เรียกใช้การทดสอบ

ดำเนินการและติดตามการทดสอบ

ขั้นตอนที่ 7) วิเคราะห์ ปรับแต่ง และทดสอบซ้ำ

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

ตัวชี้วัดการทดสอบประสิทธิภาพ: พารามิเตอร์ที่ได้รับการตรวจสอบ

พารามิเตอร์พื้นฐานที่ได้รับการตรวจสอบระหว่างการทดสอบประสิทธิภาพ ได้แก่:

ตัวชี้วัดและพารามิเตอร์การทดสอบประสิทธิภาพ

  • การใช้งานโปรเซสเซอร์ – ระยะเวลาที่โปรเซสเซอร์ใช้ในการประมวลผลเธรดที่ไม่ใช่เธรดว่าง
  • การใช้หน่วยความจำ – ปริมาณหน่วยความจำทางกายภาพที่พร้อมใช้งานสำหรับกระบวนการต่างๆ บนคอมพิวเตอร์
  • เวลาดิสก์ – ระยะเวลาที่ดิสก์กำลังประมวลผลคำขออ่านหรือเขียนข้อมูล
  • แบนด์วิดธ์ – แสดงบิตต่อวินาทีที่ใช้โดยอินเทอร์เฟซเครือข่าย
  • ไบต์ส่วนตัว – จำนวนไบต์ที่กระบวนการหนึ่งจัดสรรไว้ซึ่งไม่สามารถแบ่งปันให้กับกระบวนการอื่นได้ ค่าเหล่านี้ใช้ในการวัดการรั่วไหลของหน่วยความจำและการใช้งาน
  • หน่วยความจำที่มุ่งมั่น – ปริมาณหน่วยความจำเสมือนที่ใช้ไป
  • หน้าหน่วยความจำ/วินาที – จำนวนหน้าที่เขียนหรืออ่านจากดิสก์เพื่อแก้ไขข้อผิดพลาดในการเข้าถึงหน่วยความจำ (hard page fault) ข้อผิดพลาดในการเข้าถึงหน่วยความจำเกิดขึ้นเมื่อมีการเรียกใช้โค้ดที่ไม่ใช่ส่วนหนึ่งของชุดการทำงานปัจจุบันจากที่อื่นและดึงข้อมูลจากดิสก์
  • หน้าผิดพลาด/วินาที – อัตราโดยรวมที่หน้าข้อผิดพลาดได้รับการประมวลผลโดยโปรเซสเซอร์ ซึ่งเกิดขึ้นเมื่อกระบวนการต้องการโค้ดจากภายนอกชุดการทำงานของตน
  • CPU ขัดจังหวะต่อวินาที – จำนวนเฉลี่ยของสัญญาณขัดจังหวะจากฮาร์ดแวร์ที่โปรเซสเซอร์ได้รับและประมวลผลในแต่ละวินาที
  • ความยาวคิวดิสก์ – จำนวนเฉลี่ยของคำขออ่านและเขียนที่อยู่ในคิวสำหรับดิสก์ที่เลือกในช่วงเวลาสุ่มตัวอย่าง
  • ความยาวคิวเอาต์พุตเครือข่าย – ความยาวของคิวแพ็กเก็ตขาออกในหน่วยแพ็กเก็ต หากมากกว่าสองแพ็กเก็ต แสดงว่าเกิดความล่าช้า และจำเป็นต้องแก้ไขปัญหาคอขวดนี้
  • จำนวนไบต์เครือข่ายทั้งหมดต่อวินาที – อัตราการส่งและรับไบต์บนอินเทอร์เฟซ รวมถึงอักขระกำหนดกรอบ
  • เวลาตอบสนอง - ระยะเวลาตั้งแต่ผู้ใช้ป้อนคำขอจนกระทั่งได้รับอักขระตัวแรกของการตอบกลับ
  • ปริมาณงาน – อัตราที่คอมพิวเตอร์หรือเครือข่ายรับคำขอต่อวินาที
  • ปริมาณการรวมการเชื่อมต่อ – จำนวนคำขอของผู้ใช้ที่ตรงตามการเชื่อมต่อแบบพูล ยิ่งคำขอพบโดยการเชื่อมต่อในพูลมากเท่าใด ประสิทธิภาพก็จะยิ่งดีขึ้นเท่านั้น
  • เซสชันที่ใช้งานสูงสุด – จำนวนเซสชันสูงสุดที่สามารถใช้งานได้พร้อมกัน
  • อัตราส่วนการเข้าชม – สิ่งนี้เกี่ยวข้องกับจำนวนของ SQL คำสั่งที่จัดการโดยข้อมูลแคชแทนการดำเนินการ I/O ที่มีค่าใช้จ่ายสูง นี่เป็นจุดเริ่มต้นที่ดีในการแก้ไขปัญหาคอขวด
  • จำนวนการเข้าชมต่อวินาที – จำนวนการเข้าชมเว็บเซิร์ฟเวอร์ในแต่ละวินาทีของการทดสอบโหลด
  • ส่วนการย้อนกลับ – จำนวนข้อมูลที่สามารถย้อนกลับได้ตลอดเวลา
  • ล็อคฐานข้อมูล – การล็อคตารางและฐานข้อมูลจำเป็นต้องได้รับการตรวจสอบและปรับแต่งอย่างระมัดระวัง
  • การรอคอยสูงสุด – ตรวจสอบเพื่อพิจารณาว่าสามารถลดระยะเวลารอคอยลงได้มากน้อยเพียงใด เมื่อต้องจัดการกับความเร็วในการดึงข้อมูลจากหน่วยความจำ
  • จำนวนเธรด – สุขภาพของแอปพลิเคชันสามารถวัดได้จากจำนวนเธรดที่กำลังทำงานและเปิดใช้งานอยู่ในขณะนี้
  • เก็บขยะ – กระบวนการนี้เกี่ยวข้องกับการส่งหน่วยความจำที่ไม่ได้ใช้งานกลับคืนสู่ระบบ จำเป็นต้องมีการตรวจสอบประสิทธิภาพของกระบวนการเก็บขยะอย่างสม่ำเสมอ

ตัวอย่างกรณีทดสอบการทดสอบประสิทธิภาพ

ด้านล่างนี้คือตัวอย่างกรณีทดสอบประสิทธิภาพ:

  • กรณีทดสอบ 01: ตรวจสอบว่าเวลาตอบสนองไม่เกิน 4 วินาที เมื่อมีผู้ใช้งาน 1000 คนเข้าถึงเว็บไซต์พร้อมกัน
  • กรณีทดสอบ 02: ตรวจสอบว่าเวลาตอบสนองของแอปพลิเคชันภายใต้ภาระงานหนักอยู่ในช่วงที่ยอมรับได้หรือไม่ เมื่อการเชื่อมต่อเครือข่ายช้า
  • กรณีทดสอบ 03: ตรวจสอบจำนวนผู้ใช้สูงสุดที่แอปพลิเคชันสามารถรองรับได้ก่อนที่จะล่ม
  • กรณีทดสอบ 04: ตรวจสอบเวลาการทำงานของฐานข้อมูลเมื่อมีการอ่าน/เขียน 500 รายการพร้อมกัน
  • กรณีทดสอบ 05: ตรวจสอบการใช้งาน CPU และหน่วยความจำของแอปพลิเคชันและเซิร์ฟเวอร์ฐานข้อมูลภายใต้สภาวะโหลดสูงสุด
  • กรณีทดสอบ 06: ตรวจสอบเวลาตอบสนองของการใช้งานภายใต้สภาวะโหลดต่ำ ปกติ ปานกลาง และหนัก

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

แนวปฏิบัติที่ดีที่สุดสำหรับการทดสอบประสิทธิภาพ

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

  • จำลองสภาพแวดล้อมการผลิต – ตั้งค่าการทดสอบของคุณให้เหมือนกับสภาพแวดล้อมการใช้งานจริงให้มากที่สุด ความแตกต่างของเวอร์ชันฮาร์ดแวร์หรือซอฟต์แวร์อาจทำให้ได้ผลลัพธ์ที่คลาดเคลื่อนได้
  • ออกแบบสถานการณ์ทดสอบที่สมจริง – สร้างกรณีทดสอบที่จำลองพฤติกรรมของผู้ใช้จริง รวมถึงเวลาคิดและส่วนผสมของธุรกรรมที่เกิดขึ้นพร้อมกัน
  • ใช้ตัวชี้วัดแบบเปอร์เซ็นไทล์ – ควรพิจารณาเวลาตอบสนองจากเปอร์เซ็นไทล์ที่ 90 และ 95 แทนที่จะใช้ค่าเฉลี่ยเพียงอย่างเดียว เพราะเปอร์เซ็นไทล์จะช่วยให้เห็นความล่าช้าในช่วงท้ายของการตอบสนอง ซึ่งค่าเฉลี่ยอาจปกปิดไว้ได้
  • ตรวจสอบตั้งแต่เนิ่นๆ และอย่างต่อเนื่อง – บูรณาการการทดสอบประสิทธิภาพเข้ากับกระบวนการ CI/CD แทนที่จะมองว่าเป็นกิจกรรมในขั้นตอนสุดท้าย
  • เอกสารและผลลัพธ์พื้นฐาน – บันทึกผลลัพธ์จากการทดสอบทุกครั้ง การเปรียบเทียบผลลัพธ์ใหม่กับค่าพื้นฐานจะช่วยให้ตรวจจับความผิดพลาดที่เกิดขึ้นระหว่างเวอร์ชันต่างๆ ได้ง่ายขึ้น

AI กำลังเปลี่ยนแปลงการทดสอบประสิทธิภาพอย่างไร

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

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

เครื่องมือทดสอบประสิทธิภาพ

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

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

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

การทดสอบประสิทธิภาพจะดำเนินการเฉพาะกับระบบที่ใช้สถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์เท่านั้น แอปพลิเคชันที่ไม่ใช้สถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์ เช่น เครื่องคิดเลขแบบตั้งโต๊ะ ไม่จำเป็นต้องทำการทดสอบประสิทธิภาพ

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

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

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

การทดสอบประสิทธิภาพควรเริ่มต้นตั้งแต่เนิ่นๆ และดำเนินการอย่างต่อเนื่อง การบูรณาการเข้ากับกระบวนการ CI/CD จะช่วยให้ทีมตรวจจับข้อผิดพลาดได้ในแต่ละบิลด์ แทนที่จะค้นพบปัญหาเฉพาะก่อนการปล่อยเวอร์ชันใหม่เท่านั้น

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

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

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

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