2010-01-04 46 views
7

Tôi có một chức năng lưu ảnh (được lưu trữ trong cơ sở dữ liệu, ứng dụng cung cấp tùy chọn người dùng để lưu vào một thư mục) vào một thư mục cụ thể.Bây giờ, điều này không hoạt động chính xác. Tôi vừa sửa nó.Nơi, tôi có nên viết kiểm tra đơn vị hay không kiểm tra tích hợp cho chức năng?Tôi có nên viết kiểm tra tích hợp hoặc kiểm tra đơn vị không?

+0

Tôi thích viết unittests cho các lớp đơn và (đôi khi) các công cụ ghi âm để kiểm tra tích hợp. – stacker

Trả lời

17

Trong trường hợp của bạn, bạn muốn viết bài kiểm tra tích hợp để bao gồm trường hợp bạn đề cập. Tôi có một số full post on this topic. Tuy nhiên, đây là phiên bản tóm tắt dành riêng cho câu hỏi của bạn:

Trong cuốn sách Bài kiểm tra đơn vị nghệ thuật, Roy Osherove mô tả nguyên tắc chính mà bài kiểm tra đơn vị phải "đáng tin cậy". Trên bề mặt, điều này có vẻ khá rõ ràng. Tuy nhiên, điều này làm nổi bật một số điểm khác biệt chính giữa thử nghiệm đơn vị và thử nghiệm tích hợp.

Với thử nghiệm đáng tin cậy, bạn phải có khả năng tin tưởng vào kết quả 100% thời gian. Nếu kiểm tra không thành công, bạn muốn chắc chắn rằng mã bị hỏng và phải được sửa. Bạn không cần phải hỏi những thứ như "Có phải cơ sở dữ liệu không?", "Chuỗi kết nối có ổn không?", "Quy trình được lưu trữ có được sửa đổi không?". Bằng cách hỏi những câu hỏi này, nó cho thấy rằng bạn không thể tin tưởng vào kết quả và bạn có thể có một "bài kiểm tra đơn vị" được thiết kế kém.

Khi kịch bản của bạn mô tả một tình huống có nhiều phụ thuộc tương tự nhau, bạn muốn bao gồm nó bằng thử nghiệm tích hợp. Một lần nữa, để biết thêm chi tiết, hãy xem my full post here.

Chúc may mắn!

+1

điểm tuyệt vời về 'kiểm tra đáng tin cậy' –

+0

Cảm ơn nhận xét của bạn. Khái niệm của Roy chắc chắn đã giúp tôi, quá. Chào mừng bạn đến với stackoverflow! –

+1

Chỉ cần đọc câu trả lời này, và nó cũng hoàn toàn trả lời các câu hỏi của tôi. Tôi là người mới để phát triển "chuyên nghiệp", và điều này đã cho tôi một ý tưởng tốt hơn về những bài kiểm tra tích hợp là gì, đó là những gì tôi đã không hoàn toàn hiểu. Cảm ơn bạn! –

8

thử nghiệm tích hợp và kiểm tra đơn vị có phạm vi và mục đích khác nhau:

  • Unit tests kiểm tra mẩu nhỏ của mã (giống như một chức năng) trong sự cô lập với phần còn lại của chương trình, lý tưởng bao gồm tất cả các trường hợp cạnh càng tốt (như ngoại lệ, tham số null, v.v.)
  • Kiểm tra tích hợp kiểm tra toàn bộ ứng dụng từ quan điểm trường hợp sử dụng. Họ không bao giờ có thể bao gồm tất cả các trường hợp cạnh, nhưng họ có thể nắm bắt các vấn đề với sự tương tác giữa các bộ phận của mã và mã keo tham gia với họ mà đơn vị kiểm tra thường bỏ lỡ

Đối với một chức năng đơn lẻ, bạn thực sự chỉ có thể có một bài kiểm tra đơn vị, và bạn nên. Nhưng bạn cũng có thể có một bài kiểm tra tích hợp cho thấy rằng khi người dùng nhấn một nút nhất định, một bức ảnh được ghi vào thư mục, và có thể được mở trong chương trình.

1

Một số người sẽ gọi thử nghiệm cho DAO một bài kiểm tra tích hợp; những người khác sẽ nói đó là một thử nghiệm đơn vị. Bất cứ điều gì bạn gọi nó, tôi muốn nói rằng bạn nên có một bài kiểm tra đơn vị cho tất cả các chức năng DAO và một bài kiểm tra tích hợp cho các hành vi trước-to-back thể hiện trong trường hợp sử dụng mà nói "cung cấp cho người dùng tùy chọn để lưu vào hệ thống tập tin. " Tôi muốn có các bài kiểm tra tích hợp cho cả hai kịch bản, vì có vẻ như cả hai đều có thể có trong hệ thống của bạn.

1

Tôi nghĩ nó phụ thuộc vào nguồn gốc của vấn đề của bạn. Nếu bản thân chức năng có thể có một số vấn đề trong các tình huống khác nhau, bạn có thể có các xét nghiệm đơn vị để kiểm tra các tình huống này qua chức năng của bạn. Nếu tích hợp chức năng của bạn và các phần khác trong chương trình của bạn có thể gây ra một số vấn đề bạn nên nghĩ đến một bài kiểm tra tích hợp. Đôi khi một chức năng như của bạn có thể cần một số nguồn lực bên ngoài để làm công việc của nó không phải là một ý tưởng tồi để có một số đơn vị xét nghiệm để xem những gì sẽ xảy ra nếu một số các nguồn tài nguyên không có sẵn

5
  • kiểm tra tích hợp giúp bạn để xác nhận nếu phần mềm của bạn là hoạt động bình thường.
  • Kiểm tra đơn vị giúp bạn tìm thấy lý do tại sao phần mềm của bạn là vi phạm.

Kiểm tra đơn vị ở một mức độ nào đó cũng đóng góp vào mục tiêu đầu tiên. Ngoài ra nó có một vài ưu điểm:

  • Đó là nói chung cách rẻ hơn để ghichạy một thử nghiệm đơn vị với một phạm vi nhỏ hơn nhiều.
  • Sẽ dễ dàng hơn để có được mức độ phù hợp cho vụ nổ kết hợp của các trạng thái của các thành phần của bạn bằng cách sử dụng các phép thử đơn vị hơn là kiểm tra tích hợp. Giả sử bạn có một thiết lập liên quan đến ba thành phần. Mỗi người trong số họ có 3 tiểu bang khác nhau. Sau đó, kiểm tra tích hợp toàn bộ thiết lập sẽ liên quan đến việc kiểm tra 3 * 3 * 3 = 27 điều kiện. Đơn vị kiểm tra các thành phần riêng lẻ sẽ yêu cầu thử nghiệm 3 + 3 + 3 = 9 điều kiện. (Điều này là đơn giản, nhưng bạn hy vọng sẽ thấy được điểm này.)

Do đó, các xét nghiệm đơn vị thường phổ biến hơn kiểm thử tích hợp. Tuy nhiên, bạn thực sự không thể làm gì nếu không có các bài kiểm tra tích hợp. Kiểm thử tích hợp phải là nền tảng được sử dụng để chấp nhận phần mềm của bạn. Việc có các kiểm tra đơn vị chỉ chứng minh rằng bạn có một loạt các công cụ đang thực hiện một cái gì đó. Kiểm tra tích hợp chứng minh rằng bạn có phần mềm hoạt động.

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