TopGit
Đánh giá repo GitHub

Locust: viết load test bằng Python thuần

locustio/locust
LTopGit review image for locustio/locust
Review by Topgit.dev for locustio/locust, with GitHub repository stats and README context.
Nhận định nhanh

Locust biến load test thành code Python bình thường thay vì một GUI hay DSL riêng, và đó là điểm mạnh cốt lõi. Greenlet dựa trên gevent giúp một process mô phỏng nhiều user đồng thời mà không cần một thread cho mỗi user, lý do nhiều team rời JMeter với file XML cồng kềnh để dùng Locust. Locust không tạo nhiều request/giây nhất trên một máy, nhưng để script luồng hành vi người dùng nhiều bước thì khó có công cụ nào vượt qua nó.

Sao
★ 28.1k
Fork
⑂ 3.2k
Người đóng góp
👥 395
Ngôn ngữ
Python
Giấy phép
MIT
Chủ đề
Backend
Cập nhật
Aug 2026
Trang chủ
GitHub

Vì sao load testing quan trọng

Phần lớn công cụ load test buộc bạn mô tả hành vi người dùng qua GUI, một DSL riêng, hoặc file test plan XML — vốn không version tốt và rất khó branch, review hay sinh tự động bằng script. Một luồng checkout có logic điều kiện, retry, hoặc item ID ngẫu nhiên sẽ biến thành hàng loạt bước GUI copy-paste hoặc một script viết bằng ngôn ngữ scripting riêng của công cụ đó. Locust ra đời để giải quyết trực tiếp bài toán "hành vi người dùng dưới dạng code" này bằng Python thuần, chạy bằng interpreter thông thường.

Locust là gì?

Locust là công cụ load test mã nguồn mở cho phép bạn viết kịch bản test dưới dạng class Python thuần thay vì GUI hay DSL. Mỗi user mô phỏng chạy trong một greenlet gevent riêng, nhờ đó một process Python duy nhất có thể điều khiển nhiều user đồng thời với chi phí thấp hơn mô hình một thread cho mỗi user. Bạn có thể chạy Locust từ command line hoặc qua web UI, nơi hiển thị throughput, response time và lỗi ngay khi test đang chạy.

Tính năng chính

  • Kịch bản test là class Python (kế thừa HttpUser) với các method gắn @task, nên nhánh điều kiện, vòng lặp và dữ liệu ngẫu nhiên dùng Python thông thường thay vì một DSL.
  • Mỗi virtual user chạy trong greenlet gevent riêng, cho phép một process xử lý nhiều user đồng thời mà không cần một thread cho mỗi user.
  • Web UI hiển thị throughput, response time và số lỗi theo thời gian thực, và cho phép đổi số lượng user ngay khi test đang chạy.
  • Có thể chạy headless, không cần UI, từ CLI — README gọi đây là phù hợp với pipeline CI/CD.
  • Chạy phân tán trên nhiều máy cho các test lớn hơn, theo mô tả distributed/scalable trong README.
  • Không giới hạn ở HTTP — README nói bạn có thể viết client cho bất kỳ protocol nào, hoặc dùng lại client cộng đồng đã xây sẵn.
  • Kiến trúc pluggable: README dẫn ví dụ thực tế như đẩy dữ liệu vào TimescaleDB rồi trực quan hóa bằng Grafana, hoặc dùng một load shape tùy chỉnh.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Dùng Locust để làm gì

  • Mô phỏng hành trình người dùng nhiều bước thực tế trên web app hoặc API, kiểu login rồi browse rồi checkout, viết dưới dạng các method @task theo thứ tự.
  • Stress test để tìm điểm mà response time hoặc tỷ lệ lỗi bắt đầu xấu đi khi tăng concurrency.
  • Chạy load test như một CI/CD gate ở chế độ headless trước khi deploy.
  • Test các hệ thống không phải HTTP bằng cách viết client tùy chỉnh, theo hướng dẫn của README cho các protocol khác HTTP.
  • Chạy test phân tán trên nhiều máy khi một process không tạo đủ tải cần thiết.

Cài đặt Locust

README không nêu trực tiếp lệnh cài đặt — nó dẫn sang trang installation của tài liệu chính thức thay vì liệt kê ở đây. Dựa trên thông tin có trong nguồn này, lệnh cài đặt cụ thể không được ghi rõ; nên xem tài liệu được dẫn để có hướng dẫn hiện tại thay vì đoán một lệnh cụ thể từ trang này.

Viết load test đầu tiên

Một test đầu tiên là một class Python kế thừa HttpUser, đặt wait_time giữa các request, và định nghĩa một hoặc nhiều method @task gọi self.client.get() hoặc self.client.post() vào host mục tiêu. Trọng số của task quyết định tần suất mỗi task chạy — ví dụ trong README dùng @task(3) để cho một task chạy nhiều gấp 3 lần task khác. Sau đó bạn chạy file này, hoặc qua web UI để xem metric trực tiếp và chỉnh số user khi đang chạy, hoặc headless từ command line — điều mà README mô tả là phù hợp cho CI/CD.

