Theo tài liệu JMeter:
16,12 Sharing biến giữa các chủ đề và các nhóm chủ đề
biến là địa phương to a thread một bộ biến trong một thread không thể đọc trong khác. Điều này là do thiết kế. Đối với các biến có thể được xác định trước khi thử nghiệm bắt đầu, hãy xem Kiểm tra tham số (ở trên). Nếu giá trị không biết cho đến khi bắt đầu kiểm tra, có những lựa chọn khác nhau:
- Store biến như một tài sản - bất động sản mang tính toàn cầu cho các ví dụ JMeter
- Viết biến vào một tập tin và đọc lại chúng.
- Sử dụng không gian tên bsh.shared - xem 16.8.2 Sharing Variables
- Viết lớp Java của riêng bạn
Một cách khác để vượt qua biến giữa các chủ đề được sử dụng jmeter-plugins như mentioned by Andrey Botalov below.
Nhưng tôi thấy rằng hơi khó hiểu khi sử dụng nó lần đầu tiên nhưng nó cho phép kiểm soát hoàn toàn biến trong khi truyền từ chuỗi này sang luồng khác. theo ví dụ của tôi với việc sử dụng BeanShell và bạn thấy cách dễ dàng là:
Tiếp tham khảo các phần trong bức tranh dưới đây:
(1,1) Ở đây tôi tạo ra biến tùy chỉnh trong User Defined biến (hoặc bạn có thể làm nó với BSF Proccessor - khuyết tật trong ví dụ này (1,2))
(2,1) (2,4) tôi sử dụng thành công biến trong chủ đề đầu tiên - không có gì đặc biệt :)
(2,2) Added BeanShell PostProcessor và tùy biến tôi
(2.3) Đã thêm nó vào hàng đợi
(3.1) Trong chuỗi thứ hai - biến được lấy từ hàng đợi - với bất kỳ tên nào bạn muốn.Nhưng hãy cẩn thận, sử dụng một cách khôn ngoan Timeout, bởi vì thread này sẽ chờ đến khi kết thúc trước đó để nó có thể nhận được biến đổi (thử nghiệm với một số phản ứng dài)
(3.2) (3.3) (3,4) Lặp lại các bước sử dụng và sửa đổi biến
(3.5) biến được gửi một lần nữa trong hàng đợi mới - vì vậy cung cấp tên mới cho nó
(4.1) (4.2) (4.3) Grabbed biến đổi từ hàng đợi mới hoạt động như quyến rũ
Cảnh báo
Nếu bạn thêm nhiều chủ đề hơn, hãy thêm một số truy cập vào nhóm chủ đề với biến và thêm tên biến này vào tên hàng đợi - làm tương tự trong nhóm chủ đề nơi bạn cố bắt hàng đợi để hàng đợi sẽ có tên duy nhất cho mỗi chủ đề (viết nếu bạn cần một số giải thích rõ ràng hơn)
Nếu bạn có nhiều hơn một http Yêu cầu trong một nhóm chủ đề, sau đó thêm bộ xử lý trước giao tiếp chuỗi làm con cuối cùng (hoặc khác nếu bạn muốn đạt được một số điều tùy chỉnh)
Phát, sửa đổi, tùy chỉnh để có kết quả tốt nhất :) Thêm chủ đề khác có thể dẫn đến hành vi không mong muốn để bạn d là thận trọng.
Thuộc tính quá xấu không thể lưu trữ các đối tượng ...thực sự có vẻ như phương thức 'get()' và 'put()' vẫn có sẵn từ HashTable. Nó sẽ rất xấu nếu tôi lạm dụng thuộc tính jmeter để lưu trữ các giá trị đối tượng? Vấn đề của tôi là tôi muốn tất cả các chủ đề để chia sẻ cùng một đối tượng để tránh tạo nhiều đối tượng khi tôi chạy với rất nhiều chủ đề. – akostadinov
cảm ơn tuyệt vời. Làm việc cho tôi như một sự quyến rũ! –
Bắt tại đây. __setProperty được gọi trước khi kịch bản được truyền cho BeanShell. Vì vậy, nếu bạn đang cố gắng gán một giá trị cho một biến từ beanshell, bạn sẽ không thể nhận được giá trị –