Tìm hiểu Jemeter

Feb 18, 2022

1. Jmeter là gì ?

Jmeter là ứng dụng viết trên mã nguồn mở(open source), được viết 100% trên java và là ứng dụng dành cho việc test tải (load test) tốc độ thực thi của ứng dụng web. Ban đầu nó được thiết kế để đơn thuần kiểm tra cho ứng dụng web, sau đã được mở rộng ra nhiều chức năng khác.

Stefano Mazzocchi chính là người tạo ra Jmeter đầu tiên nhưng về sau thì Apache đã cải tiến thiết kế lại Jmeter để nó hoàn thiện như hiện tại.

Jmeter là một công cụ được sử dụng để đo độ tải và performance của đối tượng, nó cũng được coi là một ứng dụng với mã nguồn mở được viết bằng ngôn ngữ lập trình java, có thể sử dụng để test performance trên cả nguồn tĩnh và nguồn động.

Nó có thể được sử dụng để mô phỏng một lượng người dùng ảo, request lớn trên một máy chủ, nhóm máy chủ, mạng hoặc đối tượng để kiểm tra về độ tải của nó hoặc để phân tích thời gian phản hồi tổng thể dưới các loại tải khác nhau.

2. Những tính năng của Jmeter

Apache jmeter bao gồm các tính năng:

  • Khả năng và thử nghiệm hiệu suất nhiều ứng dụng, server và protocol khác nhau:
  • Web -HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET)
  • SOAP/REST Webservices
  • FTP
  • LDAP
  • Database via JDBC
  • Message-oriented middleware(MOM) via JMS
  • Mail -SMTP(s), POP3(S) and IMAP(S)
  • Native commands or shell scripts
  • TCP
  • Java Objects
  • Lựa chọn sử dụng với command-line để thử nghiệm tải từ java
  • Jmeter hỗ trợ Load test và stress test, có thể giúp ta đánh giá các kết quả

+ Web có thể chịu được bao nhiêu lượt truy cập/thao tác liên tục cùng lúc?

+ Để đáp ứng số lượng X người sử dụng, thì cần phân phối họ truy cập trong bao lâu? Như thế nào để Web vẫn hoạt động bình thường?

+ Thời gian response dữ liệu của server với từng mức tải người dùng?

+ Kết hợp với 1 số tool monitor server, ta có thể theo dõi thay đổi vật lý của server khi có tải lớn như: CPU, RAM, Network traffic…

.....

  • Có thể ghi lại quá trình kiểm thử từ website hoặc chính ứng dụng này, và có khả năng debuging
  • Có thể kết hợp với các tool kiểm thử tự động khác như Selenium....
  • Ngoài ra, Jmeter có thể dùng để test API

...

3. Ví dụ những trường hợp sử dụng để test load

Bạn có thể dùng jmeter để test load trong một số các trường hợp sau:

  • Một trang thương mại điện tử như shopee chằng hạn, sẽ có chương trình sale off 90% trong 1 phút. Với bất cứ một trang web thương mại điện tử nào thì việc  xử lý giao dịch và lượt truy cập vào hệ thống đông đảo đều cần phải được kiểm soát.
  • Hoặc một sự kiện mang tầm cỡ nào đó sẽ phát vé online miễn phí trong một khoảng thời gian ngắn…
  • Như thời điểm dịch bệnh vừa qua để họp tổng toàn công ty tất cả sẽ join vào GG meeting hay lớp học zoom

Số lượng người truy cập trên 1 giây có thể lên đến hàng nghìn, chục nghìn hay có thể tới hàng trăm nghìn/giây
Thời gian đáp ứng ( thời gian phản hồi) của web site : là thời gian mà website phản hồi lại những yêu cầu từ người dùng. Ví dụ danh mục sản phaảm phải được hiển thị trong vòng chưa đầy 3 giây khi người dùng thực hiện truy cập vào trang chủ của website thương mại .
Lượng truy cập : Ví dụ : hệ thống phải hỗ trợ 100 giao dịch mỗi giây
Tài nguyên sử dụng : Vi xử lý, bộ nhớ , vào/ra đĩa cứng, vào/ra mạng
Tải người dùng tối đa: Xác định có bao nhiêu người sử dụng có thể chạy trên một cấu hình phần cứng cụ thể.
Các số liệu nghiệp vụ liên quan : Ví dụ như số lượng đơn đặt hàng hoặc số lượng các cuộc gọi được xử lý ở một thời điểm xác định

  • Phân tích ví dụ: Vào 6h sẽ mở lớp để cho 1000 sinh viên vào đăng ký môn học => vậy 1000 sinh viên này sẽ cùng vào trang đăng ký => mình sẽ cần phải dùng jmeter để test case này=> chứ mình đâu thể lấy 1000 máy tính nhờ 1000 người test cùng được => mình có thể sẽ dùng user ảo hoặc user thật thông qua file csv

