Nội dung bài học

Ở bài này mình sẽ giới thiệu các thành phần của một Test plan.
Trước tiên, chúng ta cần hiểu Test Plan là gì?

 

1. Test Plan

Trong JMeter thì Test Plan được hiểu là một tài liệu mô tả cụ thể các hoạt động (các bước) trong kịch bản kiểm thử Performance testing. Là một tập hợp các thành phần và cấu hình mô tả cách JMeter sẽ thực hiện, thu thập và phân tích dữ liệu kiểm thử.

Trong Test Plan thì người dùng có thể tạo ra một hoặc nhiều Thead Group, mỗi Thread Group chứa các cấu hình, phần thử cũng như thao tác khác nhau để thực hiện quá trình kiểm thử. Test Plan có thể bao gồm các thành phần sau: Sampler (đại diện cho các yêu cầu HTTP), Listener (để thu thập và hiển thị kết quả kiểm thử), Timers (để kiểm soát tốc độ thực hiện yêu cầu), Assertions (để kiểm tra kết quả trả về từ máy chủ), và nhiều thành phần khác nữa.

Test plan trong JMeter cung cấp cho người dùng một phương tiện để tạo ra các kịch bản kiểm thử tải, điều chỉnh cấu hình và thu thập các dữ liệu liên quan đến hiệu suất của ứng dụng hoặc dịch vụ web.

 

2. Thread (Users)

Thread (Users) hay gọi là Thead Group trong JMeter là một thành phần quan trọng của Test Plan. Nó định nghĩa số lượng luồng (threads) được tạo ra trong quá trình thực hiện kiểm thử. Hiểu một cách đơn giản là số lượng người dùng bạn muốn JMeter giả lập trong kịch bản kiểm thử của mình.

Khi bạn tạo một Thread Group, bạn cần cung cấp các thông số sau:

  • Số lượng người dùng (Number of Threads): Xác định số lượng luồng tương đương với số lượng người dùng truy cập ứng dụng.
  • Chu kỳ (Ramp-up period): Xác định thời gian JMeter sẽ tạo ra các luồng mới trong khoảng thời gian định trước. Ví dụ: nếu bạn đặt giá trị này là 10 giây và số lượng người dùng là 100, JMeter sẽ tạo ra 10 luồng mới mỗi giây cho đến khi đạt được 100 luồng.
  • Số lần lặp lại (Loop Count): Xác định số lần mà các yêu cầu HTTP được thực hiện trong mỗi luồng. Nếu bạn muốn thực hiện kiểm thử trong một khoảng thời gian nhất định, bạn có thể sử dụng giá trị "Infinite".
  • Một số thiết lập khác

Thread Group cũng cho phép bạn thực hiện các cấu hình khác như đặt tên, sử dụng biến, tạo ra các báo cáo và các biểu đồ thống kê về kết quả kiểm thử. Bằng cách sử dụng Thread Group, bạn có thể kiểm tra hiệu suất của ứng dụng của mình với nhiều người dùng và đảm bảo rằng nó có thể xử lý tải lớn mà không bị lỗi hoặc chậm trễ.

 

3. Config Elements

Config Elements là các thành phần dùng để cấu hình môi trường thử nghiệm và các tham số để chạy các kịch bản thử nghiệm. Chúng được sử dụng để thiết lập các giá trị và tham số cho các yêu cầu HTTP, JDBC, LDAP, JMS, SMTP, FTP và các giao thức khác được hỗ trợ trong JMeter.

