2009-04-29 40 views
5

Tôi đã suy nghĩ về việc viết các bài kiểm tra đơn vị cho các dự án PHP/MySQL của tôi.Kiểm thử đơn vị trong PHP?

Điều gây lỗi cho tôi là cách tôi có thể kiểm tra những thứ như xác thực biểu mẫu, tính năng ajax và các tính năng giao diện người dùng (chẳng hạn như nhấp vào liên kết). Ngoài ra, tôi không muốn các bài kiểm tra phụ thuộc vào một khía cạnh của giao diện người dùng, vì vậy nếu tôi di chuyển một liên kết thì tất cả các bài kiểm tra sẽ bị hỏng.

Có ai có ý tưởng/đề xuất về những phần nào của mã tôi nên kiểm tra đơn vị, khoảng thời gian nên dành cho thử nghiệm đơn vị và mọi đề xuất/mẹo khác không?

+1

http://stackoverflow.com/questions/570451/how-to-best-do-unit-testing-for-a-web-application –

Trả lời

2

Kiểm tra đơn vị, ít nhất là từ quan điểm phát triển ứng dụng web, thực sự không thể bao gồm thiết kế giao diện người dùng. Kiểm tra đơn vị nào có thể giúp bạn là kiểm tra đầu vào/đầu ra của tất cả các phương pháp điều khiển của bạn và/hoặc bất kỳ chức năng đơn lẻ/toàn cục nào bạn có xung quanh. Vì vậy, nếu bạn muốn nhận được phạm vi kiểm tra đơn vị về xác thực biểu mẫu của mình, hãy đảm bảo rằng ứng dụng của bạn được cấu trúc theo cách bạn có thể kiểm tra chức năng xác thực của mình độc lập với giao diện người dùng.

class SomeController extends ... { 
    ... function isAPhoneNumber($string){ 
     if(...) { 
      return true; 
     } 
     else (...) { 
      return false; 
     } 
    } 
} 

Điều này làm cho tất cả mã nhận giá trị của bạn cho phương pháp này chưa được kiểm tra.Cách hiệu quả duy nhất mà tôi đã thấy khi thử nghiệm này là kiểm tra giao diện người dùng trực tiếp bằng các điều khiển từ xa của trình duyệt như Selenium. Các PHPUnit testing framework có móc để sử dụng trình điều khiển PHP của Selenium, có nghĩa là bạn có thể sử dụng cùng một thử nghiệm Á hậu như các bài kiểm tra đơn vị khác của bạn.

Bạn sẽ không bao giờ được đảm bảo 100% rằng một thay đổi ngây thơ sẽ không làm bài kiểm tra Selenium của bạn, nhưng có những bước bạn có thể thực hiện trong quá trình phát triển để giảm thiểu điều này. Selenium có various different ways để "nhắm mục tiêu" phần tử mà nó sẽ nhấp vào hoặc nhập. Bạn muốn sử dụng nhắm mục tiêu càng cụ thể càng tốt, vì vậy hãy cố gắng cung cấp cho tất cả các nút (X) HTML của bạn một phần tử ID duy nhất. Điều này đảm bảo rằng selen sẽ nhấp vào một liên kết bất kể nó kết thúc ở đâu trên một trang. Khi một id duy nhất là không thể, hãy cố gắng bọc các phần tử phổ biến với một số phần tử HTML có một mã định danh duy nhất, và sau đó sử dụng khả năng xpath tarpath của selen để nói "nhấp vào liên kết chứa văn bản" đăng ký "nằm trong div có id là "foo" hoặc nhấp vào liên kết thứ ba trong div có id là "foo".

Nếu không rõ ràng từ các mục ở trên, không dựa vào lựa chọn nhắm mục tiêu mà Selenium IDE Mục tiêu của họ là đảm bảo rằng chạy thử nghiệm trên trang chính xác đó sẽ cho bạn kết quả tương tự, có thể cung cấp cho bạn xpath rất mỏng manh. Luôn xem xét các bài kiểm tra bạn ghi lại và nhắm mục tiêu sửa lỗi.

Không có câu trả lời dễ dàng ở đây. Nếu có, các ứng dụng web sẽ ít bị lỗi hơn nhiều.

0

Hãy thử SeleniumHQ.org.

Đây là tiện ích mở rộng của trình duyệt cho phép bạn ghi lại các nhấp chuột, nhập và di chuyển chuột, v.v ..., như macro. Macro có thể được lưu dưới dạng thử nghiệm và phát lại để kiểm tra các ứng dụng web.

Có vẻ như họ cũng có các phiên bản khác của sản phẩm mà có thể thực hiện các kiểm tra bằng cách khởi chạy các trình duyệt khác.

0

Tôi không biết câu trả lời của tôi có hữu ích hay không, bởi vì tôi cũng có cùng một câu hỏi.

Dù sao, nếu bạn chưa thực hiện, hãy thử Windmill, mà tôi thấy rất hữu ích, nhanh chóng và bẩn và hoạt động trong các trình duyệt chính.

Thay đổi một liên kết không thay đổi thử nghiệm (trong hầu hết các trường hợp tôi nghĩ) =)

3

Bạn ngón tay cái qua phần này của documentation of SimpleTest và nên xem xét các phương pháp họ có để thử nghiệm

  • nội dung trang
  • navigation
  • cookie
  • hình ảnh
  • khung
  • biểu mẫu gửi
  • chuyển hướng
  • proxy

Ngay cả khi bạn không kết thúc bằng cách sử dụng SimpleTest, nó có thể là đáng xem.

Đối với tôi, điều hữu ích nhất là thử nghiệm gửi biểu mẫu, bao gồm từng thông số trong yêu cầu GET hoặc POST cho mỗi biểu mẫu cần thiết cho hoạt động của trang web của bạn.

Cho dù bạn muốn thử nghiệm nhiều giao diện người dùng hoặc chỉ các khu vực chính nhỏ là tùy thuộc vào bạn.

+0

oops, cảm ơn bạn đã sửa lỗi đánh máy – thomasrutter

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