Ưu điểm

  • Logic test là Python thông thường, nên nằm trong version control, được code review, và tái dùng IDE cùng thư viện hiện có thay vì một định dạng riêng của vendor.
  • Web UI cho phép xem throughput và tỷ lệ lỗi trực tiếp, chỉnh số user đồng thời ngay khi test đang chạy mà không cần restart.
  • Concurrency dựa trên greenlet giữ overhead trên mỗi user thấp, theo README, mà không cần một thread cho mỗi user mô phỏng.
  • Chế độ headless gắn gọn vào pipeline CI/CD vì không phụ thuộc UI để script xung quanh.
  • Kiến trúc pluggable — README dẫn các ví dụ thực tế như đẩy kết quả vào TimescaleDB và Grafana.

Hạn chế

  • Viết test bằng Python nghĩa là bạn phải biết Python thật sự — không có GUI recorder hay test plan XML để người không lập trình dựa vào.
  • README không nêu con số request/giây cụ thể, và tự thừa nhận các công cụ khác có thể tạo nhiều request/giây hơn trên một máy đơn cho khối lượng request thuần.
  • Bước cài đặt không nằm trong README — bạn bị dẫn sang tài liệu bên ngoài, nên phần làm quen ban đầu phụ thuộc vào tài liệu bạn phải rời repo để đọc.
Xem trên GitHubTrang chủ

Locust so với JMeter, k6 và Gatling

JMeter — công cụ load test dựa trên GUI/XML; hỗ trợ protocol rộng hơn sẵn có nhưng test không phải code thuần.k6 — công cụ load test viết bằng JavaScript, cách tiếp cận code-first tương tự nhưng khác ngôn ngữ và runtime.Gatling — công cụ load test dựa trên Scala với DSL code-first, định vị gần giống Locust nhưng chạy trên JVM.wrk — công cụ benchmark HTTP nhẹ, tập trung vào con số throughput thuần thay vì script hành vi người dùng.

Câu hỏi thường gặp

Locust có miễn phí và mã nguồn mở không?

Locust là phần mềm miễn phí và mã nguồn mở, phát hành theo giấy phép MIT. Điều đó nghĩa là bạn dùng, sửa và phân phối lại được mà không cần trả phí license, mã nguồn nằm công khai trên GitHub, nên team có thể tự audit hoặc sửa code thay vì phụ thuộc vào một công cụ vendor đóng.

Locust có test được hệ thống khác ngoài HTTP không?

Locust test được các protocol ngoài HTTP — README của dự án nói rằng dù chủ yếu nhắm vào website/service, bạn vẫn viết được client tùy chỉnh cho gần như bất kỳ protocol nào cần test, và dẫn tới các client do cộng đồng viết sẵn cho các hệ thống khác.

Locust đạt concurrency cao với overhead thấp bằng cách nào?

Locust đạt concurrency cao bằng cách chạy mỗi user mô phỏng trong một greenlet gevent riêng thay vì một thread hệ điều hành. Greenlet là coroutine nhẹ, nên một process Python duy nhất quản lý được nhiều user đồng thời với ít bộ nhớ và overhead lập lịch hơn nhiều so với mô hình một thread cho mỗi user.

Locust có chạy được trong pipeline CI/CD không?

Locust chạy được trong pipeline CI/CD vì công cụ hỗ trợ chế độ headless, không cần web UI. Bạn chạy thẳng từ command line như một bước trong pipeline, điều mà dự án mô tả là giúp gộp performance test vào workflow CI/CD tự động dễ dàng.

Locust có giao diện web không?

Locust đi kèm web UI hiển thị tiến trình test theo thời gian thực, gồm throughput, response time và lỗi. Bạn cũng đổi được số user mô phỏng ngay khi test đang chạy, và UI này không bắt buộc — bạn có thể bỏ qua hoàn toàn và chạy headless.

Locust scale trên nhiều máy như thế nào?

Locust scale trên nhiều máy qua chế độ distributed được xây riêng để chạy load test trải trên nhiều host. Đây là cách Locust hỗ trợ mô phỏng số lượng user đồng thời rất lớn — CPU của một máy không còn là giới hạn khi tải được trải ra trên một cụm máy worker.

Ai nên dùng — và ai nên bỏ qua

Các team đã viết setup test, fixture và logic nghiệp vụ bằng Python sẽ tận dụng Locust tốt nhất — toàn bộ giá trị của nó biến mất nếu bạn muốn không đụng đến một dòng code nào. Nó cũng hợp với ai có kịch bản test thật sự có nhánh điều kiện, bước có điều kiện, retry, input ngẫu nhiên, mà một GUI recorder xử lý khá vụng về. Bỏ qua Locust nếu bạn cần công cụ no-code cho người không lập trình, hoặc nếu con số request/giây thuần trên một máy là thứ duy nhất quan trọng — chính README cũng thừa nhận công cụ khác có thể tạo nhiều request/giây hơn trên cùng phần cứng.

Repo liên quan

Nguồn & ghi công

Dựa trên repository GitHub locustio/locust (github.com/locustio/locust), gồm README và metadata của repo.

Dữ liệu GitHub · đồng bộ lần cuối 15 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Chưa chắc locust có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về locust.

GitHub