2012-08-28 9 views
5

Tôi hiện đang phát triển một ứng dụng javascript một trang bằng cách sử dụng Sinatra Ruby ở phía máy chủ và Backbone.js, jQuery, jQuery UI cho phía máy khách. Mục đích chính của ứng dụng là cho phép khách hàng xem/chỉnh sửa các loại mục khác nhau, mỗi mục xem là một dạng phức tạp hơn hoặc ít hơn.Kiểm tra tích hợp javascript cho một ứng dụng trang

Để đảm bảo mọi thứ hoạt động đúng tôi đang lên kế hoạch để làm:

  • xét nghiệm đơn nhất sử dụng QUnit
  • kiểm tra chức năng/hội nhập

gì khung/công cụ để bạn đề nghị cho thử nghiệm tích hợp trong trường hợp này ? Tôi bắt đầu với Selenium nhưng tôi không thích nó quá nhiều. Tôi chỉ mới bắt đầu xem PhantomJS và CasperJS và chúng có vẻ khá tốt cho những thứ cơ bản như điều hướng, nhấp vào liên kết, ...

Lời khuyên của bạn là gì?

Trả lời

1

Bạn không nói những gì bạn không thích về Selenium, nhưng tôi đoán bạn tự tin với JavaScript, vì vậy đề xuất của tôi sẽ là sử dụng CasperJS làm công cụ chính. Nó hoạt động tốt với các ứng dụng web một trang và đi kèm với công cụ kiểm tra của riêng nó. Mã này vẫn có thể hơi phức tạp một chút, khi sử dụng mệnh đề wait lồng nhau; đối phó với điều đó bằng cách đảm bảo bạn không cố gắng làm quá nhiều trong mỗi bài kiểm tra, và sau đó nếu vẫn còn phức tạp, refactor. Và đừng quên thiết kế để thử nghiệm: nếu bộ chọn của bạn phức tạp khủng khiếp, hãy cân nhắc thêm một số <span id="xxxx">...</span> xung quanh nó, vì vậy các thử nghiệm của bạn có thể đi thẳng đến nó!

Bạn có thể sử dụng CasperJS với cả hai PhantomJSSlimerJS. Sở thích của tôi là dành cho SlimerJS hiện nay, như:

  • PhantomJS 1.x bị mắc kẹt trên một WebKit cũ (tương đương với Safari 5.1 và Chrome 13), vì vậy thử nghiệm bất kỳ tính năng hiện đại hơn là bực bội.
  • SlimerJS có thể hoạt động với công cụ Gecko hoặc trực tiếp với phiên bản Firefox bạn đã cài đặt. Điều này cho phép bạn định cấu hình hồ sơ Firefox với các plugin bổ sung, chứng chỉ bảo mật, v.v.
  • SlimerJS được viết bằng JavaScript, vì vậy dễ dàng hơn để hack nếu bạn có nhu cầu.

Khi PhantomJS 2.0 xuất hiện (vào cuối năm 2013, hy vọng) hoặc nếu trang web của bạn không dựa vào bất kỳ API HTML5 nào gần đây, bạn có thể chạy CasperJS hai lần để nhận mức độ phủ sóng kép. (BTW, PhantomJS là tự nhiên không đầu; SlimerJS cần sử dụng Xvfb, chỉ dành cho Linux hoặc Mac.)

Điều gì Selenium cung cấp cho bạn thêm là bạn có thể kiểm soát các trình duyệt khác, IE nói riêng. (Mặc dù tất nhiên đối với IE bạn cần phải chạy một máy Windows.) Selenium, giống như SlimerJS, cần Xvfb để không có đầu (một lần nữa, ngoại trừ Windows). (BTW, tài liệu Selenium on supported browsers chưa được cập nhật theo độ tuổi, nhưng tôi giả sử các phiên bản sau của mỗi trình duyệt có ít nhất cùng một hỗ trợ được hiển thị ở đó.)

+0

Điểm đầu tiên chống lại Selenium là tốc độ của nó. Nó rất chậm. – user337620

+0

@ user337620 Tập lệnh Selenium của tôi bị chi phối bởi truy cập mạng, vì vậy tôi chưa bao giờ nhận thấy chúng là chậm, ngoại trừ khởi động. Tôi vừa nhận ra câu hỏi của bạn là tháng 8 năm ngoái, không phải năm nay! Những gì bạn đã kết thúc với, và bạn có hài lòng với nó? –

+0

Tôi đã sử dụng CasperJS với PhantomJS. Tôi cũng sẽ xem xét SlimerJS. – user337620