Từ việc tiếp cận tính sẵn sàng sản xuất, tìm ra nguồn gốc của các vấn đề về hiệu suất đến phát hiện bộ phận ứng dụng nào hoạt động kém, kiểm tra hiệu suất là câu trả lời cho tất cả các câu hỏi của bạn. Các loại kiểm tra hiệu suất chính giúp bạn duy trì chất lượng vượt trội là kiểm tra tải, kiểm tra căng thẳng, kiểm tra khối lượng/công suất, kiểm tra độ bền và kiểm tra khả năng mở rộng.

Cho dù đó là chi phí, tùy chỉnh, hỗ trợ cộng đồng, tính năng ghi và phát lại, tính độc lập của nền tảng hoặc tính linh hoạt để kiểm tra loại thử nghiệm hiệu suất, Jmeter luôn sẵn sàng giải cứu. Bài viết này sẽ đi sâu vào vấn đề để giải thích tại sao và cách mà Jmeter được coi là lựa chọn tốt nhất để bạn kiểm tra hiệu suất.

Kiểm tra hiệu suất xác định xem ứng dụng có đáp ứng các yêu cầu về tốc độ, khả năng mở rộng và độ ổn định trong khối lượng công việc dự kiến hay không. Một số tắc nghẽn hiệu suất phổ biến là:

  • CPU
  • Memory
  • Network
  • Operating System
  • Disk usage

Hãy cùng tìm hiểu sâu về JMeter.

JMeter là công cụ kiểm tra tải mã nguồn mở phổ biến nhất. Sau đây là các bước được đề cập để khởi động JMeter.

1 – BẮT ĐẦU

Cài đặt JRE hoặc JDK 64-bit mới nhất. Điều này là cần thiết vì JMeter là một ứng dụng Java thuần túy.
Cứ việc tải phiên bản mới nhất của JMeter thôi.
Chúng ta sẽ quan tâm đến Binaries vì xài thôi mà. Còn bản Source dành cho nhà phát triển.
Bạn có thể tải xuống tại đây https://jmeter.apache.org/download_jmeter.cgi)


Giải nén tệp zip/tar vào thư mục mà bạn muốn cài đặt JMeter.
Bạn sẽ tìm thấy các thư mục sau trong Thư mục Jmeter:

  • /bin: Chứa tệp tập lệnh JMeter để khởi động JMeter
  • /docs: Tệp tài liệu JMeter
  • /extras: các tệp bổ sung liên quan
  • /lib/: Chứa thư viện Java cần thiết cho Jmeter
  • /printable_docs:

Để khởi động Jmeter, hãy vào thư mục /bin

  • Đối với Mac/Linux/Unix: ./jmeter.sh
  • Đối với Windows: jmeter.bat

2 – CÁC PHẦN TỬ JMETER

JMeter Test Plan: Kế hoạch kiểm tra mô tả một loạt các bước mà JMeter sẽ thực hiện khi chạy. Một kế hoạch thử nghiệm hoàn chỉnh sẽ bao gồm một hoặc nhiều Thread Groups, Logic Controllers, Sample Generating Controllers, Listeners, Timers, Assertions, và Configuration Elements.

Chạy Jmeter Thread Groups liên tục

Nếu bạn có nhiều Thread Groups và chạy chúng, chúng sẽ được thực hiện song song. Trong một số trường hợp, nó gây ra một số vấn đề (tức là sự phụ thuộc giữa các Thread Groups). Trong trường hợp đó, bạn cần chạy các Thread Groups của mình liên tục.

ThreadGroup

Thread có nghĩa là số lượng của Người dùng ảo trong JMeter.

Ví dụ: nếu bạn đặt số Thread là 100; JMeter sẽ tạo và mô phỏng 100 yêu cầu (request) của người dùng đến máy chủ đang được thử nghiệm

Cách thêm ThreadGroup: Click chuột phải vào Test Plan-> Hover over Threads(Users)-> Click Thread Group

Hãy khám phá các tùy chọn của Thread Group:

  • Number Of Threads: Nó đại diện cho tổng số người dùng ảo thực hiện việc thực thi tập lệnh thử nghiệm.
  • Ramp-Up Period (tính bằng giây): Nó cho JMeter biết mất bao lâu để đạt đủ số Thread. Ví dụ: nếu bạn có 100 người dùng với Ramp-Up Period là 50 giây, JMeter sẽ mất 50 giây để chạy tất cả 100 Thread, thêm 2 Thread mỗi giây.
  • Loop Count (Số vòng lặp): Đây là số lần thực thi cho tập lệnh. Ví dụ, nếu số vòng lặp là 2 và số Thread là 100 thì tập lệnh sẽ chạy 200 lần. Nếu số vòng lặp được đặt là “mãi mãi” thì các Thread mới sẽ tiếp tục bắt đầu cho đến khi các thử nghiệm dừng lại. Hết thời gian.