Bạn thử nghĩ xem, những ví dụ như bên trên hoặc tương tự sẽ áp dụng vào đó các bài toán vê số lượng người truy cập trên 1 giây có thể lên đến hàng nghìn, chục nghìn hay có thể tới hàng trăm nghìn/giây. Với các trường hợp như này khi xây dựng hệ thống ta ko thể cover được hết lỗi phát sinh khi số lượng người truy cập tăng cao hay càng ko thể để ứng dụng phát hành ra bên ngoài rồi mà ko có sự chuẩn bị trước. Lúc này thì cần phải sử dụng jmeter để tính toán và thử nghiệm hết các tình huống có thể xảy ra.

4. Jemeter hoạt động như thế nào ?

Jmeter mô phỏng một nhóm người dùng gửi các requests đến một server mục tiêu cần test, và trả về hiển thị thống kê tốc độ thực thi của server, ứng dụng thông qua report hay biểu đồ.

  1. Jmeter tạo ra các yêu cầu và gửi chúng lên server giống như trình duyệt web yêu cầu một trang
  2. Nó nhận được phản hồi từ server, thu thập chúng và hiển thị những chi tiết đó trong biểu đồ hoặc đồ thị.
  3. Nó xử lý phản hồi từ server.
  4. Nó tạo ra kết quả thử nghiệm theo một số định dạng như text, XML, JSON. Sau đó, tester có thể phân tích dữ liệu

Bạn có thể chưa nghe, nhưng jmeter chỉ là một HTTP Client có khả năng chạy nhiều phiên song song. Và điểm lợi của nó là có thể cấu hình được theo ý bạn muốn. Ví dụ như mô phỏng lại người dùng mua sắm trên trang thương mại điện tử một cách rõ ràng.

Về cơ bản:

  • Định nghĩa một luồng công việc: Bao gồm các thành phần logic (như if, for, while)
  • Swarm hệ thống: Jmeter sinh ra hàng nghìn luồng theo luồng công việc của bạn
  • Thu thập và phân tích kết quả: Hãy đánh giá tốc độ và những gì mà bạn nhìn thấy.

Về mặt kỹ thuật, Jmeter là một HTTP Client đa luồng có khả năng thực hiện các luồng công việc phức tap tương tác với ứng dụng web. Tất nhiên Jmeter không bị giới hạn ở HTTP, có FTP, SMTP... Nhưng do thực tế hầu hết là sử dụng http.

Như vậy bạn cứ tạm hiểu Jmeter hoạt động trên cấp độ giao thức. Nó mô phỏng các tương tác mạng, yêu cầu với một ứng dụng web.

5. Cài đặt

5.1. Yêu cầu hệ thống

  • Máy đã cài java: Jmeter là một ứng dụng phát triển dựa trên java-based => cần cài đặt JDK hoặc JRE
  • CPU: Chúng tôi gợi ý nên sử dụng cpu multicore, bởi nó hoạt động rất mạnh và nhiều điểm lợi của đa luồng.
  • Memory: 16GB Ram là tốt nhất. Với con số này bạn có thể mô phỏng tới 1000 người dụng đồng thời và đủ cho hệ thống quản lý.
  • Disk: Jmeter ko dựa nhiều vào ổ đĩa nhưng thao tác nó trên ổ SSD là một điểm cộng.
  • Network: Nên sử dụng mạng LAN 1Gbps. Khi mô phỏng lượng người dùng lớn thì vấn đề thiếu băng thông mạng là dễ dàng xảy ra.

Và rất nhiều thông số cũng ko quá quan trọng khác.

5.2. Cài đặt trên Windown

Bước 1: Đi đến trang web Apache của JMeter để download: https://jmeter.apache.org/download_jmeter.cgi

https://jmeter.apache.org/download_jmeter

Click vào apache-jmeter-5.3.zip để download.

Bước 2: Giải nén file zip vừa tải về.

Bước 3: Vào folder bin và click đúp vào file jmeter.bat để chạy.

file jmeter.bat

Giao diện JMeter sẽ hiển thị như sau:

