feature-image-performance-testing-in-action
feature-image-performance-testing-in-action

หลังจากเราเรียนรู้เรื่องของ Web Performance Testing มาแล้ว เราก็มาเรียนรู้การใช้งานจริงๆ ดีกว่าว่าเวลาเราทําเทสจริงๆต้องคิดอะไรบ้าง โดยในบทความนี้จะพูดถึงสองอย่างนี้

  • Load Testing
  • Stress Testing

โดยเราจะเน้นเรื่องของหลักการณ์คิดว่าเราต้องคิดอย่างไรเตรียมอะไรบ้างในการทําเทส

Load Testing

เป้าหมายของการทํา load testing ก็คือ the maximum operating capacity of an application นั้นเอง หรือพูดง่ายๆว่า application เรารับโหลดได้มากน้อยแค่ไหน เพื่อหา bottleneck อีกด้วย (normal condition และ anticipated peak load)

นึกภาพกราฟจํานวนคนค่อยๆเข้ามาเรื่อยๆจาก 100 เป็น 200 เป็น 300 จนถึง 400 กราฟเริ่มหักหัวลง จุดที่ 400 users นั้นแหละคือจุดที่ Limit ของ application แล้วหลังจากนั้น response time น่าจะเพิ่มมากขึ้นเรื่อยๆนั้นเอง

load-testing-technique
load-testing-technique

Step 1 – Identify Performance Acceptance Criteria

ขั้นตอนนี้ถือเป็นจุดสําคัญมากเลยในการทำเทส คือเราต้องมาตั้ง objective ของการทําเทสก่อน ไม่ใช่ว่างยิงไปโดยไม่ได้วัดผลอะไร โดยปกติแล้ว เราก็จะมี 5 อย่างที่เราคิดไว้คือ

  1. Response Time เช่น Product Catalog ต้องแสดงผลใน 3 วินาที
  2. Throughput เช่น System ต้องรองรับ 100 transactions ต่อวินาที
  3. Resource Utilization เช่น Resources ของ Application ที่ใช้งานไป เช่น processor, memory, disk input-output (I/O) และ network I/O
  4. Maximum user load เช่น มี user กี่คนที่สามารถใช้งานได้บน hardware หรือ resources ที่เรามี
  5. Business-related metrics หรือเราจะเอาข้อมูลจากฝั่ง Business มาช่วยเรากําหรด Criteria ด้วยก็ได้ เช่น จํานวนการสั่งซื้อสินค้าในช่วงเวลาโปรโมชั่นเป็นต้น

Step 2 – Identify Key Scenarios

หลังจากเรากําหรด criteria แล้วว่า application/server ต้อง Support ได้ขนาดไหน เราก็มา Identify all the scenarios ที่จะเกิดขึ้นบน Web Application จะได้นํามาใช้การทําเทส และ ลงรายละเอียดปลีกย่อยต่างๆ เช่น

ถ้าเรามี Scenario ของ “Place an Order” ที่จะทําการ Load test มันก็จะสามารถแยกย่อยตาม scene เล็กๆพวกนี้ได้อีก

  • Log on the application
  • Browse the product catalog
  • Search for a specific product
  • Add items to the shopping cart
  • Validate credit card details and place an order

ซึ่งพวกนี้ก็จะเป็นจุดที่เราต้องเขียนเทสไล่ตามสเต็ปลงไปๆเรื่อยจนหมด แต่นี้อาจจะเป็นจุดที่มีการใช้ resources ระดับทั่วไป เรายังต้องนึกจุดที่มันเป็น extremely use ด้วย เช่นช่วงโปรโมชั่นจะมีการเข้ามาดูสินค้าพิเศษเฉพาะทางเป็น เพราะจุด peak พวกนั้นจะมีเรื่องของการใช้ resources หนักมาก และนั้นแหละทําให้เราต้องทดสอบจุดนั้นด้วย

Step 3 – Create A Workload Model

workload model คือการออกแบบ characteristic ของ user scenarios แบบต่างๆ เพราะแต่ scenario ไม่ใช่ว่าใครๆก็เข้าไปใช้ได้ เช่น บาง scenario ก็ต้องให้ user register ก่อนบ้าง หรือเป็นแบบ returning user ก็จะเห็นแบบ เพราะฉะนั้นเราอย่าลืมคิดเรื่องของ characteristic หรืออีกความหมายคือ บน production อะ AUT มันจะทํางานอย่างไรจริงๆนั้นเอง คิดเพื่อจะได้หาภาพที่แท้จริง เราอาจจะเอาจากสถิติต่างๆมาผสมด้วยกัน

