Câu hỏi này là về mức độ kiểm tra đơn vị.Kiểm thử đơn vị chương trình KHÔNG nên làm gì
Tôi đã viết một chương trình điển hình cập nhật cơ sở dữ liệu với thông tin đến trong các tin nhắn XML. Tôi nghĩ về các bài kiểm tra đơn vị nó cần thiết. Chương trình chèn hoặc cập nhật các bản ghi theo các quy tắc phức tạp, sinh ra nhiều trường hợp khác nhau. Lúc đầu, tôi đã quyết định để kiểm tra một số điều kiện sau đây cho từng trường hợp:
- Số cần thiết của hồ sơ bổ sung
- Các lĩnh vực ghi chèn và cập nhật được điền một cách chính xác
- Không có dữ liệu hiện có, nhưng không liên quan đến dữ liệu đã tải lên đã được thay đổi
Nó đã cho tôi thấy loại thử nghiệm thứ ba thực sự có ý nghĩa. Nhưng chẳng mấy chốc tôi thấy rằng điều này không dễ thực hiện, bởi vì bạn thực sự cần phải gõ snapshot cơ sở dữ liệu và sau đó so sánh nó với cái đã sửa đổi. Tôi nhanh chóng bắt đầu cảm thấy khó chịu vì thực tế tôi cần phải viết các bài kiểm tra này cho các trường hợp sửa đổi cơ sở dữ liệu khác nhau, trong khi các bài kiểm tra này không có giá trị và nhiều thông tin về đặc điểm kỹ thuật và thiết kế mã sản xuất.
Sau đó, tôi nghĩ, có thể, tôi đang thử nghiệm quá nhiều? Và nếu không, vì vậy nếu tôi kiểm tra xem chương trình KHÔNG sửa đổi hồ sơ không thích hợp, thì tại sao tôi không thử nghiệm nó:
- không sửa đổi cơ sở dữ liệu khác
- không xóa các tập tin trên đĩa
- KHÔNG gửi e-mail đến Santa Klaus?
Tôi hoàn toàn bối rối khi vẽ đường biên giới. Bạn sẽ vẽ nó ở đâu?
CẬP NHẬT
Tôi đọc nhiều gợi ý hữu ích trong các câu trả lời và đánh dấu một như các giải pháp, bởi vì nó có những ý tưởng hữu ích hơn đối với tôi, nhưng vẫn còn đó là không rõ ràng đối với tôi làm thế nào để kiểm tra đúng cách cập nhật cơ sở dữ liệu. Liệu nó có kiểm tra ý nghĩa rằng chương trình doen't thay đổi quá nhiều? Và nếu có, thì làm thế nào triệt để?
+1 Điều này khá chính xác. Tôi sẽ thêm rằng tôi không làm quá nhiều thử nghiệm tiêu cực trừ khi có một * cụ thể * lỗi tôi phát hiện ra nơi một số hành động gây ra một tác dụng phụ không mong muốn. Sau đó, tôi viết một bài kiểm tra để xác minh rằng hành động không gây ra tác dụng phụ và sửa mã cho đến khi bài kiểm tra trôi qua. Tôi không bao giờ ** bao giờ ** xóa thử nghiệm đó chỉ trong trường hợp tôi gây ra một hồi quy sau này. Theo quy tắc chung, hầu hết các lỗi sẽ dẫn đến kiểm tra đơn vị. Đó là một cách tuyệt vời để đảm bảo rằng các lỗi trong quá khứ không trở lại trong các phiên bản sau. – cdhowie