Best Case ของการทำ Performance Testing นั้นควรจะเป็นส่วนสุดท้ายก่อนจะขึ้นระบบให้จบ UAT ก่อน
IT Insight: Performance Testing คืออะไร มี Test กี่ชนิดที่ต้องทำ? (EP.1)
บทความนี้เราจะพาคุณไปทำความรู้จักกับตำแหน่งงานไอทีที่น่าสนใจและมาแรงมากอีกตำแหน่งหนึ่งคือ Performance Testing จากบทสัมภาษณ์กับคุณอภิรักษ์ พรายแก้ว หรือ คุณนิว ปัจจุบันทำงานในตำแหน่ง Performance Test Lead ที่บริษัทยักษ์ใหญ่แห่งหนึ่งซึ่งมีชื่อเสียงด้านอีคอมเมิร์ซและธุรกิจค้าปลีก
คุณนิวมีประสบการณ์การทำ Test มากถึง 8 ปี โดยเริ่มต้นจากการทำงานในตำแหน่งด้าน Manual Tester และ Automate Tester ซึ่งเป็นการทดสอบ Function ของระบบ ต่อมาคุณนิวได้มีโอกาสทำงานอยู่ในทีม DevOps ซึ่งตรงนี้กลายเป็นจุดเปลี่ยนครั้งสำคัญของเส้นทางการทำงานและทำให้คุณนิวได้มารู้จักกับการทำ Performance Testing และทำให้เกิดความสนใจในสายนี้มากขึ้น จนได้เริ่มต้นเรียนรู้และฝึกฝนการทำ Testing ในด้านนี้มากขึ้น จนได้ย้ายมาทำงานในด้านนี้มากว่า 3 ปีแล้ว ดำเนินการสัมภาษณ์โดยคุณ Dollada Puangsod หรือคุณการ์ตูน ที่ปรึกษาและผู้เชี่ยวชาญด้านการสรรหาบุคลากรในสายงานไอทีจาก Cathcart Technology
เริ่มต้นเส้นทางการเป็น Performance Testing ได้อย่างไร
คุณนิวเริ่มจากการเป็น Manual Testing ก่อน โดยทำเป็นลักษณะของ Functional Test ที่ต้องมีการเขียน Test Case และ Execute Test โดยประกอบไปด้วย SIT หรือ UAT หรือบางส่วนก็ใช้ SQL ในการ Query ข้อมูล ต่อมาได้มีโอกาสทำงานในฝั่ง Automated Testing ซึ่งเป็นการ Test ในมุม Functional Test ซึ่งจะหนักไปทาง Scripting มากขึ้น โฟกัสการทำ Regression Test ที่เป็น SIT และต่อมาได้อยู่ในทีม DevOps ทำให้มีโอกาสได้ลองทำ Performance Testing แล้วจึงเกิดความสนใจ จนได้เข้ามาเริ่มทำงานตำแหน่งนี้เป็นต้นมา
แล้ว Performance Tester คืออะไร แตกต่างจาก QA อย่างไร
ปกติแล้ว การทำ Software QA จะมีการทดสอบทั้ง Functional Testing และ Non-Functional Testing โดย Functional Testing จะเป็นการทดสอบฟังก์ชั่นระบบว่าทำงานได้ถูกต้องมั้ย ตรงตาม Software Specification หรือ Software Requirement มั้ย งานหลักๆ คือ การหา Bug ของระบบ Functional แต่ในมุมมองของ Performance Testing จะเป็นการทดสอบแบบ Non-Functional Testing ความแตกต่างคือเราจะโฟกัสการดู Limitation และ Capacity ของระบบว่าหากมีผู้ใช้งานจำนวนมาก แล้วระบบจะมีการตอบสนองอย่างไร เช่น เร็วหรือช้า ล่มหรือไม่ล่ม เป็นต้น การทำ Performance Testing จะช่วยให้เราเห็นว่า ระบบมี Bottle Neck ตรงไหนบ้าง ซึ่งจะช่วยในการ Prediction ระบบ ป้องกันไม่ให้ระบบล่ม ทดสอบความ Stable และ Efficiency เมื่อนำไปใช้งานจริง เช่น เว็บล่มเพราะคนใช้งานเยอะ ก็ต้องมีการตรวจสอบกันว่ามีการติดขัดอยู่ที่ตรงไหนบ้าง
ยกตัวอย่าง Functional Testing และ Non- Functional Testing เหมือนหรือต่างกันอย่างไร
เช่น การ Log in หน้าเว็บ Functional Testing คือการทดสอบว่า Login ได้สำเร็จหรือเปล่า ใส่ Username หรือ Password ผิดไหม แต่ Non- Functional Testing คือการทดสอบว่าเวลาคน Log in ระบบตอบสนองอย่างไร Login ได้สำเร็จไหม ใช้เวลาในการ Login นานแค่ไหน ถ้า User ใช้งานจำนวนมาก เว็บจะค้างหรือล่มมั้ย การทำ Performance Testing ก็ควรจะทำ End-to-End ทั้งระบบ ไม่ว่าจะมี Third Party กี่ส่วน ก็ควรทำไปพร้อมๆ กัน เพื่อให้รู้ว่ามันเกิด Bottle Neck ที่ไหนที่ Fix ได้
หลักการทำงานคร่าวๆ ของ Performance Testing มี Life Cycle เป็นอย่างไร
Best Case ของการทำ Performance Testing นั้นควรจะเป็นส่วนสุดท้ายก่อนจะขึ้นระบบให้จบ UAT ก่อน ในความเป็นจริง Timeline ของโปรเจกต์ถูกบีบมาจากการ Delay ของ phares ก่อนหน้า ทำให้เราไม่เหลือเวลาในการทำ Performance Testing มากพอจะ Tuning ระบบ ในการทำงานจริงจึงต้องปรับ สามารถเริ่มทำ Performance testing ไปพร้อมกับ SIT และ UAT จะได้สามารถหาข้อจำกัดต่างๆ ไม่ว่าจะเป็น Design Infrastructure ของระบบ การใช้เทคโนโลยีที่ใช้ในการพัฒนาระบบ Hardware Sizing หรือ Bottle Neck ของระบบ
Test มีกี่ชนิดและมีอะไรบ้าง
หลักๆ มี 3 ชนิด คือ
-Load Testing
ทดสอบโดยการตั้ง Expected Workload ขึ้นมาจาก Current Stat หรือประมาณการจาก Peak Hour ว่ามี Users เข้าใช้งานระบบหรือ Transaction ประมาณเท่าไหร่ โดยกำหนดมาตรฐานของระบบ จำลองสถานการณ์ที่เกิดขึ้นช่วง Peak Hour โดยการดู Behaviour ของระบบ
-Stress Testing
จำลองผู้ใช้งานให้มากกว่า Expected Workload ที่ตั้งไว้ จุดประสงค์คือ ต้องการหา Limitation ของระบบ เมื่อระบบถึง Limitation แล้ว ดูว่า Behaviour ของระบบว่าเป็นยังไง มีการหน่วงหรือล่มหรือเปล่า สรุปก็คือดูจุดที่เครียดของระบบหากใส่ Limitation เอาไว้
-Endurannce Testing
คล้ายการทำ Load Testing จำลองสถานการณ์ช่วง Peak Hour โดยเอา Expected Workload ที่ใช้ทำ Load Testing เป็นตัวตั้ง เวลาทำ Load Testing จะมี Peak Hour อยู่ที่ 30 นาทีหรือ 1 ชั่วโมง เวลาทำ Load ก็อาจจะ Perform ในจำนวน Duration ที่ใกล้เคียงกับ Peak Hour เอาช่วงเวลา Peak Hour Perform เป็นเวลาที่นานมากขึ้น เป็น 10-12 ชั่วโมง เพื่อดู Behaviour ของระบบในระยะยาวว่าเกิด Memory Leak ถ้าใช้เวลามากๆ ระบบจะยังดีอยู่มั้ย
จริงๆ การ Test ทั้งสามชนิด จะเห็นตั้งแต่ Stress Testing แล้วว่าระบบไหวที่เท่าไหร่ ก็จะไม่เอาตัวเลขนั้นมาทำ Endurant เพราะจะทำให้ระบบล่มหรือ Error ได้
ฟัง Podcast สำหรับ Episode นี้ของเราได้ที่นี่ :
–Tech Hustle Thailand EP.14
–Captivate EP.14
Article by Thanisorn Boonchote