Sampler

Sampler trong JMeter cho phép JMeter gửi các loại yêu cầu khác nhau đến một máy chủ.

Cách thêm Sampler: Click chuột phải vào Thread Group -> Di chuột qua Add -> Chọn Sampler -> Chọn Sampler yêu cầu

  • Name: Bất kỳ tên hợp lý nào để phân biệt các loại yêu cầu của bạn.
  • Protocol: Nó đề cập đến giao thức được sử dụng, chẳng hạn như HTTP hoặc HTTPS.
  • Server Name: Đây là tên miền của máy chủ
  • Method: Bất kỳ phương thức nào như GET, PUT, POST, DELETE, v.v. có thể được chọn từ menu thả xuống
  • Path: Đây là đường dẫn của tài nguyên. Ví dụ: “/wiki/Cheese”.
  • Parameters: Bất kỳ tham số nào được yêu cầu truyền vào sẽ được thêm vào trong phần này.
  • Body Data: Điều này có hiệu lực nếu bất kỳ file như JSON, XML, v.v. nào cần được chuyển trong yêu cầu. Điều đó được thêm vào Body Data.

HTTP Request Defaults

Nếu bạn định gửi nhiều yêu cầu đến cùng một máy chủ web, hãy cân nhắc việc sử dụng HTTP Request Defaults để bạn không phải nhập thông tin giống nhau cho mỗi HTTP Request.

Cách thêm: Nhấp chuột phải vào một trong hai Test Plan/Thread Group/Logic Controller -> Di chuột qua Add -> Di chuột qua Config Element -> Click chuột HTTP Request Defaults

Logic Controllers

Logic Controllers sẽ quyết định “Khi nào và Cách thức” gửi yêu cầu đến máy chủ web.

Cách thêm: Click chuột phải vào Thread Group -> Add -> Logic Controllers -> Click vào Logic Controllers yêu cầu

Random Controller làm cho tất cả các yêu cầu của người dùng chạy theo thứ tự ngẫu nhiên trong mỗi chu kỳ vòng lặp.

Ví dụ: bạn có 3 yêu cầu của người dùng đến trang web https://www.google.com theo thứ tự sau:

  1. HTTP request
  2. FTP request
  3. JDBC request

PreProcessors

Pre-Processors thực hiện một số hành động ngay trước khi chạy sample. Các phần tử Pre Processor được sử dụng để sửa đổi các yêu cầu của trình lấy sample trước khi xử lý chúng (do đó có tên là pre-processor).

Cách thêm: Click chuột phải vào một trong hai Test Plan/Thread Group -> Add -> Add element-> Click chọn PreProcessors

Ví dụ: User Parameters

User Parameters được sử dụng để xác định giá trị cho các biến trước khi chúng được sử dụng trong Sample. Khi JMeter thực thi phần tử Pre-Processor này, nó sẽ lưu trữ các giá trị trong các biến có thể được tham chiếu bởi bất kỳ Sample nào trong cùng một Thread Group.

Post-Processor 

Nó sẽ được thực thi khi một Sampler yêu cầu kết thúc quá trình thực thi của nó. Nếu bạn cần sử dụng post-processor cho một Sampler cụ thể, thì hãy thêm bộ xử lý này làm con của Sampler đó

Cách thêm: Click chuột phải vào một trong hai Test Plan/Thread Group -> Add -> Add element-> Click vào Post-Processors

Ví dụ: Regular Expression Extractor

Nó cho phép người dùng trích xuất các giá trị từ phản hồi của máy chủ bằng cách sử dụng biểu thức chính quy kiểu Perl.

Assertions

Một assertion trong JMeter được sử dụng để xác thực phản hồi của yêu cầu mà bạn đã gửi đến máy chủ.

Cách thêm: Click chuột phải vào một trong hai Test Plan/Thread Group -> Add -> Add element -> Click chọn Assertions

Ví dụ: Duration Assertion

Duration Assertion kiểm tra rằng mỗi phản hồi máy chủ đã được nhận trong một khoảng thời gian nhất định. Bất kỳ phản hồi nào kéo dài hơn số mili giây nhất định (do người dùng chỉ định) sẽ được đánh dấu là phản hồi không thành công.

Timer

Timer cho phép JMeter trì hoãn giữa mỗi yêu cầu mà một thread thực hiện. Timer có thể giải quyết vấn đề quá tải của máy chủ.

Cách thêm: Click chuột phải vào Thread Group -> Add -> Timer -> Chọn Timer theo yêu cầu

Ví dụ: Constant Timer

Constant timer trì hoãn mỗi yêu cầu của người dùng trong cùng một khoảng thời gian. Nếu không có timer, Jmeter sẽ gửi yêu cầu tiếp theo trong vài giây.

Configuration Elements

