Dùng random String hay Number là 1 task thường gặp trong làm performance test. Bạn có thể dùng 1 trong 2 cách dưới đây để làm việc này.
Nội dung bài viết
I. Sử dụng function helper
Đây là các ký tự để bạn có thể copy và làm theo mà không phải gõ tay. =))))
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Sau đó chúng ta chỉ cần dùng thẳng biến này là được.
def text = "${__RandomString(5,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,)}" log.info(text)
- Điểm mạnh: đơn giản, ko phải suy nghĩ
- Điểm yếu: làm mất luôn tính năng
Cache compiled script if available
của JSR223, có nghĩa là mỗi lần run cái này, nó phải compile lại code, chứ ko thể compile 1 lần rồi cứ thế sử dụng được. Điều này dẫn đến performance của JMeter sẽ bị ảnh hưởng, tuy nhiên nếu code ngắn hoặc số lần run cái script này ít thì mình nghĩ mất 1 chút time (tính bằng ms) là không đáng kể.
II. Dùng code
Bản thân JMeter là 1 Java app, nó đã có sẵn thư viện apache-common, chúng ta có thể import thư viện đó vào script và dùng các class có sẵn của nó.
import org.apache.commons.lang3.RandomStringUtils import org.apache.commons.lang3.RandomUtils
import org.apache.commons.lang3.RandomStringUtils import org.apache.commons.lang3.RandomUtils def text2 = RandomStringUtils.randomAlphabetic(6) log.info("random text2 = {}", text2) def num = RandomUtils.nextInt(0, 1000) log.info("random num = {}", num)
Bạn có thể tự tìm hiểu thêm các method khác của 2 class trên ở đây:
- RandomStringUtils
- RandomUtils, mặc dù class này đã bị thông báo là deprecated do việc random của nó không đủ tốt cho security nhưng mà mình thấy nó chả ảnh hưởng gì đến việc chúng ta làm JMeter nên mình ko tìm giải pháp thay thế cho nó nữa.
Cách sử dụng code như này
- Điểm mạnh: script sẽ được cache hoàn toàn.
- Điểm yếu: phải mất thời gian mò mẫm 1 chút
III. Kết luận
Cả 2 cách trên đều có thể áp dụng được cho JMeter được, tuy nhiên mình thích cách 2 hơn vì mình nghĩ là đã là script thì nên code hoàn toàn (suy nghĩ cá nhân), còn tất nhiên là tùy bạn thôi, chọn cách nào cũng được.