Hướng dẫn sử dụng locust để đánh giá website năm 2024
Đăng bởi Thanh Thư | Share 0 | 781 Views | 2022-01-10 Kiểm thử chịu tải - Load testing đã từ lâu được xem là một quy trình kiểm thử phần mềm quan trọng, giúp xác định cách ứng dụng phần mềm phản hồi khi có nhiều người dùng truy cập đồng thời. Quy trình Load testing giúp chúng ta cải thiện tắc nghẽn hiệu suất, lường trước được các tình huống xảy ra, và nhanh chóng khắc phục các lỗi gặp phải trước khi ứng dụng chính thức được ra mắt. Hiện nay có rất nhiều công cụ chuyên dụng được phát triển để giúp chúng ta thực hiện được quy trình kiểm thử chịu tải một cách hiệu quả. Tùy thuộc vào độ phức tạp của các bài kiểm thử tải, chúng ta có thể lựa chọn các công cụ từ miễn phí cho đến trả phí phù hợp với nhu cầu. Trong bài viết này, hãy cùng thảo luận về một số công cụ kiểm thử chịu tải mã nguồn mở đang được sử dụng rộng rãi nhất hiện nay nhé! 06 công cụ được "đưa lên bàn cân" hôm nay Tên công cụ: ApacheBench Sáng tạo bởi: Apache foundation Ngôn ngữ sử dụng: C Đa luồng (Multithreaded): Không Tạo tải phân tán (Distributed load generation): Không Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP Phân tích kết quả test: Có Website: https://httpd.apache.org/ Mã nguồn: https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/support/ Ưu điểm:
Nhược điểm:
Kết luận: Apachebench sẽ là một lựa chọn tốt và dễ dàng cho việc chỉ cần xử lý một URL đơn giản. Tên công cụ: Artillery Sáng tạo bởi: Shoreditch Ops LTD Ngôn ngữ sử dụng: NodeJS Đa luồng (Multithreaded): Không Tạo tải phân tán (Distributed load generation): Không (phiên bản free) & Có (phiên bản trả phí) Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP, Socket.io, WebSocket Phân tích kết quả test: Có Website: https://www.artillery.io/ Mã nguồn: https://github.com/artilleryio/artillery Ưu điểm:
Nhược điểm:
Kết luận: Từ những nhược điểm của phiên bản free, đặc biệt là về hiệu suất thì có lẽ bạn chỉ nên lựa chọn Artillery khi bắt buộc phải sử dụng thư viện NodeJS để thực hiện một số chức năng đặc thù. Tên công cụ: Locust Sáng tạo bởi: Jonathan Heyman Ngôn ngữ sử dụng: Python Đa luồng (Multithreaded): Không Tạo tải phân tán (Distributed load generation): Có Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP Phân tích kết quả test: Có Website: https://locust.io/ Mã nguồn: https://github.com/locustio/locust Ưu điểm:
Nhược điểm:
Kết luận: Tuy là công cụ một luồng và tốn nhiều tài nguyên, nhưng Locust lại được tích hợp sẵn khả năng tạo tải phân tán nên sẽ đem lại sai số đo lường thấp hơn nhiều so với Artillery. Tuy nhiên, lý do lớn nhấn khiến mọi người lựa chọn Locust chủ yếu đến từ việc công cụ này được viết bằng Python. Tên công cụ: Apache JMeter Sáng tạo bởi: Apache foundation Ngôn ngữ sử dụng: Java Đa luồng (Multithreaded): Có Tạo tải phân tán (Distributed load generation): Có Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP, FTP, JDBC, SOAP, LDAP, TCP, JMS, SMTP, POP3, IMAP Phân tích kết quả test: Có Website: https://jmeter.apache.org/ Mã nguồn: https://github.com/apache/jmeter Ưu điểm:
Nhược điểm:
Kết luận: Chúng ta nên lựa chọn JMeter nếu cần chạy các bài kiểm tra chịu tải tích hợp quy mô lớn, phức tạp, mất nhiều thời gian để lập kế hoạch, thực hiện và phân tích kết quả. JMeter cũng phù hợp với những ai có nhu cầu kiểm tra nhiều giao thức hoặc kiểm tra các giao thức mà chỉ jmeter hỗ trợ. Ngoài ra, JMeter còn phù hợp với những người tìm kiếm một công cụ kiểm tra chịu tải dựa trên Java, hoặc có nhu cầu dùng công cụ có sử dụng GUI. Tên công cụ: Gatling Sáng tạo bởi: Gatling Corp Ngôn ngữ sử dụng: Scala Đa luồng (Multithreaded): Có Tạo tải phân tán (Distributed load generation): Không (phiên bản free) & Có (phiên bản trả phí) Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP, WebSockets, JMS Phân tích kết quả test: Có Website: https://gatling.io/ Mã nguồn: https://github.com/gatling/gatling Ưu điểm:
Nhược điểm:
Nhận xét: Không có quá nhiều điều để nói về Gatling, đây đơn giản là một ứng dụng Java, hoạt động khá tốt và bớt "đồ sộ" hơn so với Jmeter. Nếu bạn thích các ứng dụng Java, và đang sử dụng Jmeter thì đừng ngần ngại thử cả Gatling. Rất có thể bạn sẽ thích công cụ này, nhất là ở khả năng tạo các kịch bản test với Scala (khi Jmeter không thực sự có khả năng viết kịch bản test). Tên công cụ: K6 Sáng tạo bởi: Load Impact Ngôn ngữ sử dụng: Go Đa luồng (Multithreaded): Có Tạo tải phân tán (Distributed load generation): Không (phiên bản free) & Có (phiên bản trả phí) Hỗ trợ giao thức tích hợp (In-built Protocols Support): HTTP 1.1, HTTP 2, WebSockets Phân tích kết quả test: Có Website: https://k6.io/ Mã nguồn: https://github.com/grafana/k6 Ưu điểm:
Nhược điểm:
Kết luận: Tuy là công cụ có tuổi đời non trẻ nhất trong số các công cụ kể trên, nhưng hiện tại K6 nhận được rất nhiều phản hồi tích cực từ người dùng. Tuy nhiên, nếu bạn bắt buộc phải sử dụng thư viện NodeJS, thì Artillery có thể là lựa chọn thay thế. Viblo là dịch vụ chia sẻ và học tập kiến thức IT dành cho lập trình viên Việt Nam, được phát triển và vận hành bởi Sun*. Viblo ra đời với mục tiêu trở thành nền tảng tối ưu dành cho các lập trình viên, nơi mọi người có thể tự do học hỏi, chia sẻ và thể hiện các kỹ năng CNTT của riêng mình. |