Performance, Load, and Stress Testing
Scott Barber จาก searchsoftwarequality.techtarget.com ให้ความหมายของ performance, load, และ stress testing ไว้ดังนี้
- performance testing เป็นการค้นคว้าเชิงเทคนืคจากการทดลองเพื่อหาข้อมูลเกี่ยวกับคุณภาพของผลิตภัณฑ์หรือบริการที่เกี่ยวเนื่องกับความเร็ว ความสามารถในการรองรับการขยายตัว (scalability) และความเสถียร (stability) โดย performance testing เป็นคำที่มีความหมายรวมถึงคำอื่น ๆ ที่เกี่ยวข้องเช่น load และ stress testing
- load testing คือการทดสอบสมรรถนะที่เน้นการหาหรือตรวจสอบ (validate) คุณลักษณะด้านสมรรถนะของผลิตภัณฑ์ภายใต้สภาวะจำลองและขนาดของภาระที่*คาดว่า*จะเกิดขึ้นเมื่อนำไปใช้จริง
- stress testing คือการทดสอบสมรรถนะที่เน้นการหาหรือตรวจสอบ (validate) คุณลักษณะด้านสมรรถนะของผลิตภัณฑ์ภายใต้สภาวะจำลองและขนาดของภาระที่*เกินกว่าที่คาดว่า*จะเกิดขึ้นเมื่อนำไปใช้จริง รวมถึงในกรณีที่ตึงเครียด เช่น หน่วยความจำมีจำกัด เนื่อที่ไม่เพียงพอ หรือ ระบบล้มเหลว
Overview
เนื่องจาก load testing เน้นการทดสอบว่าระบบจะมีความเร็วมากน้อยแค่ไหน ภายใต้สภาวะและขนาดของภาระที่คาดว่าจะเกิดขึ้นจริง ดังนั้นผลลัพธ์หนึ่งที่ควรจะได้คือ ระยะเวลาการตอบสนองคำขอ (response time) โดยผู้ทดสอบต้องสามารถระบุสภาวะและขนาดของภาระให้ใกล้เคียงมากที่สุดกับสิ่งที่จะเกิดขึ้นจริง รวมทั้งผู้ทดสอบจำเป็นต้องติดตั้งระบบให้ใกล้เคียงกับการใช้งานจริง เช่น ทำการตั้ง proxy server หากมี proxy ในการใช้งานจริงเป็นต้น ขั้นตอนคร่าว ๆ ของการทำ load testing ก็คือ การหาสภาวะและขนาดของภาระที่จะเกิดขึ้นจริง พัฒนาแบบจำลองของสภาวะนั้น ๆ จากนั้นจึงนำสภาวะดังกล่าวไปทดสอบ โดยกำหนดภาระตามที่คาดว่าจะเกิดขึ้นจริง และวัดค่าต่าง ๆ ที่เกี่ยวข้องกับความเร็วของระบบ
- agenda รูปแบบการใช้งาน คือ ลักษณะที่ผู้ใช้ใช้งานระบบ เช่น ผู้ใช้อาจเข้าใช้ระบบเพื่อดูเว๊บเพจอย่างเดียว หรือ เพื่อเข้าไปศึกษาบทเรียนใดบทเรียนหนึ่งโดยเฉพาะ เป็นต้น
- mix ในความเป็นจริงนั้น ในช่วงเวลาหนึ่งอาจมีผู้ใช้งานระบบหลายคน และแต่ละคนอาจมีรูปแบบการใช้งานที่แตกต่างกันไป ผู้ทดสอบจึงต้องทำการกำหนดสถานการณ์ขึ้น เพื่อระบุว่าในการทดสอบจะมีผู้ใช้ในแต่ละรูปแบบการใช้งานเป็นสัดส่วนเท่าไร
เป็นเครื่องมือที่ใช้สำหรับทำ load testing ระบบที่ให้บริการผ่านเว๊บโดยมีตัวสร้างภาระ (load generator) ซึ่งจำลองเครื่องผู้ใช้ 1 เครื่อง ให้เป็นเครื่องผู้ใช้เสมือน (virtual client) หลาย ๆ เครื่องเพื่อสร้างคำขอและส่งไปยังระบบที่จะทดสอบ เครื่องมือนี้มี 2 รุ่นคือ รุ่น open source และรุ่น professional ซึ่งมี features มากกว่ารุ่น open source เครื่องมือนี้แบ่งเป็น 2 ส่วนคือ ส่วนพัฒนา (IDE) และส่วนควบคุม (console)
- agenda (console) or project (IDE): agenda ที่จะนำไปใช้ในการทดสอบนั้น จะถูกสร้างเป็น project ในส่วนพัฒนา
- template (console): template กำหนดสถานการณ์ที่จะเกิดระหว่างการทดสอบ ซึ่งจะรวม 2 ส่วนไว้ด้วยกัน คือ mix ซึ่งระบุสัดส่วนของผู้ใช้แต่ละรูปแบบ และ schedule ซึ่งระบุจำนวนภาระที่จะสร้างในแต่ละช่วงเวลาระหว่างการทดสอบ เช่นผู้ทดสอบอาจกำหนด template ในการทดสอบระบบว่า จะมีผู้ใช้เข้ามาเรียกดูเว็บเพจอย่างเดียวครึ่งหนึ่ง ส่วนอีกครึ่งหนึ่งใช้เพื่อศึกษาบทเรียน (ส่วนของ mix) โดยชั่วโมงแรกมีผู้ใช้ทั้งหมด 100 คนและเพิ่มเป็น 200 คนในชั่วโมงที่สอง (ส่วนของ schedule) เป็นต้น
Demo
- Creating an agenda (pattern)
- Recording usage
- Setting configurations
- Introducing variables
- Introducing random-line reads
- Creating a template
- Creating a mix
- Setting a schedule
- WebLoad Glossary2 (measures)
- round time ระยะเวลาในการปฏิบัติตาม agenda 1 รอบ
- hits per second จำนวนคำขอที่ส่งไปยังเครื่องเซิฟเวอร์ต่อวินาที
- response time ระยะเวลาในการตอบสนองคำขอ เช่นหากขอหน้าเว๊บเพจ ก็จะเป็นระยะเวลาตั้งแต่ส่งคำขอไปจนกระทั่งไดัรับข้อมูลของเว๊บเพจทั้งหมด