2012-06-22 37 views
7

Tôi có kế hoạch thử nghiệm JMeter với các bộ lấy mẫu yêu cầu http sau.Trình tự chuỗi jMeter

  1. Đăng nhập
  2. Gọi một số chức năng mà cần một người dùng đăng nhập
  3. Thoát

Khi tôi thực hiện kế hoạch kiểm tra với 5 đề song song, tôi thấy rằng các sampler 2 được gọi trước khi gọi lấy mẫu 1 cho một số luồng, sau đó không thực hiện được các xác nhận phản hồi.

Có cách nào để chỉ định chuỗi trình tự mẫu được thực thi không?

+0

Điều gì khiến bạn nghĩ rằng Sampler 2 được thực thi trước Sampler 1? Các yêu cầu được thực thi tuần tự, từ trên xuống và điều này rất khó xảy ra vì vậy có thể có vấn đề với cách bạn diễn giải kết quả. –

+0

Bởi vì tôi thấy trong cây kết quả xem khi tôi bắt đầu với 5 chủ đề song song đăng nhập được gọi là 4 lần sau đó các trang khác mà không xác nhận rằng cần phải có một nút đăng xuất. – rangalo

+0

"Xem cây kết quả" không phản ánh chuỗi cho mỗi chuỗi, nó không phải là nguồn đáng tin cậy (vì một số luồng có thể thực thi nhanh hơn các chuỗi khác). –

Trả lời

10

này phải đảm bảo rằng họ đang thực hiện tuần tự:

enter image description here

Vì vậy, hãy bắt đầu với nhóm chủ đề.

Số lượng chủ đề (người dùng) là 5.

Vì vậy, giả sử bạn có logic làm việc cho mẫu đăng nhập của mình. Chỉ cần thêm mẫu bổ sung vào nó. Vì vậy, nhấp chuột phải vào mẫu đó Add > Post Processors > BSF PostProcessor, bên trong bộ xử lý bài đăng lớn không gian này viết ${__setProperty(ThreadValue,${__threadNum},)}.

Thao tác này sẽ lưu số chuỗi vào thuộc tính của bạn được gọi là ThreadValue. Đảm bảo bạn chọn ngôn ngữ của mình là beanshell trong danh sách thả xuống.

Sau khi mẫu đăng nhập thêm bộ điều khiển nếu. Thêm phần này vào lĩnh vực tình trạng (${JMeterThread.last_sample_ok}==true) && (${__property(ThreadValue,,)} == ${__threadNum})

Điều này có nghĩa là -.> Làm chỉ đăng nhập thứ trong khi đăng nhập thực tế là thành công và nếu thread đăng nhập phù hợp với chủ đề bạn đang truy

Vậy đó bạn làm công cụ đăng nhập của bạn chỉ bên trong bộ điều khiển nếu. Nếu bạn muốn chắc chắn rằng bạn đăng xuất đúng nơi người dùng bổ sung nếu bộ điều khiển arround nó.

Cheers

+0

Tôi có thể xác thực nếu đăng nhập thành công dựa trên mã phản hồi tại đây không? – zillani

2

Những gì bạn cần phải xem xét là mỗi chủ đề là một thực thể riêng biệt, giống như một người sử dụng thực tế, và rằng nó có đó là phiên riêng, nhưng JMeter được thiết kế để thực hiện những chủ đề không đồng bộ, tức là. song song. Trình nghe xem cây kết quả hiển thị tất cả hoạt động, từ tất cả các chủ đề vì nó xảy ra bất kể trình tự chuỗi logic. Nếu bạn muốn có 1 thread tạo 5 lần lặp thì chỉ cần thay đổi số đếm thành 1 và sử dụng vòng lặp 5 và điều này sẽ giữ nguyên chuỗi (mặc dù điều này đánh bại điểm sử dụng công cụ kiểm tra tải như JMeter!).

Nếu bạn thay đổi số lượng chuỗi thành 1 thì bạn có thể thấy chuỗi thực thi logic hợp lý trong cây kết quả. Điều này sẽ cho thấy mỗi mẫu được thực hiện, theo thứ tự, từ trên xuống.

Bây giờ, trong trường hợp của bạn, tôi nghi ngờ bạn có một vấn đề không phải vì mọi thứ đang được chạy ra khỏi trình tự mà là vì máy chủ đang mất ngữ cảnh phiên giữa các yêu cầu. Điều này là rất phổ biến và thường xuyên hơn không bạn có thể giải quyết vấn đề bằng cách sử dụng một HTTP Cookie Manager hoặc với việc sử dụng một Regular Expression Extractor.