การทดสอบการแช่คืออะไร? ความหมาย ความหมาย ตัวอย่าง
การทดสอบการแช่
การทดสอบการแช่ เป็นการทดสอบที่ไม่ใช้งานประเภทหนึ่งซึ่งใช้ในการวัดประสิทธิภาพของแอปพลิเคชันซอฟต์แวร์ภายใต้โหลดปริมาณมากเป็นระยะเวลานาน เป้าหมายของการทดสอบ Soak คือเพื่อให้แน่ใจว่าแอปพลิเคชันซอฟต์แวร์รองรับการใช้งานในปริมาณมากหรือไม่ และเพื่อตรวจสอบว่าจะเกิดอะไรขึ้นนอกเหนือความคาดหมายของการออกแบบ
ภาพด้านล่างแสดงรอบการทดสอบที่แสดงการทดสอบการแช่ในขั้นตอนใด (ประเภทของการทดสอบประสิทธิภาพ) ดำเนินการบนแอปพลิเคชัน
ในการทดสอบประเภทนี้ สิ่งที่ได้รับการตรวจสอบโดยทั่วไปคือการใช้หน่วยความจำโดยแอปพลิเคชันในระบบ กำลังทดสอบในระดับระบบ เพื่อค้นหาว่าระบบจะทนทานต่อการใช้งานในปริมาณที่สูงมากหรือไม่ และเพื่อดูว่าจะเกิดอะไรขึ้นนอกเหนือความคาดหมายในการออกแบบ
ทำไมต้อง Soak Test?
ระบบอาจทำงานได้ตามปกติเมื่อใช้เป็นเวลา 2 ชั่วโมง แต่เมื่อใช้งานระบบเดียวกันอย่างต่อเนื่องเป็นเวลา 10 ชั่วโมงหรือมากกว่านั้น ระบบอาจล้มเหลวหรือทำงานผิดปกติ/สุ่ม/อาจหยุดทำงาน การทดสอบ Soak Testing จะดำเนินการเพื่อคาดการณ์ความล้มเหลวดังกล่าว
ควรทำ Soak Test เมื่อใด?
การทดสอบแบบแช่ควรดำเนินการในสถานการณ์ต่อไปนี้: –
- ก่อนที่จะนำบิลด์ไปใช้งานกับไคลเอนต์ กล่าวคือ ก่อนที่จะเผยแพร่แอปพลิเคชันใดๆ บนแพลตฟอร์มเฉพาะ จะต้องผ่านการทดสอบโหลดชุดหนึ่งที่ประสบความสำเร็จในระดับปริมาณการรับส่งข้อมูลที่สูงหรือเทียบเท่า หลังจากนั้น ทำการทดสอบการแช่- ช่วยให้เรากำหนดวิธีเรียกใช้แอปพลิเคชันใด ๆ เป็นระยะเวลานาน หากพบปัญหาเช่นหน่วยความจำรั่ว/หน่วยความจำเสียหายในช่วงเวลาดังกล่าว เช่น เมื่อเปิด Soak ก็ควรรายงานทันที
- เวลาที่ดีที่สุดในการทดสอบการแช่คือช่วงสุดสัปดาห์ เนื่องจากแอปพลิเคชันจะต้องอยู่ในสถานะทำงานเป็นเวลามากกว่าหนึ่งวันหรือกลางคืน ขึ้นอยู่กับข้อจำกัดของสถานการณ์การทดสอบโดยสิ้นเชิง การทดสอบการแช่เป็นหนึ่งในข้อกำหนดการปฏิบัติตามข้อกำหนดที่สำคัญที่สุดซึ่งทุกบริษัทจำเป็นต้องปฏิบัติตามอย่างเคร่งครัด
กลยุทธ์การทดสอบการแช่
Long Session Soak Testing เป็นกลยุทธ์ที่ระบบอยู่ภายใต้โหลดเป็นเวลานาน
ตัวอย่างง่ายๆ คือ เมื่อผู้ใช้ล็อกอินเข้าสู่ระบบหลายชั่วโมงเพื่อดำเนินการธุรกรรมทางธุรกิจต่างๆ ด้วยวิธีนี้ ข้อมูลจำนวนมากจึงถูกสร้างขึ้น อาจมีภาระงานจำนวนมากบนเซิร์ฟเวอร์ระบบ/ฐานข้อมูล ซึ่งอาจส่งผลให้เซิร์ฟเวอร์ระบบ/ฐานข้อมูลหยุดชะงักหรือล่มได้
ภายใต้การทดสอบแช่เซสชันระยะยาว กิจกรรมหลายวัน (เช่น 30 วัน) จะดำเนินการในกรอบเวลาที่จำกัด (เช่น 2 วัน) จำนวนธุรกรรมในกรอบเวลาที่จำกัดนี้ควรตรงกันหรือเกินกว่ามูลค่าธุรกรรมหลายวัน ควรเน้นที่จำนวนธุรกรรมที่ประมวลผล ส่วนที่สำคัญที่สุดของ Soak Testing คือการตรวจสอบหน่วยความจำที่มีอยู่ใน CPU และจำนวนหน่วยความจำที่จะใช้งาน เราจำเป็นต้องบันทึกการใช้หน่วยความจำเมื่อเริ่มต้นและสิ้นสุดการทดสอบการแช่ หากจำเป็นให้ใช้หน่วยความจำของสิ่งอำนวยความสะดวกต่างๆ เช่น Java Virtual Machines ก็มีความสำคัญและจำเป็นต้องได้รับการตรวจสอบเช่นกัน
ด้านล่างนี้คือการตรวจสอบเพิ่มเติมบางประการที่ผู้ใช้/ผู้ทดสอบจำเป็นต้องทำก่อนที่จะเริ่มการทดสอบ Soak:
ก) ตรวจสอบการใช้ทรัพยากรฐานข้อมูล
b) ตรวจสอบการใช้ทรัพยากรเซิร์ฟเวอร์ (ยกเว้นการใช้งาน CPU)
c) การทดสอบ Soak ควรรันโดยผู้ใช้เห็นพ้องต้องกันตามความเป็นจริง
ลักษณะของการทดสอบการแช่
วิธีทดสอบแบบแช่มาตรฐานควรมีลักษณะดังต่อไปนี้: –
- ระยะเวลาของ Soak Test ส่วนใหญ่มักจะถูกกำหนดตามเวลาที่มีอยู่
- แอปพลิเคชันใด ๆ จะต้องทำงานโดยไม่มีการหยุดชะงักหากต้องใช้เวลาขยายออกไป
- ควรครอบคลุมสถานการณ์ทั้งหมดที่ผู้มีส่วนได้ส่วนเสียตกลงกัน
- โดยส่วนใหญ่ ทุกระบบจะมีช่วงเวลาในการบำรุงรักษาอย่างสม่ำเสมอ และเวลาระหว่างช่วงดังกล่าวจะเป็นตัวขับเคลื่อนสำคัญในการกำหนดขอบเขตของ Soak Test
ตัวอย่างการทดสอบการแช่
- ในกรณีโดเมนธนาคารเมื่อมีข้อมูลจากผู้ขายจำนวนมาก ผู้ทดสอบจะทำให้ระบบโหลดอย่างต่อเนื่องเป็นเวลา 70 ชั่วโมงถึง 150 ชั่วโมง เพื่อตรวจสอบว่าแอปพลิเคชันทำงานอย่างไรในช่วงโหลดนี้
- สมมติว่ามีการเข้าสู่ระบบ 33,000 ครั้ง ซึ่งหมายถึงกิจกรรมที่กินเวลาเจ็ดวันครึ่ง ในกรณีนี้ การทดสอบ Soak Test เป็นเวลา 60-70 ชั่วโมงสามารถเริ่มได้ภายในเย็นวันศุกร์ เวลาประมาณ 6 น. ซึ่งสามารถทำได้เสร็จสิ้นภายใน Monday เช้าเวลา 6 น. เฉพาะการทดสอบดังกล่าวเท่านั้นจึงจะสามารถสังเกตการเสื่อมประสิทธิภาพภายใต้สภาวะควบคุมได้
- ในกรณีของวิดีโอเกม โทรศัพท์มือถือ แอปพลิเคชัน ฯลฯ เกี่ยวข้องกับการออกจากเกมหรือแอปพลิเคชันในสถานะการทำงานเป็นเวลานาน ในโหมดการทำงานต่างๆ เช่น การทำงานเฉยๆ หยุดชั่วคราวที่หน้าจอชื่อเรื่อง และอื่นๆ เพื่อดูว่าแอปพลิเคชันนั้นสามารถรองรับโหลดที่คาดว่าจะเกิดขึ้นต่อเนื่องกันได้หรือไม่
ปัญหาทั่วไปที่พบในระหว่างการทดสอบ Soak
- การจัดสรรหน่วยความจำ (หน่วยความจำรั่วไหลซึ่งท้ายที่สุดจะส่งผลให้เกิดวิกฤตหน่วยความจำหรือข้อผิดพลาดในการปัดเศษที่ปรากฏเมื่อเวลาผ่านไปเท่านั้น)
- การใช้ทรัพยากรฐานข้อมูล (ความล้มเหลวในการปิดเคอร์เซอร์ฐานข้อมูลภายใต้เงื่อนไขบางประการ ซึ่งจะส่งผลให้ระบบทั้งหมดหยุดทำงานในที่สุด)
- นอกจากนี้ยังสามารถนำไปสู่การลดประสิทธิภาพได้ กล่าวคือ เพื่อให้แน่ใจว่าเวลาตอบสนองหลังจากกิจกรรมต่อเนื่องเป็นเวลานานจะดีเท่ากับตอนเริ่มต้นการทดสอบ
- ความล้มเหลวในการปิดการเชื่อมต่อระหว่างชั้นของระบบหลายชั้นภายใต้สถานการณ์บางอย่าง ซึ่งอาจทำให้โมดูลบางส่วนหรือทั้งหมดของระบบหยุดชะงัก
- การลดลงอย่างค่อยเป็นค่อยไปของเวลาตอบสนองของฟังก์ชันบางอย่างเนื่องจากโครงสร้างข้อมูลภายในมีประสิทธิภาพน้อยลงในระหว่างการทดสอบที่ยาวนาน
สรุป
- In วิศวกรรมซอฟต์แวร์, การทดสอบการแช่จะดำเนินการเพื่อตรวจสอบว่าแอปพลิเคชันที่ทดสอบสามารถรองรับโหลดต่อเนื่องได้หรือไม่
- เป็นการทดสอบประสิทธิภาพประเภทหนึ่ง
- ช่วยให้ระบบพิจารณาว่าจะสามารถรองรับปริมาณการใช้งานที่สูงมากได้หรือไม่
- ในการทดสอบประเภทนี้ สิ่งที่ได้รับการตรวจสอบโดยทั่วไปคือการใช้หน่วยความจำโดยแอปพลิเคชันในระบบ
- การตรวจสอบที่ผู้ใช้/ผู้ทดสอบต้องทำก่อนที่จะเริ่ม Soak Testing
- ตรวจสอบการใช้ทรัพยากรฐานข้อมูล
- ตรวจสอบการใช้ทรัพยากรเซิร์ฟเวอร์ (เช่น การใช้งาน CPU)
- การทดสอบ Soak ควรทำงานโดยผู้ใช้เห็นพ้องต้องกันตามความเป็นจริง