it-swarm-vi.com

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

  • Các công cụ được sử dụng TDD trong Drupal (mô-đun PHP, Drupal, v.v.)?
  • 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 tại đây về thử nghiệm đơn vị trong Drupal với SimpleTest; Tôi quan tâm hơn đến việc bao gồm quy trình làm việc và phần cấu hình. Hiện tại tôi có một Cả hai trang web sản xuất và giai đoạn đều chạy trên một CPU Dreamhost VPS 300 MB RAM/300 MHz.

29
amateur barista

Trong thế giới Ruby, TDD được hỗ trợ bởi các công cụ được tích hợp trong khung. Factory Girl, Mocha, rSpec và các công cụ khác cho phép các nhà phát triển tạo các bài kiểm tra dễ dàng và linh hoạt để giải quyết các trường hợp kiểm tra 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 so với 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 cách sử dụng Phactory và phpunit, bootstraps Drupal theo cách thủ công. 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ể ở mức 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 thử nghiệm 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 một tích hợp đầy đủ Drupal với Phactory và hiện đang chạy thử nghiệm của tôi qua phpunit thay vì Drupal Web Test Case. Vì vậy, điều đó là 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 là tại https://github.com/trimbletodd/phactory .

8
trimbletodd

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: Selen
[.__.] Kiểm tra đơn vị: Đơn giản nhất
[.__.] Xây dựng máy chủ: Jenkins
[.__.] Điểm chuẩn hiệu suất: XDebug + Bộ nhớ đệm

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), 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ố , kiểm tra phụ trợ.
[.__.] Kiểm tra tự động với Jasmine và PhantomJS , kiểm tra lối vào.

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.

13
amateur barista

Đ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 trong hàng đợi vấn đề, xem - http://drupal.org/node/68999 . 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 đó :)

5
Berdir