สร้าง Load Test ง่ายๆ ด้วย Locust

สร้าง Load Test ง่ายๆ ด้วย Locust

#pythontricks วันนี้ครับ พอดีวันนี้มีปัญหากับ API แล้วต้องทำ Load test แบบง่ายๆ เร็วๆ เลยไปเจอ locustio มาครับ และมันง่ายมากเลย

Locust เป็น Load testing tool ตัวนึงครับ ผมไม่เคยใช้ตัวอื่นแต่พอมาใช้ตัวนี้ วันนี้ เช้านี้ บอกได้เลยว่ามันใช้ง่ายมากครับ เพียงแค่เราสร้าง TaskSet ขึ้นมา โดย TaskSet เนี่ยจะเป็นคล้ายๆ Test Case ว่าเราจะทำอะไรกับ Server บ้าง ในเคสนี้ก็คือยิง HTTP Request ครับ ลักษณะการเขียนจะคล้ายๆ กับพวกเทสของ Django หรือ DRF เลยคือเป็น self.client.<method>

พอเราเขียน TaskSet เสร็จแล้วเราก็ต้องสร้างอีก Class นึงครับเป็น Locust class ซึ่ง Class นี้จะเป็นตัวแทนของ User ที่ใช้ TaskSet อีกทีนึง ซึ่งเราสามารถกำหนด min_wait และ max_wait ได้ซึ่งจะเป็นค่าที่ตัว Locust ใช้สุ่มในการ Generate Task ขึ้นมาครับ พอเราเขียนเสร็จแล้วหน้าตาของ locustfile.py ก็จะประมาณนี้

พอเราได้ Locustfile แล้วทีนี้เราก็ต้องสั่งรันครับ ซึ่งง่ายมากเพียงแค่สั่ง

locust -f locustfile.py - -host=<hostname>

แล้วตัว Locust จะรัน Server ขึ้นมาครับ เราสามารถเข้าไปได้ที่ localhost:8089 โดยมันจะให้เราใส่จำนวน Concurrent user ที่เราต้องการจะยิง แล้วก็อัตราการ Spawn user ขึ้นมาว่ากี่ user / วินาที ครับพอใส่ข้อมูลเรียบร้อยมันก็จะยิงทันทีเลยครับหน้าตาของตัว Server ก็จะประมาณนี้

หน้าสรุป Request ทั้งหมดที่ยิง
มี Chart ให้ดูอัตราการโหลดด้วย

ก็สั้นๆ ประมาณนี้ครับ เพิ่งลองได้ไม่ถึงวันเลยเล่าได้แค่นี้ แต่ก็นับว่าเป็นเครื่องมือที่ยิงได้โหดพอสมควรเลยทีเดียว ทำเอา CPU ผมวิ่งจี๋เลย ถ้าอยากศึกษาเพิ่มเติมแนะนำที่เว็บของตัว Library เลยครับตามที่อยู่ข้างล่าง แล้วพบกันใหม่ Post หน้าครับ

Locust.io
An open source load testing tool. Define user behaviour with Python code, and swarm your system with millions of simultaneous users.

Original post at: https://medium.com/pythonbycow/สร้าง-load-test-ง่ายๆ-ด้วย-locust-2d3123f2e8d2