Đang tải...

Lửng Lọc Lõi

Đeo kính để soi Bug cho rõ, nhíu mày để nhắc Dev sửa cho kỹ. Với tôi, 'chạy được' thôi là chưa đủ! 🧐💻


0

Performance Testing Cho Fresher: Công Cụ Miễn Phí & Case Thực Tế Đơn Giản

Lửng Lọc Lõi
Lửng Lọc Lõi

7 tháng trước · 11 phút đọc

Performance testing là gì và tại sao fresher cần biết?

Bạn đang tìm việc tester và thấy trên ITviec rất nhiều JD ghi "có kinh nghiệm performance testing là lợi thế"? Điều đó không có nghĩa bạn phải biết code phức tạp hay dùng công cụ đắt tiền. Performance testing là kỹ năng hoàn toàn học được trong vài tuần - và công cụ miễn phí đủ dùng cho 80% công việc thực tế.

Nói đơn giản, performance testing (kiểm thử hiệu năng) là kiểm tra xem hệ thống chịu được bao nhiêu người dùng cùng lúc, phản hồi có đủ nhanh không, và sẽ ra sao khi traffic tăng đột biến. Hình dung thế này: bạn mở website bán hàng ngày sale 11/11, hàng chục ngàn người cùng nhấn "Mua ngay" - hệ thống có sập không?

342339 Performance testing kiểm tra đúng lúc traffic tăng đột biến như 11/11

Có 3 loại bạn cần biết ngay:

  • Load testing (kiểm thử tải): Mô phỏng số lượng người dùng dự kiến - ví dụ 100 người cùng truy cập - xem hệ thống có đáp ứng bình thường không.
  • Stress testing (kiểm thử chịu tải): Đẩy số người dùng vượt giới hạn để tìm "điểm gãy" - hệ thống bắt đầu chậm hoặc lỗi ở ngưỡng nào.
  • Spike testing (kiểm thử đột biến): Tăng traffic rất nhanh rồi giảm lại đột ngột - giống tình huống flash sale thực tế.

Tại sao fresher nên học? {{fact:fact_0}} job tester tại Việt Nam năm 2024 yêu cầu hoặc ưu tiên kinh nghiệm performance/load testing. Biết thêm kỹ năng này giúp bạn nổi bật hơn hẳn so với ứng viên chỉ biết manual test thuần túy.

Và quan trọng hơn: hậu quả của việc bỏ qua performance testing rất thực tế. Mình từng chứng kiến một app thương mại điện tử không test trước khi chạy chiến dịch quảng cáo - kết quả là website down hoàn toàn sau 15 phút, team mất cả buổi tối khắc phục. Bug về performance thường không xuất hiện khi test tay, chỉ lộ ra khi nhiều người dùng cùng lúc.


Cài JMeter miễn phí trong 5 phút

Apache JMeter là công cụ performance testing miễn phí, open-source, được dùng phổ biến nhất trong ngành. Không cần license, không cần tài khoản, tải về dùng ngay. Nhược điểm duy nhất: giao diện hơi cũ, nhưng sau khi quen thì thao tác khá nhanh.

Bạn cần cài Java trước (JMeter chạy trên Java). Cụ thể:

Bước 1: Cài Java

Vào trang download Java của Oracle hoặc dùng OpenJDK. Cài Java 11 trở lên là ổn. Sau khi cài, mở terminal/cmd gõ java -version để kiểm tra.

java -version
# Kết quả mong đợi:
# java version "11.0.x" hoặc mới hơn

Bước 2: Tải JMeter

Vào {{resource:resource_0}}, tải file .zip (Windows) hoặc .tgz (Mac/Linux). Giải nén ra thư mục bất kỳ - không cần cài đặt gì thêm.

Bước 3: Khởi động

Vào thư mục vừa giải nén → vào thư mục bin → click đúp file jmeter.bat (Windows) hoặc chạy ./jmeter (Mac/Linux). Giao diện JMeter mở ra là xong.

342340 Giao diện JMeter sau khi khởi động - đơn giản hơn bạn nghĩ