Configuration Element cho phép khai báo các biến, vì vậy Sampler có thể sử dụng dữ liệu thông qua các biến này

Cách thêm: Click chuột phải vào một trong Test Plan/Thread Group/Logic Controller -> Add -> Config Element -> Click vào Config Element theo yêu cầu

Ví dụ:

1 – Counter

Counter config element được sử dụng để tạo một biến được tăng theo giá trị đã chỉ định trong mỗi lần lặp trong phạm vi giá trị tối thiểu và tối đa.

2 – CSV Data Set Config

CSV Data Set Config được sử dụng để đọc dữ liệu từ tệp định dạng văn bản hoặc CSV. Ví dụ: Nếu bạn cần thực hiện kiểm tra Load của một kịch bản đăng nhập với 100 người dùng duy nhất. Chuẩn bị dữ liệu trong tệp CSV với 100 bản ghi người dùng có tên người dùng và mật khẩu và bạn có thể sử dụng dữ liệu tệp này trong mọi chuỗi thông qua các biến trong yêu cầu/sampler của bạn bằng cách sử dụng phần tử cấu hình này.

Hãy xem cách định cấu hình CSV Data Set:

  • Filename: đường dẫn đến tệp CSV chứa dữ liệu.
  • File Encoding: có thể là UTF-8 chẳng hạn. Mã hóa ký tự ảnh hưởng đến cách tệp được đọc.
  • Variable Names: danh sách tên được phân tách bằng dấu phẩy, phải là số lượng tên bằng số cột trong tệp CSV. Ví dụ: đăng nhập, mật khẩu.
  • Recycle on EOF: true theo mặc định, nếu JMeter khởi động lại từ đầu khi đến End Of File

Listeners

Hiển thị kết quả của việc thực hiện kiểm tra. Chúng có thể hiển thị kết quả ở một định dạng khác như cây, bảng, biểu đồ hoặc tệp nhật ký

Listeners có thể được thêm vào bất kỳ đâu trong bài kiểm tra, kể cả trực tiếp trong kế hoạch kiểm tra. Họ sẽ chỉ thu thập dữ liệu từ các phần tử bằng hoặc thấp hơn mức của họ.

Ví dụ: nếu chúng ta thêm Listeners vào Thread Group, nó chỉ thu thập thông tin cụ thể cho Thread Group đó. Nếu bạn có 3 Thread Group và một Listeners được đính kèm vào mỗi nhóm, ba bộ Thread Group đó sẽ hiển thị ba bộ dữ liệu khác nhau.

Cách thêm: Click chuột phải vào Test plan -> Add -> Listener -> Click vào Listener yêu cầu

Non-Test Element 

Ví dụ: HTTP(S)TestScriptRecorder

HTTP(S) Test Script Recorder có thể được sử dụng để ghi lại tất cả các yêu cầu mà ứng dụng web của bạn gửi đến máy chủ.

Dưới đây là quy trình sử dụng đầu ghi này:

Thêm Non-Test Element HTTP(s) Test Script Recorder
Nhập port number không được sử dụng.
Áp dụng proxy trên trình duyệt bạn muốn ghi lại và sử dụng cùng một số cổng.
Khởi động JMeter Proxy Server
Ghi lại các hành động

Giảm yêu cầu tài nguyên

  • Sử dụng chế độ CLI: jmeter -n -t test.jmx -l test.jtl
  • Sử dụng càng ít Listeners càng tốt; nếu sử dụng flag -l như trên, tất cả chúng có thể bị xóa hoặc vô hiệu hóa.
  • Không sử Listeners “View Results Tree” hoặc “View Results in Table” trong quá trình kiểm tra Load, chỉ sử dụng chúng trong giai đoạn tạo script để gỡ lỗi script của bạn.
  • Thay vì sử dụng nhiều Sampler giống nhau, hãy sử dụng cùng một Sampler trong một vòng lặp và sử dụng các biến (CSV Data Set) để thay đổi Sampler. [Controller không giúp ích gì ở đây, vì nó thêm tất cả các phần tử kiểm tra trong tệp vào Test plan.]
  • Không sử dụng chế độ chức năng
  • Sử dụng đầu ra CSV thay vì XML
  • Chỉ lưu dữ liệu bạn cần
  • Sử dụng càng ít Assertions càng tốt

Kết quả Jmeter Test Plan

Cách giải quyết lỗi HTTP 400 Bad Request?

Giải pháp: Kiểm tra tải trọng, URL, header, port number và path.

Cách giải quyết lỗi HTTP 500 internal server?

Giải pháp: Thực hiện cùng một yêu cầu theo cách thủ công bằng trình duyệt cũng xác minh URL nào trong số 10 URL đang được thử nghiệm đang tạo ra một nút cổ chai

Nguồn: https://www.zymr.com/performance-testing-using-jmeter/

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Copy link
Powered by Social Snap