25/05/2022
Tổng quan Performance Testing và Jmeter
Mục lục
Trước khi bắt đầu tham gia khóa học Performance Testing mà AMELA tổ chức cho đội ngũ Tester của công ty để củng cố thêm kiến thức, thì mình chỉ nghĩ Jmeter chỉ đơn thuần là kiểm thử hiệu năng, là nói đến tốc độ xử lý, quá tải,… Và hiện tại khi đang học khóa học này thì mình thấy Jmeter còn có thể test được cả API nữa.
Trong bài viết hôm nay, mình sẽ chia sẻ tổng quan về Performance Testing và Jmeter:
Performance testing overview
Khái niệm
Performance Testing là:
- Test hiệu năng
- Thực hiện trên 1 hệ thống, 1 ứng dụng, từ đó sẽ đo được một số thuộc tính:
+ Response time: Thời gian phản hồi, thời gian vào hệ thống nhanh hay chậm. Response time THẤP thì tốt
+ Throughput: Số request mà server có thể xử lý được trong 1 đơn vị thời gian (requests / s – rps). Throughput càng CAO càng tốt.
Performance testing type
Có rất nhiều kiểu test bao gồm:
- Load testing: Đánh giá ứng dụng, tìm ngưỡng của hệ thống có thể xử lý tốt (nhưng đừng nhầm lẫn là tìm ngưỡng mà hệ thống “sập”) . Xác định được Maximum load là bao nhiêu.
- Stress testing: Quá sức chịu đựng của hệ thống hay đánh giá ngoài khả năng chịu đựng. Tìm điểm chết của hệ thống, hệ thống có thể khả năng phục hồi lại không.
- Spike testing: Thường áp dụng với hệ thống Thương mại điện tử. Đánh giá sự đột biến cao với khoảng thời gian ngắn thì hệ thống sẽ xử lý như nào.
VD: Như những đợt Flash sale của shoppe, lazada, thì những ngày chạy flash sale sẽ có số lượng người dùng vào rất lớn, lớn quá khả năng chịu đựng của hệ thống thì cần phải có cách xử lý. Xử lý sẽ phụ thuộc vào hệ thống yêu cầu.
- Endurance testing (Soak testing): Kiểm tra độ bền của hệ thống với thời gian ít nhất là 8h.
- Scalability testing: Test khả năng mở rộng của hệ thống.
- Volume testing: Test số lượng bản ghi trong database lớn.
Khi giới thiệu đến đây, sẽ có bạn thắc mắc: “Thế Performance Testing là kiểu gì?” Thực ra, nó chẳng phải là 1 kiểu test cụ thể nào cả, nó là một thuật ngữ dùng chung cho tất cả các kiểu trên.
Performance testing procedure: Quy trình test performance
- Identify test environment: Xác định môi trường test là môi trường nào.
VD: Production, test, staging
- Plan and design tests: Lên test plan, thực hiện trong bao lâu, đưa luồng chính nào vào để test.
- Identify performance acceptance criteria: Xác định tiêu chí đáp ứng của khách hàng như nào.
- Configure test environment: Config hệ thống.
- Implement test design: Thực hiện viết test script.
- Execute test: Thực hiện Test
- Analysis and report: Phân tích xem tính năng nào ok, hay tính năng nào chạy chậm.
Jmeter overview
Khái niệm Jmeter
- Jmeter chuyên về thực hiện Performance Testing
- Có thể thực hiện automation test, test API
Cách cài đặt Java, Jmeter
- Truy cập vào trang sau để tải Jmeter: https://jmeter.apache.org/download_jmeter.cgi
- Download JDK
- Nên cài Java 8
(Các bạn có thể lên mạng search cách cài đặt Jmeter nhé)
Giới thiệu về các elements trong tool Jmeter
Các bạn cần chú ý một số các element:
- Test plan:
- Là nơi thêm các element cần thiết để test Jmeter
- Test Plan lưu trữ tất cả các elements (như ThreadGroup, Timers…)
Hình dưới đây là một ví dụ về Test Plan:
- Thread group:
- Là điểm bắt đầu của một test plan bất kỳ. Tất cả các Controllers và Samplers phải được đặt dưới một thread group. Những elements còn lại ( ví dụ Listeners ) có thể đặt trực tiếp dưới test plan.
- Cách thêm Thread group:
- Configuration elements: Không thực hiện gửi request lên server, mà nó giúp Samplers gửi request lên như thế nào.
+ Một số yếu tố cấu hình thường được sử dụng trong JMeter:
+ CSV Data Set Config: Giả sử bạn muốn kiểm tra một trang web cho 100 người dùng đăng nhập bằng các thông tin đăng nhập khác nhau. Bạn không cần phải ghi lại kịch bản 100 lần! Bạn có thể tham số hóa tập lệnh để nhập thông tin đăng nhập khác nhau. Thông tin đăng nhập này (ví dụ: Tên người dùng, mật khẩu) có thể được lưu trữ trong một tệp văn bản. JMeter có một yếu tố cho phép bạn đọc các tham số khác nhau từ tệp văn bản đó. Đó là “CSV Data Set Config”, được sử dụng để đọc các dòng từ tệp và chia chúng thành các biến.
+ Một ví dụ về CSV Data. Đây là một tệp văn bản chứa thông tin người dùng và mật khẩu để đăng nhập trang web mục tiêu của bạn.
+ HTTP request default: Phần tử này cho phép bạn đặt các giá trị mặc định mà HTTP Request controllers của bạn sử dụng.
Ví dụ: Bạn đang gửi 100 HTTP requests đến máy chủ google.com . Bạn sẽ phải nhập thủ công tên máy chủ = google.com cho tất cả 100 yêu cầu này. Thay vào đó, bạn có thể thêm một HTTP request defaults với trường “Server Name or IP” = google.com. Không cần gõ 100 lần!
- Sampler: Mô phỏng các request bắn lên server (VD: http request, FPT request, … )
* Cách add 1 Sampler như hình bên dưới:
- Listeners: Listener hiển thị kết quả thực hiện test. Nó có thể hiển thị kết quả ở định dạng khác nhau như cây, bảng, biểu đồ hoặc file log.
- Timer: Dùng để delay thời gian
- Mặc định, Jmeter thực thi sampler theo tuần tự mà không dừng.
- Một timer element sẽ làm cho Jmeter tạo ra một thời gian chờ nhất định trước mỗi sampler thuộc phạm vi của timer.
- Có rất nhiều timers được cung cấp trong JMeter: Constant Timer, Gaussian Random Timer, Uniform Random Timer, Synchronizing Timer,.. Trong bài này , ta chỉ tập trung vào Constant Timer thôi vì theo mình nó là đơn giản nhất.
- Mục đích của Constant Timer là dùng cùng 1 khoảng thời gian giữa các request trong từng thread Đây là bảng config Constant Timer:
* Chỉ có 1 tham số cho Timer: Thread Delay (in milliseconds). Nó là số milliseconds tạm dừng. Ví dụ, cầu hình trên sẽ thêm 300ms trì hoãn trước khi thực hiện từng sampler. Nếu bạn muốn dừng 5 giây thì nhập 5000.
- Assertions: Dùng để so sánh kết quả thực tế với kết quả mong muốn
– Response Assertion xác nhận kết quả trả về sử dụng các field: Text Response, Response Code, Response Message, Response Headers, Request Headers, URL Sampled, Document (text), Ignore Status, Request Data.
- Pre-Processors
- Thực thi một số hành động tại thời điểm một Sampler Request được khởi tạo
- Nếu một Pre-Processor được đính kèm tới một sampler, nó sẽ chỉ thực thi tạo thời điểm trước khi sampler đó chạy
- Post-Processors
- Thực thi một số hành động tại thời điểm sau khi một sampler request đã chạy xong
- Nếu một Post-Processor được đính kèm tới một sampler, nó sẽ chỉ thực thi tại thời điểm sau khi sampler đó chạy xong.
Một chút kiến thức ”sương sương” về Performance Testing và Jmeter. Buổi sau mình sẽ chia sẻ nhiều cái hay ho và thực chiến hơn về chủ đề này nhé!
Biên tập: AMELA