NỘI DUNG BÀI HỌC
✅ Cú pháp
✅ Random number
✅ Random string
✅ Choose random
✅ Time
✅ Time shift
✅ Random date
📘 Functional Helper 1
1. Giới thiệu
Ví dụ thực tế: "Khi mọi người viết test script trong JMeter, có hay gặp việc phải xử lý logic lặp đi lặp lại không? Ví dụ: sinh dữ liệu ngẫu nhiên, mã hóa password, parse JSON, convert timestamp…"
-
Functional Helper trong JMeter chính là tập hợp các hàm (functions/groovy utils) được viết sẵn, có thể gọi nhanh trong test plan.
- Cú pháp:
${__MyCustomFunc(param)}
lưu ý với cú pháp gọi biến ${variable}

Lưu ý: Một số function (ví dụ base64/MD5/chooseRandom) là plugin — nếu không thấy trong Function Helper bạn cần cài “Custom JMeter Functions” qua Plugin Manager. jmeter-plugins.org+1
2. Tổng hợp các function hay sử dụng
2.1 Sinh số ngẫu nhiên

- Cú pháp: ${__Random(min,max,varName)}
- Cách hoạt động: Trả về số trong khoảng [min,max] hoặc chuỗi theo ký tự cho trước. Kết quả có thể gán vào biến nếu đưa varName. (Nhiều tài liệu mô tả cách dùng này — xem tổng quan hàm trong tài liệu JMeter). jmeter.apache.org
- Ví dụ: ${__Random(1000,9999,randId)} -> tạo số 4 chữ số, lưu ${randId}
2.2 Sinh chuỗi ngẫu nhiên

- Cú pháp: ${__RandomString(length,
characters
,varName)} - Cách hoạt động: Trả về một chuỗi ngẫu nhiên với độ dài =
length
, mỗi ký tự được chọn từ tậpcharacters
Kết quả có thể gán vào biến nếu đưa varName. (Nhiều tài liệu mô tả cách dùng này — xem tổng quan hàm trong tài liệu JMeter). jmeter.apache.org - Ví dụ: ${__RandomString(10,qưertyuiopasdfghjkzxcvbnm,randStr)} -> tạo chuỗi 10 kí tự, lưu ${randStr}
2.3 Chọn chuỗi ngẫu nhiên từ List
Note: jpgc - Standard Set
- Cú pháp: ${__chooseRandom(string_1,String_2,String_3,varName)}
- Cách hoạt động: Hàm này là một plugin function (JMeter-Plugins). Nó nhận N giá trị rồi biến cuối là tên biến lưu kết quả. Lưu ý parameter cuối không tham gia vào phép chọn, nó là tên biến nhận kết quả. jmeter-plugins.org+1
- Ví dụ: ${__chooseRandom(blue,red,green,chooseColor)}
-> Chọn một màu trong danh sách, lưu ${chooseColor}
2.4 Time
- Cú pháp: ${__time(format,varName)}
- Cách hoạt động: Trả về thời gian hiện tại theo format (theo DateTimeFormatter của Java). Nếu không truyền format → epoch millis(timestamp). jmeter.apache.org+1
- Ví dụ: ${__time(yyyy-MM-dd HH:mm:ss,tNow)}
-> 2025-09-18 15:29:10
2.5 TimeShift
- Cú pháp: ${__timeShift(format,date,shift,locale,varName)
- Cách hoạt động: Trả về thời gian được dịch chuyển lên/xuống theo ISO-8601 style (ví dụ PT15M = 15 phút, P2D = 2 ngày). Trả về giá trị theo format; có thể truyền ngày gốc để dịch từ đó. jmeter.apache.org+1
- Ví dụ:
Mục đích Cú pháp Output (ví dụ) Biến lưu Lấy thời gian hiện tại ${__timeShift(yyyy-MM-dd HH:mm:ss,,,,now)}
2025-09-16 10:20:35
${now}
Ngày mai ${__timeShift(dd/MM/yyyy,,P1D,,tomorrow)}
17/09/2025
${tomorrow}
7 ngày trước ${__timeShift(yyyy-MM-dd,,P-7D,,lastWeek)}
2025-09-09
${lastWeek}
1 tiếng trước một mốc thời gian cho trước ${__timeShift(yyyy-MM-dd HH:mm,2025-09-16T12:00:00,PT-1H,,oneHourAgo)}
2025-09-16 11:00
${oneHourAgo}
Cộng 30 phút từ "ngay bây giờ" ${__timeShift(HH:mm,,PT30M,,halfHourLater)}
10:50
${halfHourLater}
Định dạng theo locale khác (tiếng Pháp) ${__timeShift(E,2025-09-16,,fr,weekdayFR)}
mar.
(Mardi = Thứ Ba)${weekdayFR}
Lấy timestamp UNIX (epoch millis) ${__timeShift(,2025-09-16T00:00:00,PT12H,,ts)}
1758014400000
${ts}
2.5 Sinh ngày ngẫu nhiên trong khoảng
- Cú pháp: ${__RandomDate(format, startDate, endDate, locale, varName)}
- Cách hoạt động: Trả về ngày ngẫu nhiên nằm giữa startDate và endDate theo format (mặc định yyyy-MM-dd). Kết quả có thể lưu biến. jmeter.apache.org
- Ví dụ: Sinh ngày sinh cho test data, tạo ngẫu nhiên ngày sinh nhật trong khoảng hợp lệ, test form validation với ngày. ${__RandomDate(dd/MM/yyyy,01/01/1980,31/12/2000,,birthDate)} -> ${birthDate} = ví dụ 13/07/1992