1. Kiểm thử hiệu năng là gì?
Kiểm thử hiệu năng là 1 loại kiểm thử phi chức năng, được sử dụng để đánh giá về khả năng đáp ứng cũng như hành vi của hệ thống với các khối lượng công việc khác nhau. Một ứng dụng được thử nghiệm cho phép người dùng cuối thực hiện một tác vụ nhất định mà không bị trì hoãn quá lâu. Một ứng dụng có hiệu năng tốt nếu nó có thời gian phản hồi (response time) tốt. Vì vậy, khả năng đáp ứng của một ứng dụng đóng một vai trò rất quan trọng giống như giao diện và chức năng của người dùng, vì ngày nay người dùng rất khắt khe và muốn mọi thứ được nhanh chóng.
Một trang web chậm sẽ dẫn đến sự trải nghiệm người dùng không tốt và có tác động tiêu cực đến tài chính. Ngay cả sự chậm trễ tính bằng giây, trong một thời gian quá dài có thể dẫn đến việc mất một khoản doanh thu lớn. Do đó, việc kiểm thử hiệu năng của các trang web rất được chú trọng. Để kiểm tra hiệu năng của một trang web, hiện nay đã có rất nhiêu công cụ để kiểm thử, ví dụ như JMeter, LoadRunner, WebLoad, LoadView và rất nhiều công cụ nữa.
Sự quan trọng của việc kiểm thử hiệu năng:
- - Giúp tìm ra các điểm nghẽn tiềm năng của hệ thống.
- - Sự chậm chạp của một ứng dụng hay hệ thống có thể thấy được ở việc tải nặng.
- - Biết được hệ thống hay ứng dụng có thể đáp ứng được bao nhiêu người dùng song song.
- - Giúp tìm ra được những tác động về hiệu năng sau mỗi bản vá, sửa đổi.
2. JMeter là gì và lịch sử tóm tắt
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…
Stefano Mazzocchi của Apache Software Foundation là người phát triển ra JMeter. Ông ban đầu đã viết nó chủ yếu để kiểm tra hiệu năng của Apache Jserv (hiện nay được gọi là Apache Tomcat – được sử dụng phổ biến đối với server). Sau đó, cộng đồng Apache đã thiết kế lại để nó cải thiệu về mặt GUI (Giao diện), thêm nhiều tính năng cũng như có khả năng kiểm thử chức năng.
3. 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.
4. Cách thức 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.
5. Quy trình làm việc của JMeter
Khi chúng ta bắt đầu thực hiện kiểm thử hiệu năng cho 1 ứng dụng, JMeter sẽ sinh ra các requests gửi đến server đích và mô phỏng số lượng người dùng gửi request đến server đích. Ngay khi máy chủ bắt đầu phản hồi lại các request, JMeter sẽ lưu tất cả các phản hồi này. Dựa trên các dữ liệu phản hồi, JMeter sẽ thu thập tập hợp để tính toán thông tin thống kê. Cuối cùng, bằng cách sử dụng các thông tin thống kê này, JMeter sẽ tạo ra một báo cáo cho người dùng về hiệu năng của hệ thống vừa thực hiện.
Bài sau: Hướng dẫn cài đặt Java