2012-07-03 44 views
24

Tôi đang sử dụng jMeter để kiểm tra ứng dụng Tomcat. Tôi cần phải phân tích phản ứng jMeter và đưa ra yêu cầu thứ hai. Câu trả lời đầu tiên trông như thế này:Cách phân tích phản hồi Jmeter và thực hiện một yêu cầu mới

<responseData class="java.lang.String">&lt;html&gt;&#xd; 
&lt;body&gt;&#xd; 
ERROR=0&#xd; 
MSG=N/A&#xd; 
FILELIST=1555;1340778737370;1526545487;&#xd; 
VERSION=1.002&#xd; 
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd; 
INTERVAL=0&#xd; 
&lt;/body&gt;&#xd; 
&lt;/html&gt;&#xd; 
</responseData> 

tôi cần phải trích xuất các "filelist" và "URL" biến và tiêm chúng vào một URL mới:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd; 

Tôi biết có một số hậu xử lý để làm điều đó, nhưng không có đầu mối làm thế nào để làm điều đó. BTW, yêu cầu thứ hai sẽ tải về một số tập tin từ servlet Tomcat, có cách nào để cho jMeter chỉ tải xuống luồng mà không cần ghi vào một tệp vật lý không? Để tôi có thể thực hiện kiểm tra hiệu suất tải đối với servlet của mình.

Trả lời

20

Ok, do đó bạn đã biết làm thế nào để giải nén url ra khỏi trả lời của bạn, tôi đã mô tả như thế nào trong câu trả lời trước đây của tôi:

https://stackoverflow.com/a/11188349/169277

Nhưng ở đây tôi sẽ chỉ mở rộng về điều đó. Vì vậy, bạn có mẫu của bạn và bạn đã có $ {url}. Bây giờ bạn cần FILELIST và lắp ráp url mới.

Giả sử bạn đã có yêu cầu và trình giải nén url tại chỗ. Thêm mới Regular expression extractor.

Right click on request sampler -> Post Processors -> Regular Expression Extractor

Reference Name : FILELIST 
Regular Expression : FILELIST=(\S+) 
Template : $1$ 
Match No. (0 for Random): 1 

Vì vậy, bây giờ bạn có 1 yêu cầu lấy mẫu và 2 nhổ biểu thức chính quy. Bạn cần thêm bộ xử lý bổ sung để có thể lắp ráp url mới.

Right click on request sampler -> Post Processors -> BSF PostProcessor

Chọn beanshell từ droplist ngôn ngữ dưới Script language và trong lĩnh vực lớn Script: dán này:

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}"); 

Và bây giờ bạn có ${NEW_URL} sử dụng hơn nữa trong các bài kiểm tra của bạn.

Luôn luôn có nhiều cách giải quyết vấn đề, lớp lót này trông thực sự xấu xí nhưng nó phục vụ mục đích.

Trong thử nghiệm của tôi kết quả là như bạn yêu cầu (Debug Sampler):

url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd; 
FILELIST=1555;1340778737370;1526545487;&#xd; 
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd; 

EDIT:

Tôi nghĩ rằng tôi không hiểu làm thế nào bạn đặt tên cho các biến của bạn. Nhưng kết quả cuối cùng là kết quả bạn mô tả trong câu hỏi của mình. Xin vui lòng xem.kiểm tra jmx kèm theo ví dụ làm việc:

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

Đó là một jmeter .jmx tập tin làm việc với 2.6+ phiên bản của jmeter

+0

@ ant, theo sự giúp đỡ của bạn, hiện nay tôi đã SAMPLE1 (có 3 bộ xử lý bài : url/token extrator/bsf post-processor) và sample2 để gửi yêu cầu mới. Nhưng vẫn còn một số lỗi mà mẫu 2 không nhận được URL chính xác, Vui lòng trợ giúp để tìm Trình gỡ lỗi của tôi: [link] http://pastebin.com/rXB00uTL –

+0

@Grace vui lòng xem câu trả lời cập nhật – ant

+0

@ ant, i xin lỗi vì tôi đã mắc phải một sai lầm khủng khiếp. Nó đã làm việc ở phía tôi bây giờ, tôi không thể đánh giá cao hơn cho bạn vì sự giúp đỡ tuyệt vời của bạn. –

7

Để capture một phần của việc sử dụng câu trả lời Regular Expression Extractor.

Bạn có thể kiểm tra biểu thức chính quy của mình trên dữ liệu phản hồi bằng cách sử dụng trình nghe ViewResultsTree. Chỉ cần chọn trình kiểm tra Regexp trong hộp thả xuống ở dưới cùng của bảng điều khiển bên trái trong trình lắng nghe ViewResultsTree của bạn.

Các vấn đề liên quan