Một số loại Config Elements phổ biến trong JMeter bao gồm:

  1. HTTP Authorization Manager: Cho phép cấu hình thông tin xác thực (authentication) cho các yêu cầu HTTP, bao gồm tên đăng nhập, mật khẩu, mã thông báo (token), v.v. Nó có thể được sử dụng để thực hiện xác thực cơ bản hoặc xác thực nâng cao (digest authentication).
  2. DNS Cache Manager: Cải thiện hiệu suất thử nghiệm bằng cách lưu trữ và sử dụng bộ đệm DNS. Nó giúp giảm thời gian phản hồi cho các yêu cầu DNS khi đang chạy thử nghiệm với nhiều yêu cầu DNS.
  3. FTP Request Defaults: Thiết lập các giá trị mặc định cho các yêu cầu FTP. Các giá trị này bao gồm tên người dùng, mật khẩu, cổng, đường dẫn thư mục, v.v.
  4. JDBC Connection Configuration: Cho phép cấu hình kết nối đến cơ sở dữ liệu JDBC. Nó bao gồm các thông tin như đường dẫn JDBC, tên người dùng, mật khẩu, v.v.
  5. LDAP Request Defaults: Thiết lập các giá trị mặc định cho các yêu cầu LDAP. Các giá trị này bao gồm tên người dùng, mật khẩu, cổng, đường dẫn thư mục, v.v.
  6. SMTP Sampler: Cho phép gửi email trong quá trình thử nghiệm. Nó bao gồm các thông tin như địa chỉ email người gửi, địa chỉ email người nhận, tiêu đề, nội dung, v.v.
  7. TCP Sampler Config: Cấu hình các giá trị mặc định cho các yêu cầu TCP. Các giá trị này bao gồm địa chỉ IP, cổng, kích thước buffer, v.v.
  8. User Defined Variables: (thường được sử dụng) Định nghĩa các biến để sử dụng trong các kịch bản thử nghiệm. Chúng có thể được sử dụng để lưu trữ các giá trị như đường dẫn, tên người dùng, mật khẩu, v.v.
  9. CSV Data Set Config: (thường được sử dụng) Thiết lập đường dẫn đến file CSV chứa dữ liệu để sử dụng trong các kịch bản thử nghiệm. Dữ liệu trong file CSV được sử dụng để tạo ra các yêu cầu HTTP hoặc JDBC.

Sử dụng các Config Elements trong JMeter giúp tạo ra các kịch bản thử nghiệm linh hoạt hơn và cung cấp nhiều tùy chọn cấu hình để điều chỉnh và kiểm soát các tham số trong quá trình thử nghiệm.

 

4. Listener

Listener trong JMeter là một thành phần được sử dụng để thu thập kết quả của các hoạt động thử nghiệm (test) JMeter. Listener cung cấp cho người dùng một số dạng báo cáo về các kết quả thử nghiệm, chẳng hạn như số lần truy cập thành công, thời gian phản hồi trung bình và tỷ lệ lỗi.

Một số loại Listener phổ biến trong JMeter bao gồm:

  1. View Results Tree: Đây là Listener phổ biến nhất trong JMeter và cho phép bạn xem chi tiết của mỗi yêu cầu HTTP. Nó hiển thị các thông số như thời gian bắt đầu, thời gian kết thúc, thời gian phản hồi, kết quả và các thông tin yêu cầu/ phản hồi HTTP chi tiết khác.
  2. Aggregate Report: Listener này cung cấp thông tin tổng hợp về các yêu cầu HTTP trong thử nghiệm. Nó cho phép bạn xem tổng số yêu cầu, tỷ lệ thành công/thất bại, thời gian xử lý trung bình và các thông tin khác.
  3. Summary Report: Listener này cung cấp một tóm tắt ngắn gọn về các kết quả của thử nghiệm. Nó cho phép bạn xem tổng số yêu cầu, tỷ lệ thành công/thất bại, thời gian phản hồi trung bình và các thông tin khác.
  4. Graph Results: Listener này hiển thị dữ liệu thời gian phản hồi của các yêu cầu HTTP trong một biểu đồ. Nó cho phép bạn theo dõi thời gian phản hồi trung bình, thời gian xử lý tối đa và các thông tin khác.
  5. Response Times Over Time: Listener này hiển thị biểu đồ về thời gian phản hồi trung bình của các yêu cầu HTTP theo thời gian. Nó cho phép bạn theo dõi sự thay đổi của thời gian phản hồi theo thời gian và phát hiện các sự cố hiệu suất.
  6. Aggregate Graph: Listener này hiển thị biểu đồ thống kê về các yêu cầu HTTP và các thông tin khác trong thử nghiệm. Nó cho phép bạn theo dõi tổng số yêu cầu, tỷ lệ thành công/thất bại, thời gian phản hồi trung bình và các thông tin khác.
  7. View Results in Table: Listener này hiển thị thông tin chi tiết về các yêu cầu HTTP trong một bảng. Nó cho phép bạn xem thông tin về thời gian phản hồi, kích thước yêu cầu/ phản hồi và các thông tin khác.