Nhiều bạn thấy hơi choáng lần đầu mở JMeter vì giao diện khá "vintage". Bình thường thôi - mình cũng vậy. Thật ra bạn chỉ cần dùng 5-6 tính năng chính để test cơ bản, phần còn lại học dần.


Viết test plan đầu tiên: test website Tiki

Mình dùng Tiki.vn làm ví dụ vì đây là website thương mại điện tử Việt Nam có API công khai, response time phản hồi thực tế rõ ràng để quan sát. Mục tiêu: mô phỏng 50 người dùng đồng thời truy cập trang chủ, đo response time và tỉ lệ lỗi.

Cấu trúc một Test Plan trong JMeter gồm:

  1. Test Plan - container chứa toàn bộ
  2. Thread Group - định nghĩa số user và thời gian test
  3. HTTP Request - request cụ thể cần test
  4. Listeners - xem kết quả (bảng, biểu đồ)

342341 Cấu trúc 4 thành phần cơ bản của một Test Plan JMeter

Tạo Thread Group:

Chuột phải vào Test Plan → Add → Threads (Users) → Thread Group. Điền:

  • Number of Threads (users): 50 (số người dùng ảo)
  • Ramp-Up Period: 10 (tăng từ 0 lên 50 user trong 10 giây)
  • Loop Count: 3 (mỗi user lặp lại 3 lần)

Thêm HTTP Request:

Chuột phải vào Thread Group → Add → Sampler → HTTP Request. Điền:

  • Server Name: tiki.vn
  • Protocol: https
  • Path: / (trang chủ)
  • Method: GET

Thêm Listener để xem kết quả:

Chuột phải vào Thread Group → Add → Listener → View Results Tree (xem chi tiết từng request) và Summary Report (tổng hợp số liệu).

Nhấn nút Play (tam giác xanh) để chạy. JMeter sẽ mô phỏng 50 user truy cập Tiki đồng thời và hiển thị kết quả ngay.

Lưu ý quan trọng: Chỉ test trên website bạn có quyền test, hoặc website cho phép. Với mục đích học tập, dùng số lượng user nhỏ (dưới 100) và không chạy liên tục để tránh ảnh hưởng đến server thật. Tốt nhất là dùng môi trường staging/test của dự án bạn đang làm.


Đọc kết quả và metrics cần chú ý

Chạy test xong, bạn nhìn vào màn hình Summary Report và thấy một đống số. Đừng hoảng - bạn chỉ cần quan tâm 5 con số này:

Metric Tên đầy đủ Ngưỡng ổn (web thông thường)
Average Thời gian phản hồi trung bình < 2000ms
90% Line 90% request phản hồi trong bao lâu < 3000ms
Error % Tỉ lệ request lỗi < 1%
Throughput Số request/giây hệ thống xử lý được Càng cao càng tốt
Max Request chậm nhất < 5000ms

342342 5 metrics quan trọng cần đọc trong Summary Report JMeter

Cách diễn giải kết quả cụ thể:

Giả sử bạn test trang login với 50 users đồng thời và thấy: Average = 850ms, 90% Line = 1200ms, Error% = 0.5%, Throughput = 45 req/s. Đây là kết quả tốt - phản hồi dưới 1 giây, tỉ lệ lỗi gần như không có.

Nhưng nếu Error% = 5% hoặc Average vượt 3000ms, đó là tín hiệu cần báo cáo cho dev team. Kèm theo là thông tin trong View Results Tree: xem response nào lỗi, lỗi HTTP 500 hay 503, để dev biết điểm cụ thể cần tối ưu.

Một số lỗi hay gặp khi mới học:

  • Connection refused: Server từ chối kết nối - kiểm tra URL có đúng không, server có đang chạy không
  • Response timeout: Request không trả về kịp trong thời gian quy định - tăng Connection Timeout lên 10000ms
  • SSL Handshake error: Lỗi HTTPS - vào HTTP Request Defaults, tích chọn "Use KeepAlive"

Thấy khó ở phần đọc metric không? Bình thường - mình cũng mất vài ngày đầu để hiểu con số nào cần chú ý. Sau vài lần chạy test thực tế là quen ngay.


Viết bug report performance: cách báo cáo kết quả cho dev

