Làm thế nào để thực hiện thử nghiệm hướng phát triển (TDD) trong Drupal?


30
  • Các công cụ được sử dụng TDD trong Drupal (mô-đun PHP, mô-đun Drupal, v.v.) là gì?
  • Quy trình công việc cam kết / kiểm tra / triển khai của bạn trông như thế nào? Bạn có sử dụng Phing, PHPUnderControl, Hudson để quản lý quy trình công việc này không?
  • Bằng cách nào kiểm thử đơn vị làm cho mã của bạn đáng tin cậy hơn?
  • Bạn có cần một máy chủ thử nghiệm đơn vị riêng biệt, đắt tiền, hoặc bạn có thể làm điều đó từ máy tính xách tay không?

Tôi biết rằng Robert đã viết một bài kỹ thuật xuất sắc ở đây về thử nghiệm đơn vị trong Drupal với SimpleTest; Tôi quan tâm nhiều hơn đến việc bao gồm phần công việc và cấu hình. Hiện tại tôi có một máy phát triển, dàn dựng và sản xuất máy chủ. Cả hai trang web sản xuất và sân khấu đều chạy trên VPS Dreamhost 300 MB RAM / 300 MHz.

Câu trả lời:


8

Trong thế giới ruby, TDD được hỗ trợ bởi các công cụ được xây dựng trong khuôn khổ. Factory Girl, Mocha, rSpec và những người khác cho phép các nhà phát triển tạo ra các thử nghiệm dễ dàng và linh hoạt nhằm giải quyết các trường hợp thử nghiệm cần thiết.

Tôi cũng đã nản lòng vì thiếu công cụ TDD trong Drupal. Vấn đề lớn nhất của tôi với họ là thời gian cần thiết để chạy một bài kiểm tra. Các chu kỳ phát triển không thể bị chậm lại bởi các thử nghiệm riêng lẻ mất 60-90 giây mỗi lần lặp. Các bộ kiểm tra đầy đủ sẽ chạy vào khung thời gian nhiều giờ, nếu bạn bận tâm viết các bài kiểm tra.

Tôi nghi ngờ nó phải làm với việc sao chép toàn bộ db mỗi khi chạy thử, nhưng điều đó không có khả năng thay đổi trong tương lai gần từ những gì tôi có thể nói, đặc biệt là nếu bạn cần sử dụng DrupalWebTestCase để làm như vậy.

Tôi đang hack cùng một giải pháp bằng Phactory và phpunit, tự khởi động Drupal. Rõ ràng đang gặp phải một số vấn đề và chưa hoàn thành nó, nhưng nó đã đến đó.

May mắn là hầu hết công việc của tôi là ở lớp phụ trợ, vì vậy tôi có thể ở cấp DRUPAL_BOOTSTRAP_DATABASE. Nhưng tôi đang gặp nhiều tình huống trong đó tôi sẽ cần toàn bộ.

Cuối cùng, TDD trong Drupal không được hỗ trợ tốt, vì vậy bạn có thể tự viết để làm cho nó hoạt động bên ngoài khung kiểm tra drupal hoặc chịu đựng hiệu suất kém.

- CẬP NHẬT -

Tôi đã thiết lập thành công tích hợp Drupal đầy đủ với Phactory và hiện đang chạy thử nghiệm của tôi thông qua phpunit thay vì Trường hợp thử nghiệm Web Drupal. Vì vậy, nó có thể.

Tôi hy vọng sẽ đến một điểm mà tôi có thể phát hành nó và nó có thể được tích hợp vào tài liệu Phactory.

- CẬP NHẬT 2 -

Tài liệu về cách tôi thiết lập Phactory có tại https://github.com/trimbletodd/phactory .


Cảm ơn sự đóng góp của bạn. Thật thú vị những gì đang diễn ra với Phactory để thử nghiệm đơn vị. Nhìn về phía trước để thấy rằng mô-đun Drupal bạn đã nấu;)
barista nghiệp dư

Tôi đưa ra một tài liệu nhanh về cách tôi xử lý Phactory trong Drupal trên ngã ba của tôi. Tôi đã gửi yêu cầu kéo cho chủ, nhưng nó chưa được kết hợp. github.com/trimbletodd/phactory
trimbletodd

Câu hỏi này và đó là câu trả lời vẫn tiếp tục quay trở lại cho đến ngày nay. Bạn đá cho lăn ngã ba / giải pháp của riêng bạn. Do đó, bạn nhận được giải thưởng được chấp nhận, thưa ông.
barista nghiệp dư

12

Vì blog của Mark đang ngoại tuyến, tôi sẽ đề cập đến một số công cụ mà nhóm của anh ấy đã triển khai:

Kiểm tra chức năng: Selenium
Kiểm tra đơn vị: Simpletest
Build server: Jenkins
Điểm chuẩn hiệu suất: XDebug + Cachegrind

Trong hai năm kể từ khi tôi hỏi câu hỏi này, tôi đã thấy một số công cụ bổ sung trở nên phổ biến đối với bối cảnh TDD. Ngày nay, khi bạn nói về Phát triển hướng thử nghiệm (trong bối cảnh Drupal, tất nhiên), có hai mặt của cùng một đồng tiền - thử nghiệm mặt trước và thử nghiệm mặt sau.

Dưới đây là hai bài thuyết trình nổi bật từ Drupalcon Portland 2013 mới nhất đại diện cho vấn đề này:

Phát triển, theo số , thử nghiệm phụ trợ.
Thử nghiệm tự động với Jasmine và PhantomJS , thử nghiệm frontend.

Bài thuyết trình đầu tiên không liên quan đến kiểm thử đơn vị hoặc chức năng (nói đúng), đó là về các công cụ để đo lường chất lượng mã. Tuy nhiên, tôi cảm thấy nó phần nào liên quan đến chủ đề này.


1
Ồ Cảm ơn bạn đã quay lại 2 NĂM sau để cho chúng tôi biết những gì bạn đã khám phá! Bạn đá :)
Chapabu

5

Điều duy nhất tôi biết là đối với các mô-đun đóng góp, bạn có thể kích hoạt kiểm tra tự động các cam kết bản vá trong hàng đợi vấn đề, xem http://drupal.org/node/689990 . Nó vẫn hơi không ổn định, đặc biệt nếu bạn có sự phụ thuộc.

Hầu hết các dự án có lẽ đang làm nhiều thứ hơn trong quá trình phát triển theo hướng lỗi, về cơ bản bắt đầu viết một bài kiểm tra trước khi phát hiện ra lỗi và sau đó sửa nó. Nếu có;)

Theo kinh nghiệm cá nhân của tôi, TDD khá khó khăn trong Drupal, vì bạn thường không viết (chỉ) các bài kiểm tra đơn vị với các bài kiểm tra đơn giản nhưng tích hợp, trong đó bạn xem các trang và gửi biểu mẫu. Vì vậy, có thể khá khó để viết bài kiểm tra tốt trước. Nhưng có lẽ tôi không quen làm điều đó :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.