Khi sử dụng Listener trong JMeter, bạn nên lưu ý rằng chúng có thể tốn nhiều tài nguyên và ảnh hưởng đến hiệu suất của thử nghiệm, vì vậy bạn nên chỉ sử dụng các Listener cần thiết và tắt các Listener không cần thiết khi không sử dụng chúng.

 

5. Pre-Processor

Pre-Processor được sử dụng để thực hiện một số thao tác trước khi yêu cầu HTTP được gửi đến máy chủ. Các Pre-Processor này được thực hiện trước khi yêu cầu được gửi, do đó chúng sẽ ảnh hưởng đến dữ liệu được gửi đến máy chủ. Dưới đây là chi tiết về các loại Pre-Processor trong JMeter:

  1. HTTP URL Re-writing Modifier: Pre-Processor này được sử dụng để sửa đổi URL trước khi yêu cầu HTTP được gửi đến máy chủ. Nó cho phép bạn sửa đổi URL cho các mục đích kiểm thử như thay đổi tham số, thay đổi giá trị của các trường trong URL. Ví dụ, nếu bạn muốn kiểm tra trang web động, bạn có thể sử dụng Pre-Processor này để thay đổi các tham số trong URL như username, password, page number, ...
  2. User Parameters: Pre-Processor này được sử dụng để thêm các thông tin yêu cầu trước khi gửi yêu cầu. Nó cho phép bạn thêm tham số động vào yêu cầu HTTP, chẳng hạn như thời gian hiện tại hoặc giá trị được tạo ngẫu nhiên. Ví dụ, nếu bạn muốn kiểm tra sự đáp ứng của máy chủ khi có nhiều người dùng truy cập, bạn có thể sử dụng Pre-Processor này để thêm tên người dùng và mật khẩu động.
  3. JDBC PreProcessor: Pre-Processor này được sử dụng để truy vấn cơ sở dữ liệu trước khi yêu cầu được gửi đến máy chủ. Nó cho phép bạn sử dụng dữ liệu từ cơ sở dữ liệu để tạo yêu cầu HTTP hoặc thay đổi các giá trị của yêu cầu HTTP. Ví dụ, nếu bạn muốn kiểm tra tốc độ truy cập của một ứng dụng web dựa trên cơ sở dữ liệu, bạn có thể sử dụng Pre-Processor
  4. HTML Link Parser: Khi một trang web được tải về, nó thường chứa nhiều liên kết đến các tài nguyên khác nhau như hình ảnh, CSS, JavaScript, ... Để tải toàn bộ nội dung của trang web, JMeter cần phải tải tất cả các tài nguyên này. HTML Link Parser giúp JMeter tìm các liên kết này và tạo ra các yêu cầu HTTP mới để tải các tài nguyên khác. Điều này cho phép JMeter tải toàn bộ nội dung của trang web và tạo ra các yêu cầu tải đồng thời nhiều tài nguyên, giúp giảm thời gian tải trang web,

Những Pre-Processor này cùng với các Processor khác trong JMeter cho phép bạn thực hiện các thao tác tùy chỉnh và kiểm soát các yêu cầu HTTP trong quá trình kiểm thử.

 

6. Post Processor

Post Processor là một thành phần trong JMeter được sử dụng để xử lý phản hồi HTTP trả về từ máy chủ web sau khi yêu cầu đã được gửi. Post Processor cho phép người dùng thực hiện các hành động trên phản hồi như phân tích nội dung, trích xuất dữ liệu, lọc dữ liệu, biến đổi dữ liệu, ... để chuẩn bị cho bước tiếp theo của kịch bản kiểm thử.

