2008-09-05 24 views
41

Tôi là nhà phát triển web hoạt động trong PHP. Tôi có một số kinh nghiệm hạn chế với việc sử dụng Test Driven Development trong các ứng dụng C# desktop. Trong trường hợp đó, chúng tôi đã sử dụng nUnit cho khung kiểm thử đơn vị.Kiểm tra phát triển theo định hướng trong PHP

Tôi muốn bắt đầu sử dụng TDD trong các dự án mới nhưng tôi thực sự không chắc chắn nên bắt đầu từ đâu.

Bạn có đề xuất nào cho khung kiểm tra đơn vị dựa trên PHP và một số tài nguyên tốt cho người mới bắt đầu khái niệm TDD là gì?

Trả lời

39

Tôi đã sử dụng cả hai PHPUnit & SimpleTest và tôi thấy SimpleTest để được dễ dàng hơn để sử dụng.

Theo như TDD đi, tôi đã không có nhiều may mắn với nó theo nghĩa tinh khiết nhất. Tôi nghĩ rằng đó là chủ yếu là một vấn đề thời gian/kỷ luật trên một phần của tôi mặc dù.

Thêm các thử nghiệm sau khi thực tế có phần hữu ích nhưng những điều tôi thích làm là sử dụng viết các bài kiểm tra SimpleTest để kiểm tra các lỗi cụ thể mà tôi phải sửa. Điều đó làm cho nó rất dễ dàng để xác minh rằng mọi thứ đang thực sự cố định và ở lại cố định.

1

Bạn nên xem xét PHPUnit, có vẻ khá giống nUnit.

2

SimpleTest là một hệ thống tuyệt vời. Tôi bắt đầu với nó khoảng 5 tháng trước, chưa bao giờ nghe nói về TDD, và SimpleTest dễ học nhưng vẫn mạnh mẽ. Đối với tài nguyên, tôi hiện đang đọc TDD theo Ví dụ của Kent Beck và điều đó thật tuyệt.

9

PHPUnit là một tiêu chuẩn, nhưng đôi khi cũng áp đảo, vì vậy nếu bạn thấy nó quá phức tạp, hãy xem phpt để giúp bạn bắt đầu. Nó rất, rất dễ dàng để viết các bài kiểm tra trong đó. Không có trí tuệ cho bất kỳ lập trình viên nào.

Và để trả lời câu hỏi TDD của bạn - Tôi không chắc liệu TDD có sử dụng widley trong không gian PHP hay không. Tôi có thể thấy rằng phát triển ứng dụng nhanh và TDD phần nào xung đột (đúng IMHO). TDD yêu cầu bạn có bức tranh hoàn chỉnh về những gì bạn xây dựng và bạn viết các bài kiểm tra của mình lên phía trước và sau đó thực hiện mã để thực hiện kiểm tra.

Vì vậy, ví dụ những gì chúng tôi làm thay vào đó, là viết nhiều bài kiểm tra khi chúng tôi hoàn thành. Đây không phải lúc nào cũng là cách tiếp cận tốt nhất bởi vì đôi khi bạn kết thúc với các thử nghiệm không có thật mà vượt qua, nhưng không thực sự hữu ích nhưng ít nhất đó là thứ bạn có thể mở rộng. Trong nội bộ chúng tôi tiếp tục kiểm tra và về cơ bản viết một bài kiểm tra cho mỗi lỗi chúng tôi tìm thấy. Đây là cách nó trở nên vững chắc hơn.

+0

cách đây một người đã làm điều này -1 bao lâu? – mraaroncruz

+1

btw đây là số 2 trên goog cho "tdd in php" và # 1 cho "tdd php"! – mraaroncruz

+2

Tôi không biết tại sao đó là -1. Mặc dù vậy, tôi vẫn giữ quan điểm của mình. Quan điểm của tôi là, tôi hầu như không TDD cho nguyên mẫu nhanh chóng, nhưng tôi hầu như luôn luôn (80-90% thời gian) TDD nếu không. Tôi vẫn thích phpt. Không chắc tại sao đó là điều xấu. Trong khi PHPUnit có những ưu điểm của nó, nó vẫn là một khung công tác phức tạp. – Till

4

Cá nhân tôi thích SimpleTest hơn. Có một runner thử nghiệm dòng lệnh và runner thử nghiệm dựa trên web, và thậm chí còn có một Eclipse plugin để cho phép bạn chạy các kiểm thử đơn vị từ chính IDE. Tôi đã tìm thấy kết nối Zend tới PHPUnit khó khăn hơn nhiều để làm việc, đặc biệt là với trình gỡ lỗi.

Cách chúng tôi sử dụng SimpleTest nội bộ là với tập lệnh continuous integration mà chúng tôi đã tự viết. Mỗi lần chúng tôi kiểm tra tính năng SVN, chúng tôi bao gồm các bài kiểm tra đơn vị. Mỗi giờ hoặc lâu hơn, tập lệnh CI chạy và gọi một dòng lệnh PHP script chạy tất cả các bài kiểm tra đơn vị của chúng tôi. Nếu nghỉ ngơi, tôi nhận được một email. Đó là một cách tuyệt vời để giảm lỗi trong hệ thống của chúng tôi.

Tuy nhiên, bạn có thể dễ dàng sử dụng một cái gì đó như Phing để chạy thử nghiệm của bạn tự động, hoặc trên một công việc cron hoặc với một check-in SVN hook.

Thực tế, nếu bạn muốn liên hệ trực tiếp với tôi để được trợ giúp thêm, bạn có thể liên hệ với tôi qua thông tin tiểu sử của tôi trên SO. Tôi rất muốn giúp bạn.

1

Một công cụ hiện đại khác bạn nên xem là Codeception. PHPUnit đơn giản hơn nhiều và kết hợp cách tiếp cận theo kịch bản, điều này khá hữu ích khi tạo tài liệu từ các thử nghiệm.

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