Phát hiện vấn đề performance rồi - báo cáo thế nào cho dev hiểu và fix được? Đây là kỹ năng nhiều fresher bỏ qua, nhưng thực ra rất quan trọng.

Bug report performance khác bug report thông thường ở chỗ: bạn cần cung cấp điều kiện tái hiện cụ thể - số lượng user, thời gian test, môi trường - vì dev không thể reproduce bằng cách click thủ công.

342343 Cấu trúc bug report performance đầy đủ giúp dev reproduce và fix nhanh hơn

Template bug report performance cơ bản:

[PERF] Trang checkout phản hồi chậm khi tải cao

Môi trường: Staging, JMeter 5.6, Java 11
Điều kiện test: 100 concurrent users, ramp-up 20s, 5 loops

Kết quả đo được:
- Average response time: 4,200ms (vượt ngưỡng 2,000ms)
- 90% Line: 6,800ms
- Error rate: 3.2% (HTTP 500)
- Throughput: 18 req/s

Tác động: Người dùng chờ >4 giây ở bước thanh toán,
tỉ lệ abandon cart tăng.

File kết quả đính kèm: checkout-load-test-result.jtl

Ngắn, đủ thông tin, dev đọc xong biết ngay vấn đề ở đâu. Đặc biệt là file .jtl (kết quả JMeter xuất ra) - đính kèm luôn vào ticket để dev tự kiểm tra chi tiết.

Một lưu ý mình hay nhắc: đừng tự chẩn đoán nguyên nhân trong bug report performance nếu bạn chưa chắc. "Có thể do database query chậm" hay "Có thể do server thiếu RAM" là phỏng đoán, không phải kết quả test. Ghi đúng những gì bạn đo được, để lại phần phân tích cho dev và devops.


Bước tiếp theo: từ fresher đến có kỹ năng thực chiến

Sau khi nắm JMeter cơ bản, bạn có thể tự mở rộng theo 3 hướng:

1. Thêm tham số động (parameterization): Thay vì test 1 URL cố định, dùng CSV Data Set Config để đọc danh sách URL hoặc user/password từ file CSV. Ví dụ: test 100 sản phẩm khác nhau thay vì chỉ test trang chủ.

2. Tích hợp vào CI/CD: JMeter có thể chạy từ command line (jmeter -n -t testplan.jmx -l result.jtl), rất dễ tích hợp vào Jenkins hoặc GitHub Actions. Đây là kỹ năng senior hơn, nhưng biết sớm thì tốt.

3. Học thêm Gatling hoặc k6: Nếu bạn biết code cơ bản, {{resource:resource_3}} là tool performance testing hiện đại, script viết bằng JavaScript đơn giản, báo cáo đẹp hơn JMeter nhiều. k6 được dùng khá nhiều ở startup Việt Nam hiện nay.

342344 Lộ trình từ JMeter cơ bản đến performance testing nâng cao

Về lộ trình học tổng thể cho tester: nếu bạn muốn có nền tảng vững từ manual test đến automation, khóa Kiểm thử phần mềm tại F8 cover từ kiến thức cơ bản đến thực hành thực chiến - phù hợp cho người mới chuyển ngành không cần nền tảng IT sẵn.

Cuối cùng, performance testing không đòi hỏi bạn phải giỏi code. Đòi hỏi bạn tỉ mỉ trong việc thiết lập điều kiện test, kiên nhẫn đọc kết quả, và viết báo cáo rõ ràng. Ba thứ đó - tester nào cũng học được.

Checklist để bắt đầu ngay hôm nay:

  1. Cài Java 11 + JMeter (30 phút)
  2. Tải template test plan ở bài này, chỉnh server name thành dự án bạn đang test
  3. Chạy thử với 10 users trước, đọc Summary Report
  4. Tăng dần lên 50, 100 users và quan sát thay đổi
  5. Ghi lại kết quả vào bug report theo template bên trên

Bình thường lần đầu mất khoảng 2-3 tiếng để quen với giao diện và hiểu con số. Sau 3-5 lần chạy thực tế là quen. Comment bên dưới nếu bạn gặp khó khăn ở bước nào, mình sẽ trả lời cụ thể!