Giới thiệu công cụ kiểm thử hiệu năng – Apache JMeter

Kiểm thử hiệu năng là gì?

Các tính năng và chức năng của một hệ thống phần mềm không phải là mối quan tâm duy nhất. Hiệu năng của một ứng dụng phần mềm như thời gian phản hồi (response time), độ tin cậy (reliability), sử dụng tài nguyên (resource usage) và khả năng mở rộng (scalability) của nó cũng là điều đáng chú ý.

Có nhiều định nghĩa về kiểm thử hiệu năng, kiểm thử hiệu năng hay performance test được định nghĩa là một loại phần mềm kiểm thử sử dụng để đảm bảo các ứng dụng phần mềm hoạt động hiệu quả trong khoảng công việc dự kiến của ứng dụng.

Trong đó trọng tâm của kiểm thử hiệu năng là:

  • Thời gian phản hồi: xác định xem ứng dụng phản hồi nhanh hay chậm 
  • Khả năng mở rộng: Xác định tải người dùng tối đa mà ứng dụng phần mềm có thể xử lý. 
  • Tính ổn định: Xác định xem ứng dụng có ổn định dưới các tải khác nhau hay không. 

Mục tiêu của Kiểm thử hiệu năng không phải là để tìm lỗi, nó là hoạt động cần thiết cho việc phát triển những giải pháp tối ưu hóa hiệu năng cho phần mềm. Kiểm thử hiệu năng giúp chúng ta tránh được các tình huống không lường trước khi triển khai ứng dụng trong môi trường thực tế. 

Giới thiệu công cụ kiểm thử hiệu năng – Apache JMeter

Apache JMeter là một mã nguồn mở, phát triển dựa trên nền tảng Java thuần (pure Java), được thiết kế để kiểm tra tải của các hành vi, chức năng và đo lường hiệu suất của một hệ thống.

Ban đầu, JMeter được giới thiệu cho các ứng dụng web kiểm tra tải và hiệu năng, nhưng sau đó, phạm vi của nó đã mở rộng và có thể thực hiện kiểm tra tải và hiệu năng trên các trang web, ứng dụng web và các tài nguyên tĩnh hay động như Database, Rest Web Services, LDAP, Java Object…

Các tính năng của JMeter

Các tính năng chính của JMeter bao gồm:

  • Giấy phép (License): JMeter là một mã nguồn mở, vì vậy nó miễn phí và người dùng có thể dễ dàng tải về và sử dụng.
  • Giao diện đồ hoạ người dùng (Graphical User Interface – GUI): Đơn giản, thân thiện với người dùng và dễ học so với các công cụ kiểm thử hiệu năng khác.
  • Hỗ trợ Giao thức/ Máy chủ (Server/Protocol Support): JMeter có khả năng thực hiện kiểm thử hiệu năng nhiều ứng dụng, máy chủ, giao thức khác nhau. Một vài giao thức bao gồm HTTP, HTTPS, FTP, SOAP/REST, Database thông qua JDBC, LDAP, JMS, SMTP(S), POP(3) và IMAP(S), Native Commands/Shell Scripts và TCP.
  • Nền tảng (Platform): JMeter được phát triển dựa vào Java thuần (pure Java). Do đó, nó là nền tảng độc lập và hỗ trợ tất cả môi trường.
  • Mô phỏng (Simulation): Mô phỏng nhiều người dùng bằng cách sử dụng người dùng ảo hoặc người dùng duy nhất để tạo lưu lượng truy cập lớn trên server hoặc web services.
  • Hỗ trợ Phân phối tải (Supports Distributed Testing): JMeter tạo ra các Master và Salves để thực hiện phân phối tải, trong đó Master sẽ thực hiện làm nhiệm vụ phân phối việc đẩy request cho các Slaves, các Salves sẽ thực hiện đẩy các request từ script lên server cần kiểm thử hiệu năng.
  • Hiển thị kết quả (Test Result Visualation): Kết quả kiểm thử hiệu năng có thể xem với nhiều định dạng khác nhau như Bảng, Biểu đồ, Cây, Báo cáo…
  • Báo cáo (Reporting): Theo mặc định, JMeter chỉ cung cấp định dạng báo cáo là XML và CSV. Chúng ta có thể sử dụng JMeter và ANT cùng với nhau để có được báo cáo HTML theo yêu cầu. Từ bản JMeter 3.0 có hỗ trợ HTMLReport (Dashboard Report) hiển thị đầy đủ thông tin và chuyên nghiệp.
  • Các loại kiểm thử (Testing Types): Ngoài việc kiểm thử hiệu năng, Load, Stress Testing, JMeter vẫn có thể được sử dụng để kiểm thử tốt về Chức năng, Regression Testing hay Soak/Endurance Testing cũng đều có thể sử dụng tốt.
  • Record and Playback: JMeter hỗ trợ việc ghi lại (record) kịch bản/hành động của người dùng qua các trình duyệt và playback lại script sau khi record xong.
  • Framework: Framework đa luồng (multi-threading) cho phép có thể mô phỏng các requests đồng thời thực hiện các chức năng khác nhau bởi nhiều Thread Groups riêng biệt.
  • Cài đặt (Installation): Cài đặt dễ dàng và đơn giản – Chỉ cần download file, giải nén và chạy file JMeter.bat trên Windows hoặc chạy file JMeter.sh trên Linux.
  • Kiến thức (Knowledge): JMeter không yêu cầu phải có kiến thức sâu rộng về lập trình do giao diện người dùng khá dễ hiểu.

Quy trình hoạt động của JMeter

JMeter mô phỏng 1 số lượng người dùng gửi request đến ứng dụng cần kiểm thử. Ngay khi JMeter mô phỏng các request, server sẽ phản hồi và JMeter bắt đầu thu thập các dữ liệu. JMeter lưu trữ tất cả các phản hồi và dựa vào server nó sẽ trả về các số liệu thống kê tương ứng. Các thông kê này cho thấy hiệu năng của server dưới các định dạng khác nhau theo yêu cầu.

Do đó, với sự trợ giúp của JMeter chúng ta có thể mô phỏng một lượng tải lớn trên server, network hay là các đối tượng đến từ các máy khác nhau để thực hiện kịch bản tương tự như ngoài đời.

Nguồn: https://jmeter.apache.org/index.html

Leave a Reply