Các loại Post Processor được hỗ trợ trong JMeter bao gồm:

  1. Regular Expression Extractor: sử dụng biểu thức chính quy (regex) để tìm kiếm và trích xuất dữ liệu từ phản hồi HTTP. Đây là loại Post Processor phổ biến nhất trong JMeter.
  2. JSON Extractor: sử dụng biểu thức JSONPath để tìm kiếm và trích xuất dữ liệu từ phản hồi HTTP dạng JSON.
  3. XPath Extractor: sử dụng biểu thức XPath để tìm kiếm và trích xuất dữ liệu từ phản hồi HTTP dạng XML. CSS/JQuery Extractor: sử dụng trình chọn CSS/JQuery để tìm kiếm và trích xuất dữ liệu từ phản hồi HTTP dạng HTML hoặc XHTML.
  4. Boundary Extractor: tìm kiếm và trích xuất dữ liệu giữa hai ký tự hoặc chuỗi ký tự được chỉ định trong phản hồi HTTP.
  5. Regular Expression Post Processor: sử dụng biểu thức chính quy để xác định xem phản hồi HTTP có chứa một chuỗi ký tự hay không. Nếu phản hồi HTTP chứa chuỗi ký tự, Post Processor sẽ trả về giá trị true.
  6. JSR223 Post Processor: cho phép người dùng viết các kịch bản xử lý dữ liệu bằng các ngôn ngữ lập trình như Java, JavaScript, Groovy, hoặc Python.

Các loại Post Processor này cung cấp cho người dùng nhiều tùy chọn để trích xuất và xử lý dữ liệu phản hồi HTTP, tùy thuộc vào kiểu dữ liệu và mục đích kiểm thử.

 

7. Assertions

Trong JMeter, Assertion là một thành phần quan trọng của kiểm thử tải. Assertion được sử dụng để kiểm tra các phản hồi HTTP của một yêu cầu, đảm bảo rằng các phản hồi này đáp ứng các tiêu chí được xác định. Nếu phản hồi không đáp ứng được các tiêu chí này, Assertion sẽ ghi nhận một lỗi, và kịch bản kiểm thử sẽ không thành công.

Có nhiều loại Assertion khác nhau trong JMeter, sau đây là một số loại phổ biến:

  1. Response Assertion: Kiểm tra phản hồi HTTP của một yêu cầu. Có thể kiểm tra xem phản hồi có chứa một chuỗi ký tự cụ thể hay không, hoặc có phù hợp với biểu thức chính quy hay không. Các tùy chọn khác bao gồm kiểm tra độ dài phản hồi, kiểm tra có chứa một mẫu dữ liệu XML hay không, kiểm tra xem phản hồi có mã trạng thái HTTP mong đợi hay không.
  2. Duration Assertion: Kiểm tra thời gian phản hồi của yêu cầu. Có thể kiểm tra xem thời gian phản hồi có nằm trong một khoảng thời gian nhất định hay không.
  3. Size Assertion: Kiểm tra kích thước phản hồi của yêu cầu. Có thể kiểm tra xem kích thước phản hồi có nằm trong một khoảng giá trị nhất định hay không. XML Assertion: Kiểm tra phản hồi HTTP dạng XML của một yêu cầu. Có thể kiểm tra xem phản hồi có phù hợp với một mẫu dữ liệu XML hay không.
  4. HTML Assertion: Kiểm tra phản hồi HTTP dạng HTML của một yêu cầu. Có thể kiểm tra xem phản hồi có phù hợp với một mẫu dữ liệu HTML hay không. XPath Assertion: Kiểm tra phản hồi HTTP của một yêu cầu bằng cách sử dụng XPath để truy xuất vào một phần của phản hồi và kiểm tra nó có giá trị mong đợi hay không.
  5. JSON Assertion: Kiểm tra phản hồi HTTP dạng JSON của một yêu cầu. Có thể kiểm tra xem phản hồi có phù hợp với một mẫu dữ liệu JSON hay không.
  6. BeanShell Assertion: Cho phép người dùng viết các kịch bản xử lý dữ liệu bằng ngôn ngữ lập trình BeanShell.
  7. JSR223 Assertion: Cho phép người dùng viết các kịch bản xử lý dữ liệu bằng các ngôn ngữ lập trình như Java, JavaScript, Groovy hoặc Python.

