Mục lục nội dung
Performance Testing là gì?
Performance Testing là một loại kiểm thử nhằm xác định khả năng đáp ứng tối đa, các điểm tắc nghẽn của một hệ thống, từ đó đưa ra những điều chỉnh hợp lí để cải thiện hiệu suất của hệ thống. Trong bài viết này chúng tôi sẽ giới thiệu về Locust – một công cụ hỗ trợ cho load testing được viết bằng Python.
Bạn đang xem : Locust là gìMặc dù không được thông dụng như một số ít tool khác ( như Jmeter, Gatling, … ) nhưng Locust cũng có nhiều tính năng khác mê hoặc rất tương thích cho một số ít trường hợp .
Locust là gì?
Locust là một user load testing tool được viết bằng python, rất dễ sử dụng. Nó thường được dùng để load testing cho website, các hệ thống api, … và để tìm ra số lượng người dùng đồng thời mà hệ thống có thể xử lí.
Bạn đang đọc: LOCUST LÀ GÌ
Ý tưởng của nó là dùng một nhóm những Locust để giả lập những requests tới website. Các hành vi của người dùng do tất cả chúng ta định nghĩa bằng python. Quá trình load testing được theo dõi real-time bằng UI .Xem thêm : Cách Giảm Lag Khi Chơi trò chơi Trên Android, Ping Chơi trò chơi Di Động : Công Cụ Chống LagLocust là event-based, do đó nó hoàn toàn có thể tương hỗ tạo ra hàng ngàn người dùng đồng thời trên một máy duy nhất. Trái ngược với nhiều ứng dụng event-base khác, nó không sứ dụng call-backs thay vào nó sử dụng light-weight processes, trải qua gevent .
Ưu điểm:
Kịch bản test được viết bằng Python phù hợp cho các pro python (nhưng là nhược điểm cho người không thành thạo python), hơn nữa giúp dễ dàng quản lí kịch bản test với gitDễ dàng setup môi trường phân tán, khả năng mở rộng tốt – hỗ trợ giả lập hàng trăm nghìn userCó giao diện web, một số biểu đồ đơn giản để xem kết quả testingNhờ cơ chế event-based nên Locust dùng ít tài nguyên hơn một số tool khác (như Jmeter, Gatling). Có thể dễ dàng giả lập hàng nghìn user trên một laptop.Và đặc biệt vì kịch bản được viết Python thay vì dùng giao diện như các tool khác nên chúng ta có thể Hackable nếu pro Python.Kịch bản test được viết bằng Python tương thích cho những pro python ( nhưng là điểm yếu kém cho người không thành thạo python ), không chỉ có vậy giúp thuận tiện quản lí ngữ cảnh test với gitDễ dàng setup môi trường tự nhiên phân tán, năng lực lan rộng ra tốt – tương hỗ giả lập hàng trăm nghìn userCó giao diện web, 1 số ít biểu đồ đơn thuần để xem hiệu quả testingNhờ chính sách event-based nên Locust dùng ít tài nguyên hơn 1 số ít tool khác ( như Jmeter, Gatling ). Có thể thuận tiện giả lập hàng nghìn user trên một máy tính. Và đặc biệt quan trọng vì ngữ cảnh được viết Python thay vì dùng giao diện như những tool khác nên tất cả chúng ta hoàn toàn có thể Hackable nếu pro Python .
Nhược điểm:
Cần biết python.Không có cơ chế recording như một số tool (Jmeter,Gatling…).Phần thống kê báo cáo kết quả testing còn đơn giản.Mặc định chỉ hỗ trợ giao thức http/https tuy nhiên chúng ta cũng có thể mở rộng ra các giao thức khác nhưng đòi hỏi cần nhiều kinh nghiệp lập trình PythonCần biết python. Không có chính sách recording như 1 số ít tool ( Jmeter, Gatling … ). Phần thống kê báo cáo giải trình hiệu quả testing còn đơn thuần. Mặc định chỉ tương hỗ giao thức http / https tuy nhiên tất cả chúng ta cũng hoàn toàn có thể lan rộng ra ra những giao thức khác nhưng yên cầu cần nhiều kinh nghiệp lập trình PythonThao khảo thêm bài so sánh Locust với Jmeter :Jmeter vs locust what to use when
Cài đặt
pip install locustiolocust –helpChú ý:
Mỗi kết nối HTTP trên một máy sẽ mở một file mới (technically a file descriptor). Hệ điều hành có thể giới hạn số lượng file có thể mở. Nếu số lượng giới hạn này thấp hơn số lượng người dùng giả lập trong lúc test sẽ xảy ra lỗi. Vì thế chúng ta nên cấu hình lại số lượng giới hạn này (tùy thuộc vào từng hệ điều hành sẽ có các cách điều chỉnh khác nhau).
Sử dụng đơn giản
Tạo một file locustfile.py đơn giản (các tham số chúng tôi sẽ giải thích sau)
from locust import HttpLocust, TaskSetdef login ( l ) : l.client.post ( ” / login “, { ” username ” : ” ellen_key “, ” password ” : ” education ” } ) def index ( l ) : l.client.get ( ” / ” ) def profile ( l ) : l.client.get ( ” / profile ” ) class UserBehavior ( TaskSet ) : tasks = { index : 2, profile : 1 } def on_start ( self ) : login ( self ) class WebsiteUser ( HttpLocust ) : task_set = UserBehavior min_wait = 5000 max_wait = 9000 ` ` ` hoặc sử dụng cách sau tương tự :
from locust import HttpLocust, TaskSet, taskclass UserBehavior(TaskSet): def on_start(self): “”” on_start is called when a Locust start before any task is scheduled “”” self.login() def login(self): self.client.post(“/login”, {“username”:”ellen_key”, “password”:”education”})
task(1) def profile(self): self.client.get(“/profile”)class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 5000 max_wait = 9000Start Locust
locust — host = http://example.comNếu sử dụng tên file khác locustfile.py ta hoàn toàn có thể sử dụng tham số – flocust – f locust_files / my_locust_file. py — host = http://example.comNgay sau khi chạy script ta truy vấn : http://127.0.0.1:8089Tại đây tất cả chúng ta sẽ xác lập số lượng user giả lập, triển khai chạy load testing và xem tác dụng monitoring
Hình minh họa:
Còn tiếp …Phần sau chúng tôi sẽ hướng dẫn cách viết ngữ cảnh testing, mong những bạn liên tục theo dõi .
Tham khảo:
https://docs.locust.io/en/latest/quickstart.htmlhttps://www.blazemeter.com/blog/jmeter-vs-locust-which-one-should-you-choosehttps://www.blazemeter.com/blog/locust-assertions-a-complete-user-manual
Source: https://mindovermetal.org
Category: Wiki là gì