2010-03-01 12 views
10

Trong một thời gian, tôi đã nghiên cứu về Selenium RC để kiểm tra chức năng ứng dụng web của tôi. Bây giờ tôi đã tìm thấy một chiến lược thử nghiệm hiệu quả đến nỗi tôi không muốn chuyển khỏi Selenium RC (sau khi trải qua nhiều tuần cố gắng tìm ra cách tốt để xác thực các điều khiển xác thực ASP.NET).Tại sao Selenium RC lại chậm?

Nhưng giờ đây, cuộc phiêu lưu của tôi trên chiếc thuyền POC là một thứ mà tôi thực sự sử dụng, tôi đang gặp vấn đề. Nó cực kỳ chậm chạp. Thực hiện một thử nghiệm duy nhất tải một trang, điền vào một số trường và nhấp vào một nút sẽ mất khoảng vài giây để thực thi. Khi nó được thực hiện, tôi có thể dễ dàng nhìn thấy từng lĩnh vực cá nhân được điền vào một tại một thời điểm. Sử dụng Selenium IDE trong Firefox không phải là chậm.

tôi tìm thấy trang này, mà xác định rõ ràng rằng Selenium RC chậm http://selenium-grid.seleniumhq.org/how_it_works.html

Nhưng tại sao vậy? Có phải vì trình duyệt đang bỏ phiếu cho máy chủ selenium không? Nếu vậy, khoảng thời gian bỏ phiếu này có thể không được sửa đổi không? Hoặc là có một lý do khác. Tôi không quen với một cuộc gọi từ xa lấy một số lượng đáng chú ý của con người thời gian để thực hiện.

Thật kinh khủng khi thực hiện một vài thử nghiệm sẽ mất quá nhiều thời gian. Tôi có thể thực hiện toàn bộ bài trình bày (MVP), kinh doanh và lớp thử nghiệm cơ sở dữ liệu (500+ bài kiểm tra) của mình nhanh hơn cần thiết để chạy 10 bài kiểm tra cho một trang web duy nhất.

Trả lời

7

Kiểm tra chức năng/tích hợp sẽ mất nhiều thời gian hơn để chạy đặc biệt vì chúng đang chạy trong Trình duyệt. Điều này có nghĩa rằng họ phải tải lên tất cả 3 lớp của MVC của bạn và sau đó thực hiện và giống nhau khi nó đang làm bất cứ điều gì trên trang. Vì vậy, mọi hành động đều có khả năng đi xuống cơ sở dữ liệu. Đây vốn là một nhiệm vụ chạy dài so với các bài kiểm tra đơn vị.

Các thử nghiệm bắt đầu bằng cách thực hiện open trên trang đó, sau đó chờ mọi thứ để tải. Vì vậy, nếu quá trình này mất nhiều thời gian thì có thể mất nhiều thời gian cho người dùng của bạn nếu họ truy cập trang. Ví dụ. Rất nhiều hình ảnh, JavaScript/CSS chưa được tối ưu hóa, thời gian hết hạn khi tải xuống.

Trang nào từ Selenium nói rằng máy chủ là nút cổ chai vì nó ngụ ý rằng bạn đang chạy thử nghiệm một cách đồng bộ và nếu bạn chuyển sang Selenium Grid, nó có thể chạy song song để làm cho bộ kiểm tra hoàn thành nhanh hơn. Nó không gợi ý rằng máy chủ selenium đang bỏ phiếu để xem nó nên làm gì nhưng thay vào đó các máy chủ Selenium thăm dò trung tâm Grid để xem liệu nó có còn sống hay không và cho thấy chúng vẫn còn sống.

Lý do khác khiến các thử nghiệm chạy chậm là ngôn ngữ cơ sở của Selenium là JavaScript tương tác với DOM. DOM có thể làm chậm mọi thứ xuống rất nhiều, đặc biệt là nếu các thử nghiệm của bạn đang sử dụng XPath như các trình định vị. XPath + JavaScript + IE + Selenium == Đau đớn và không có gì mà chúng tôi phát triển Selenium có thể làm nhiều hơn để tinh chỉnh nó. Vâng đó là và đó sẽ là Selenium 2 mà là trong alpha và có thể được tải về từ http://selenium.googlecode.com/. Tôi đã được làm việc trên NET thực hiện đang thấy cải thiện tốc độ rất lớn vào lúc này. Tôi có blogged về nó vì những thay đổi đáng kinh ngạc của tôi. Tôi đã thấy tối đa 8 bài kiểm tra chạy trong cùng thời điểm nó sử dụng để lấy Selenium 1 để chạy 1 thử nghiệm

+0

Xin chào. Cảm ơn vi đa trả lơi. Tôi hoàn toàn nhận thức được rằng thử nghiệm chức năng tương đối chậm. Nhưng bản thân Selenium RC chậm hơn "bình thường", tức là không phải là RC Selenium.Thực hiện một bài kiểm tra mở một trang có biểu mẫu, điền vào 15 trường và gửi biểu mẫu mất một phần nhỏ giây bằng cách sử dụng Selenium IDE. Các thử nghiệm tương tự mất khoảng một giây bằng cách sử dụng Selenium RC và trình điều khiển .NET. Vì vậy, rõ ràng là một chi phí mà là RC cụ thể. – Pete

+2

Khởi động trình duyệt là một chi phí lớn và là RC cụ thể. Trong tất cả các trường hợp selen khác, trình duyệt phải mở để bắt đầu thử nghiệm. – AutomatedTester

+1

Có một số độ trễ khác, ngoài việc khởi động trình duyệt. Trong thử nghiệm giữa, Selenium RC trên IE mất nhiều giây chỉ để điền vào và gửi một lĩnh vực duy nhất cho tôi. –

2

Có thể tốc độ thực thi mặc định của bạn quá thấp? Kiểm tra các phương thức getSpeed ​​() và setSpeed ​​() trên DefaultSelenium.

7

Bạn có đang thử nghiệm với IE và Selenium ở chế độ multiwindow không? Điều này là cực kỳ chậm và bạn nên cố gắng để bắt đầu seleniumserver với -singlewindow