Các loại Assertion này cung cấp cho người dùng nhiều tùy chọn để kiểm tra và đánh giá các phản hồi HTTP của các yêu cầu, đảm bảo rằng các ứng dụng web đáp ứng được các tiêu chuẩn và yêu cầu của người dùng.

8. Timer

Timer được sử dụng để tạo ra các khoảng thời gian giữa các yêu cầu trong một Thread Group. Khi thực hiện một Thread Group, các yêu cầu sẽ được gửi tới server mà không có bất kỳ khoảng thời gian chờ đợi nào giữa chúng. Điều này có thể gây tải quá mức cho server và làm giảm hiệu suất của ứng dụng. Các Timer trong JMeter giúp tạo ra các khoảng thời gian chờ đợi giữa các yêu cầu.

Các loại Timer phổ biến trong JMeter bao gồm:

  1. Constant Timer: Tạo ra một khoảng thời gian chờ đợi cố định giữa các yêu cầu. Khoảng thời gian này được thiết lập bởi người dùng.
  2. Uniform Random Timer: Tạo ra một khoảng thời gian chờ đợi ngẫu nhiên giữa các yêu cầu, trong khoảng thời gian được thiết lập bởi người dùng.
  3. Gaussian Random Timer: Tạo ra một khoảng thời gian chờ đợi ngẫu nhiên theo phân phối Gauss giữa các yêu cầu.
  4. Poisson Random Timer: Tạo ra một khoảng thời gian chờ đợi ngẫu nhiên theo phân phối Poisson giữa các yêu cầu.
  5. Synchronizing Timer: Sử dụng để đồng bộ hóa các yêu cầu trong một Thread Group. Timer này sẽ chờ đến khi tất cả các Thread trong Thread Group đến điểm đồng bộ hóa, trước khi gửi các yêu cầu tiếp theo.
  6. Constant Throughput Timer: Sử dụng để đạt được một số lượt truy cập cố định trên đơn vị thời gian cho mỗi Thread.
  7. JSR223 Timer: Cho phép người dùng viết các kịch bản xử lý dữ liệu bằng các ngôn ngữ lập trình như Java, JavaScript, Groovy hoặc Python.

Các Timer trong JMeter là công cụ hữu ích để kiểm tra hiệu suất của ứng dụng và giúp đồng bộ hóa các yêu cầu trong một Thread Group.

 

9. Test Fragment

Test Fragment trong JMeter là một thành phần được sử dụng để tái sử dụng các phần của kịch bản kiểm thử trong các kịch bản khác mà không cần phải sao chép và dán lại các yêu cầu tương tự. Test Fragment giúp tăng khả năng tái sử dụng và quản lý các kịch bản kiểm thử.

Test Fragment chứa các thành phần giống như một kịch bản kiểm thử bình thường, bao gồm các yêu cầu HTTP, Cookie Manager, các biến, hàm, assertions, và các thành phần khác. Nó có thể được tạo ra bằng cách kéo và thả các thành phần từ thanh công cụ JMeter vào bên trong Test Fragment.

Test Fragment có thể được sử dụng trong các kịch bản kiểm thử khác bằng cách sử dụng thành phần Include Controller. Include Controller cho phép thêm Test Fragment vào kịch bản kiểm thử hiện tại, cho phép tái sử dụng các thành phần và các yêu cầu đã được định nghĩa trong Test Fragment. Bằng cách sử dụng Test Fragment và Include Controller, người dùng có thể tạo ra các kịch bản kiểm thử có tính tái sử dụng cao và dễ dàng quản lý.

Tóm lại, Test Fragment là một thành phần quan trọng của JMeter, giúp tăng khả năng tái sử dụng và quản lý các kịch bản kiểm thử.

 

Document

Student feedback

4.8
Course Rating
70%
15%
20%
3%
2%

Reviews

Write a Review