2012-01-30 55 views
11

Tôi hiện đang sử dụng HtmlUnit và Selenium để lái nó (WebDriver) trong mã sản xuất của tôi.HtmlUnit + Selenium trong Sản xuất

Tôi đang định hình và tương tác với các trang web khác nhau theo lập trình với các thư viện này và có một số thành công và không gặp phải vấn đề về bộ nhớ (đảm bảo phiên luôn được dọn dẹp).

Tôi tự hỏi liệu các thư viện này có phù hợp với môi trường sản xuất hay không. Điều này khó tìm thấy qua Google do lượng thông tin khổng lồ về kiểm tra tự động thay vì cách tôi sử dụng chúng.

Tôi nhận thấy đây là một câu hỏi khá chung chung, nhưng tôi đang tìm kiếm lời khuyên về các thư viện này và các giải pháp thay thế tiềm năng tốt hơn.

Trả lời

9

WebDriver và Selenium hoàn toàn phù hợp cho môi trường sản xuất. Tôi sử dụng chúng khá rộng rãi trong 2 năm nay trên một mạng lưới đa máy/đa trung tâm phân phối và hoàn toàn không có vấn đề về hiệu suất cũng như độ ổn định mà chúng tôi không thể đối phó được.

Trình điều khiển ưa thích của chúng tôi là trình duyệt Firefox (nặng hơn HTMLUnit và khó cấu hình hơn) và chúng tôi phải tinh chỉnh lưới để hiểu số lượng phiên bản chúng tôi có thể chạy. Mức tối đa cho sự ổn định của chúng tôi là 1 mỗi lõi

Các trường hợp selenium/webdriver của chúng tôi đã hoạt động 24/7 trong 2 năm nay (1 năm với selen 1, và selenium di chuyển 2/WebDriver khác) và với giám sát thích hợp (bạn nên theo dõi mức sử dụng bộ nhớ/sử dụng CPU) và một loạt thử nghiệm tải, chúng tôi đã đạt đến mức tốt mà chúng tôi đã trải qua vài tháng mà không cần khởi động lại quá trình

Chúng tôi đã sử dụng HTMLUnit quá rộng và hài lòng như nhau với thư viện này

Điểm quan trọng của bài đăng của tôi là: CÓ, các thư viện này sẵn sàng cho sản xuất. Tuy nhiên, như tất cả các phần mềm sản xuất, bạn sẽ phải đánh giá mức độ sử dụng của chúng để tìm ra cấu hình thích hợp cho sự ổn định tối ưu. Tôi khuyên bạn nên sử dụng Lưới Selenium trong sản xuất, đây là một cách tuyệt vời để song song quy trình

+0

Thankyou, đây là câu trả lời tôi đang tìm kiếm. – Steven

2

Nói chung, hãy sử dụng "cảm giác ruột" thử nghiệm của bạn về điều đó. Những gì WebDriver và HTMLUnit làm là, nó mô phỏng người dùng thực hiện một số hành động trong trang web.

Cảm giác ruột cá nhân của tôi nói rằng tôi nên làm ít nhất là thử nghiệm sản xuất càng tốt. Vì vậy, cá nhân tôi sẽ sử dụng những công cụ này chỉ để xác minh, nếu webapp của tôi vẫn còn sống.

Vâng, câu trả lời chung chung của nó đối với câu hỏi chung chung, nhưng cố gắng này:

Thu thập xung quanh người chịu trách nhiệm về webapp và yêu cầu họ:

  • nên có thể là thử nghiệm trên sản xuất? (do đó, luôn có một chút cơ hội, rằng một số khách hàng sẽ thấy những dữ liệu thử nghiệm đó)

  • Nếu có, những gì cần được thử nghiệm về sản xuất?

  • Nếu có, nó có nên được tự động không?

Và sau đó bạn có câu trả lời;)

+1

Tôi không hỏi liệu tôi có nên kiểm tra cá thể sản xuất của mình với trình quản lý web hay không, tôi hỏi liệu sử dụng webdriver làm mã sản xuất có ổn không. Môi trường sản xuất của tôi sử dụng trình duyệt web để tương tác với các trang web khác vì chúng sử dụng javascript mở rộng. – Steven

5

Tôi đang sử dụng HtmlUnit cho một cái gì đó tương tự trong sản xuất và đã có khá nhiều vấn đề - chủ yếu là hoạt động liên quan. Hiện tại tôi đã chuyển sang phiên bản chụp nhanh của HtmlUnit 2.10 nơi một số cải tiến quan trọng đối với tôi được thực hiện (ví dụ: thay thế ArrayList.contains() bằng HashSet.contains() trên DomNode.addDomChangeListener()).

Tuy nhiên, tải CPU khá cao trên các trang có JavaScript nặng. Thông thường, tôi không thể chạy hơn 10 trong số chúng cùng một lúc trên hộp Linux lõi kép. Tôi tin rằng HtmlUnit sử dụng Rhino (JavaScript engine) chỉ trong chế độ thông dịch viên, điều này khá chậm. Ngoài ra, bạn cần phải cẩn thận với việc phát hành tất cả các tài nguyên được sử dụng bởi HtmlUnit để tránh rò rỉ bộ nhớ.

Tất cả trong tất cả, chắc chắn đáng chú ý là HtmlUnit được thiết kế để chạy các trường hợp thử nghiệm tương đối ngắn và không chạy các ứng dụng máy chủ dài. Nó có thể tinh chỉnh nó đủ để nó có thể quản lý nhưng chắc chắn nó có thể đã được tốt hơn.

Một cách tiếp cận khác mà tôi thấy có triển vọng là phantom-js, là phiên bản không có đầu của trình duyệt WebKit, ứng dụng gốc nhanh hơn nhiều khi chạy JavaScript.

+0

phantom-js trông thú vị nhưng không phải là một thay thế phù hợp cho htmlunit (chưa) vì nó thiếu tích hợp webdriver. – Steven

+0

Có thể. Tôi không sử dụng webdriver bản thân mình. – maximdim

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