อ่านเพิ่มที่นี้อีกเวอร์ชั่น

Step 4 – Identify Target Load Level

หลังกจานั้นก็มาตั้งเรื่องของ Target Load Level หรือเรียกอีกชื่อนึงว่า Volumn Patternก็ได้ มาดูว่าจะปล่อยโหลดที่เท่าไรกับเป้าหมายนั้นๆ โดยเราอาจจะเอาข้อมูลจากฝั่ง Business,scenarios,characteristics มาผสมกันใช้ทํา Load level ได้

อ่านอธิบายอีกเวอร์ชั่นได้ที่นี้เลย

Step 5 – Identify Metrics

การเก็บผลจากการรัน performance test เนี่ยมันมีมากมายไปหมด แต่ถ้าเราไม่เลือกอะไรเลย ผลลัพธ์ที่เก็บมาก็จะมากมายจนเราวิเคราะห์ไม่หมดไม่สิ้น ด้วยเหตุผลนี้เองเราเลยควรที่จะเลือกว่า Metrics ไหนที่เราจะเก็บส่งผลดีที่สุดกับ performance นั้นเอง metric ไหนที่เเราหา bottleneck ของ system เจอนั้นเอง โดยตัวอย่างข้างล่างคือ Metrics ที่น่าสนใจ

  • Network-specific metrics (overall health and efficiency of your network, routers, switches and gateway)
  • System-related metrics (resources like processor, memory, disk I/O, network I/O )
  • Platform-specific metrics (software that is used to host application, such as Microsoft .NET Framework common language runtime (CLR) and ASP.NET)
  • Application-specific metrics
  • Service-level metrics (throughput and latency)
  • Business metrics (Business-related information)

Step 6 – Design Specific Tests

จบละหลังจากรวบรวมข้อมูลต่างๆมาทั้งหมด ก็แค่เอามารวมกันเป็นอันเดียว แล้วก็ออกแบบ Test cases ได้เลย ซึ่งแต่ละเทสจะสะท้อนถึงข้อมูลและ Scenario ที่เราออกแบบมานั้นเอง จุดสําคัญเวลาออกแบบที่ต้องคิดไว้คือ

  1. Test Data ที่ดีควรจะเป็น data ที่เราเก็บมาจาก production หรือ Log file
  2. คิดถึง nonhumna system user ด้วยเสมอ เช่น batch file ที่ทําการ clearing ต่างๆหลังจากเราทํางานเสร็จ
  3. คิดถึงเรื่อง fault scenario ด้วยน่ะ เช่นuser กรอกข้อมูลผิด หรือ data ไม่ถูกต้องเพื่อที่จะได้การจัดการของระบบ

Step 7 – Run Tests

รันเทสตาม test design ที่เราออกแบบมาเลย ไม่ต้องคิดไรมาก แล้วเพียงแต่ขั้นนี้อาจจะมีเรื่องที่ต้องระวังคือเรื่องของ Monitoring ต่างๆ

Step 8 – Analyze the Results

วิเคราะห์ผลตามรูปแบบ metric ที่เราได้ออกแบบ test design เอาไว้

Stress Testing

ก็ไม่ได้มีไรแตกต่างจาก load testing เลย

stress-testing-technique
stress-testing-technique

เพียงแต่จะสนใจกันคนละจุดเท่านั้นเองโดย stress testing จะสนใจเรื่องของ application’s robustness,abailability กับ reliability ได้ไหมในเงื่อนไขที่มีการเกินจุดที่รับได้ไปแล้ว objective ของ Stress testing เลยคือ identify application issues ที่จะเกิดขึ้นเมื่ออยู่ภายใต้ extreme condition (heavy loads, high concurrency หรือในช่วง resources น้อยๆนั้นเอง)

ซึ่งแตกต่างกับ Load testing ที่จะสนใจเรื่อง limit ของจุดไหนจะเป็นจุดที่ application มีปัญหาเมื่อมีการ Load เข้ามาเยอะๆนั้นเอง

สรุปสั้นๆ

จริงๆแล้วหลักการณ์ของการทํา Performance Testing ก็เหมือนกันหมดแหละ ไม่ว่าจะเป็น Load testing หรือ Stress Testing คือเข้าใจเรื่องของ Business เตรียม Enviroment แล้วก็ออกแบบ Test ตามจุดเสี่ยงที่เราคิดเอาไว้ และจุดสําคัญก็คือวัดผล และนําผลมาวิเคราะห์ก็แค่นั้นเอง ไม่ได้มีมากกว่านี้เลย แค่ต้องพยายามคิดเรื่องของ Business เข้ามาในหัวมากๆหน่อยจริงๆ

 

 

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.