Giao diện JMeter

5.3. Cài đặt trên Ubuntu

  • Bước 1. Download Java for jmeter: sudo apt-get install openjdk-7-jre-headless
  • Bước 2. Check java version: java -version
  • Bước 3. Download jmeter as command: wget-c http://ftp.ps.pl/pub/apache//jmeter/binaries/apache-jmeter-3.0.tgz
  • Bước 4. Update version for jmeter(if any): sudo apt-get update
  • Bước 5. Go to Download directory: cd Downloads/
  • Bước 6. Unpack jmeter: tar -xf apache-jmeter-4.0.tgz
  • Bước 7. Go to Jmeter directory: cd apache-jmeter-4.0/
  • Bước 8. Run: ./bin/jmeter

5.4. Cài đặt trên Mac

Bước 1: Đi đến trang web Apache của JMeter để download: https://jmeter.apache.org/download_jmeter.cgi

Cài đặt trên Mac

Click vào apache-jmeter-5.3.tgz để download.

  • Bước 2: Giải nén file zip vừa tải về.
  • Bước 3: Mở terminal trên Mac Open your terminal on Mac.
  • Bước 4: Gõ cd đến nơi lưu file JMeter đã download.
  • Bước 5: Gõ cd đến folder bin.
  • Bước 6: Gõ ./jmeter.sh và JMeter sẽ được mở.

6. Ưu nhược điểm

6.1 Ưu điểm

+ Là công cụ mã nguồn mở nên việc sử dụng JMeter là hoàn toàn miễn phí, nó cho phép các developer có thể sử dụng mã nguồn.

+ Vì nó có một giao diện thân thiện nên rất dễ sử dụng và không mất nhiều thời gian để nghiên cứu.

+ JMeter là ứng dụng của Desktop Java thuần túy và có nền tảng độc lập nên JMeter có thể được thực hiện chạy trên nhiều nền tảng khác nhau.

+ JMeter cho mô phỏng cùng thời điểm với nhiều sampler cùng các chức năng khác nhau dựa trên nhiều các nhóm hoạt động khác nhau.

+ Báo cáo mạnh mẽ: Cho phép hiển thị kết quả kiểm thử ở nhiều định dạng khác nhau như: biểu đồ, bảng, tree và file log.

+ JMeter rất dễ để cài đặt, bạn chỉ cần copy, cho chạy tập tin đúng định dạng và khởi động JMeter là được nên không cần phải cài đặt.

+ Có khả năng mở rộng cao: Các Tester có thể thực hiện viết các kịch bản kiểm thử sau đó các công cụ JMeter sẽ hỗ trợ các plugin trực quan.

+ JMeter có thể sử dụng để hỗ trợ cho nhiều các chiến lược thực hiện kiểm thử khác như: Load Testing, Distributed Testing, và Functional Testing.

+ JMeter mô phỏng được số lượng nhiều người dùng với những chủ đề cùng lúc và tạo hoạt động tải nặng trên các ứng dụng web đang được kiểm thử.

+ Hỗ trợ được nhiều giao thức như  HTTP, JDBC, LDAP, SOAP, JMS và FTP đồng thời cũng đánh giá được hiệu năng của máy chủ.

+ Record & Playback: đây là tính năng giúp ghi lại các hoạt động của người dùng trên trình duyệt đồng thời đưa ra mô phỏng nó trong một ứng dụng web sử dụng JMeter.

+ Jmeter có thể tích hợp được với Bean Shell & Selenium nhằm thực hiện công việc kiểm thử tự động.

6.2 Nhược điểm

+  Vì JMeter có thể mô phỏng được những tải nặng và trực quan báo cáo thử nghiệm nên tiêu tốn khá nhiều bộ nhớ, có thể dẫn ra khỏi bộ nhớ dưới việc tải nặng.

+ Chỉ áp dụng cho ứng dụng web: Mặc dù JMeter là công cụ tốt để thực hiện thử nghiệm trên các ứng dụng web nhưng nó lại không phù hợp với các thử nghiệm trên các ứng dụng của máy tính để bàn.

+ Thiếu hỗ trợ cho ngôn ngữ lập trình JavaScript: vì bản chất của JMeter không phải là một trình duyệt, vì thế mà nó không thể chạy cho JavaScript của ứng dụng web. Và nó cũng hạn chế hỗ trợ để xử lý JavaScript hoặc Ajax  làm ảnh hưởng đến độ chính xác của việc mô phỏng.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.