NỘI DUNG BÀI HỌC

✅ Giới thiệu Functional helper
✅ 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ập characters 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

Teacher

Teacher

NGUYỄN TRÍ DIỆN

Fullstack QA

With over 4 years of experience in software testing — including manual, automation, and performance testing — I have built a strong foundation in delivering high-quality software.

I specialize in the E-commerce and Banking domains, with deep understanding of business flows, performance requirements, and testing standards.

Strong in critical thinking and problem-solving, I proactively identify issues and drive effective solutions.

With an engineering mindset, I continuously update my skills and contribute across functions to help teams achieve their goals.


Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học