2009-02-19 53 views
5

Tôi đã làm việc trên một trang web sử dụng khá nhiều AJAX và JavaScript động trên giao diện người dùng và đã đến lúc bắt đầu kiểm tra căng thẳng. Nhưng làm thế nào để bạn kiểm tra đúng cách một cái gì đó đòi hỏi phải nhấp vào một số liên kết trên front-end? Một cách tôi đã có thể dễ dàng nhấn mỗi trang của trang web một cách nhanh chóng và liên tục là để chỉ một Google Mini vào nó. Nhưng đó không phải là sẽ nhấp vào liên kết và sau đó điều hướng cửa sổ phương thức và những thứ như thế.Tải thử nghiệm giao diện người dùng

Chỉnh sửa - Tôi nên chỉ ra rằng trang web được thực hiện trong PHP5 và thư viện JavaScript được sử dụng là jQuery. Không chắc chắn nếu điều này sẽ làm cho bất kỳ sự khác biệt nhưng cảm thấy nó có thể hữu ích để biết.

Trả lời

2

JMeter thật tuyệt vời. Bạn có thể ghi lại các phiên của bạn và tinh chỉnh chúng theo ý thích của bạn.

Cái gọi là 'thử nghiệm tải ajax' là một chủ đề lặp lại trên trang web này và thường bị nhầm lẫn. Vì vậy, hãy làm cho nó thẳng: Có thực sự không có sự khác biệt giữa tải thử nghiệm một trang web bình thường và thử nghiệm tải với ajax. Tất cả đều tóm tắt các yêu cầu rời rạc; chúng chỉ xảy ra để không làm mới toàn bộ trang. Một điều cần lưu ý là có sự khác biệt rõ rệt giữa kiểm tra tải máy chủ xử lý yêu cầu (kiểm tra tải) và hiệu suất trên màn hình của các thành phần giao diện người dùng đang được cập nhật (JavaScript của bạn hoạt động tốt như thế nào.)

đơn giản ví dụ kiểm tra tải:

  1. tải trang ban đầu
  2. đăng nhập
  3. điều hướng?
  4. 5-10 'ajax' yêu cầu (hoặc bất cứ điều gì có thể phù hợp với mô hình sử dụng ứng dụng của bạn)
  5. logout
1

gì bạn thực sự muốn là để nhấn mạnh thử nghiệm là khả năng của máy chủ để xử lý các yêu cầu ajax. Sử dụng công cụ tải để xem xét các yêu cầu trong khi "ghi" thử nghiệm và sau đó điều chỉnh cho phù hợp. Tôi chỉ sử dụng phiên bản thử nghiệm so với phiên bản thử nghiệm, vì vậy tôi không thể chỉ cho bạn một phiên bản chi phí thấp.

1

Tôi không đồng ý với Nathan và Freddy một mức độ nào. Chúng đúng là "thử nghiệm AJAX" thực sự không khác gì trong các yêu cầu HTTP được tạo ra. Nhưng nó không phải là đơn giản. Xem bài viết của tôi trên Ajaxian.com trên Why Load Testing Ajax is Hard.

JMeter, Pylot và The Grinder là tất cả các công cụ tuyệt vời để tạo yêu cầu HTTP (cá nhân tôi khuyên dùng Pylot). Nhưng ở cốt lõi của họ, họ không hoạt động như một trình duyệt và xử lý JavaScript, có nghĩa là tất cả những gì họ làm là phát lại lưu lượng truy cập mà họ nhìn thấy vào thời gian kỷ lục. Nếu những yêu cầu AJAX đó là duy nhất cho phiên đó, chúng có thể không phù hợp/chính xác để phát lại với số lượng lớn.

Thực tế là khi nhiều logic được đẩy xuống trình duyệt, nó sẽ trở nên khó khăn hơn nhiều (nếu không thể) để mô phỏng đúng lưu lượng sử dụng các công cụ kiểm tra tải truyền thống.

Trong bài viết của mình, tôi đưa ra một ví dụ đơn giản về việc thử nghiệm một thứ gì đó giống như trang chủ của Google khi bạn muốn truy vấn 1000 cụm từ tìm kiếm khác nhau (mục tiêu quan trọng trong khi kiểm tra tải).Để làm điều đó với JMeter/Pylot/Grinder bạn có hiệu quả kết thúc viết lại các phần của mã AJAX (trong trường hợp của bạn w/jQuery) trên một lần nữa trong ngôn ngữ mẹ đẻ của công cụ.

Sẽ phức tạp hơn nếu mục tiêu của bạn là đo thời gian phản hồi khi người dùng nhận thức (điều được cho là điều quan trọng nhất vào cuối ngày). Đối với các ứng dụng thực sự phức tạp sử dụng Comet/"Reverse Ajax" (một kỹ thuật giữ các ổ cắm mở trong thời gian dài), các công cụ tải truyền thống không hoạt động chút nào.

Công ty của tôi, BrowserMob, cung cấp một load testing service sử dụng trình duyệt Firefox, chạy bằng Selenium, lái xe hàng trăm hoặc hàng ngàn các trình duyệt thực, cho phép bạn để đo lường và thời gian hoạt động của các yếu tố thị giác như thể hiện trong trình duyệt. Chúng tôi cũng hỗ trợ người dùng ảo truyền thống (giao thông HTTP mù) và trình duyệt được mô phỏng (qua HtmlUnit).

Tất cả những gì đã nói, thường là sự kết hợp của một dịch vụ như BrowserMob cộng với thử nghiệm tải truyền thống là cách tiếp cận đúng. Đó là, các trình duyệt thực sự là tuyệt vời cho một bài kiểm tra tải đầy đủ độ trung thực, nhưng chúng sẽ không bao giờ kinh tế như "người dùng ảo", vì chúng đòi hỏi thêm 10-100X RAM và CPU. Xem bài đăng trên blog gần đây của tôi về việc có hay không simulate or not to simulate virtual users.

Hy vọng điều đó sẽ hữu ích!

0

Bạn có thể sử dụng một cái gì đó như openSTA.

Điều này cho phép phiên có trang web được ghi lại và sau đó phát lại qua ngôn ngữ tập lệnh tương đối đơn giản.

Bạn cũng có thể dễ dàng kiểm tra các dịch vụ web và viết tập lệnh của riêng mình.

Nó cho phép bạn đặt tập lệnh cùng nhau trong một thử nghiệm theo bất kỳ cách nào bạn muốn và định cấu hình số lần lặp, số lượng người dùng trong mỗi lần lặp, tăng thời gian giới thiệu từng người dùng mới và độ trễ giữa mỗi lần lặp lại. Các thử nghiệm cũng có thể được lên kế hoạch trong tương lai.

Đó là mã nguồn mở và miễn phí.

Nó tạo ra một số báo cáo có thể được lưu vào bảng tính. Sau đó, chúng tôi sử dụng bảng tổng hợp để dễ dàng phân tích và lập biểu đồ kết quả.

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