Khi đọc đối tượng đang phát triển Phần mềm định hướng được hướng dẫn bằng các thử nghiệm, tôi đã học được cách ly kiểm tra và tính linh hoạt của thử nghiệm. Ý tưởng cho rằng mỗi bài kiểm tra phải rất cụ thể đối với một đoạn mã hoặc chức năng, và sự chồng chéo của phạm vi mã bằng các bài kiểm tra nên được giữ ở mức tối thiểu. Lý tưởng ngụ ý rằng mỗi thay đổi trong mã sẽ dẫn đến phá vỡ chỉ một thử nghiệm. Tránh dành thời gian trải qua nhiều lần kiểm tra bị hỏng để xác nhận rằng một thay đổi là nguyên nhân và nếu nó được sửa đổi bởi các sửa đổi kiểm tra.Điều gì sẽ được mô phỏng cho thử nghiệm tích hợp?
Bây giờ điều này có vẻ dễ dàng đủ cho các bài kiểm tra đơn vị, chúng rất cô lập bởi bản chất của chúng. Tuy nhiên khi được trình bày bởi các bài kiểm tra tích hợp, có vẻ khó để tránh có nhiều bài kiểm tra thực hiện cùng một đường dẫn mã, đặc biệt khi chạy ngoài các bài kiểm tra đơn vị.
Vì vậy, câu hỏi của tôi, là những phụ thuộc nên được chế giễu khi thực hiện thử nghiệm tích hợp? Có nên chế giễu gì không? Nên một con đường thực thi duy nhất được kiểm tra, và tất cả các tác dụng phụ không liên quan trực tiếp đến đường dẫn mã này được giả lập?
Tôi đang đùa giỡn với ý tưởng thực hiện thử nghiệm tích hợp theo từng cặp. Kiểm tra một mối quan hệ giữa hai đối tượng và giả lập mọi thứ khác. Sau đó, các thay đổi trong một trong các đối tượng này sẽ có tác động tối thiểu đối với các thử nghiệm tích hợp khác, ngoài việc tạo thành một chuỗi các bài kiểm tra đầu cuối hoàn chỉnh bằng các cặp.
Thanks cho bất kỳ thông tin ..
Sửa: Chỉ cần làm rõ, tôi đang yêu cầu cơ bản "Làm thế nào để tránh một số lượng lớn không tích hợp kiểm tra trong quá trình bình thường của sự phát triển?". Mà tôi giả định là đạt được bằng cách sử dụng mocks, và tại sao tôi hỏi về những gì để chế giễu.
Cập nhật: Tôi đã tìm thấy một bài nói chuyện rất thú vị về các bài kiểm tra tích hợp của J.B.Rainsberger, tôi nghĩ câu trả lời này khá tốt, nếu có thể gây tranh cãi một chút. Tiêu đề là "Kiểm thử tích hợp là một Scam", vì vậy bạn có thể đoán, ông không chủ trương kiểm thử tích hợp ở tất cả (kết thúc để kiểm tra kiểu kết thúc). Lập luận cho rằng các xét nghiệm tích hợp sẽ luôn luôn thấp hơn nhiều so với số tiền cần thiết để kiểm tra kỹ lưỡng các tương tác có thể xảy ra (do nổ kết hợp), và có thể đưa ra một sự tự tin sai lầm. Thay vào đó, ông đề xuất những gì ông gọi là Thử nghiệm cộng tác và Kiểm tra hợp đồng. Đó là một cuộc nói chuyện 90 phút và tiếc là bảng trắng không phải là rất rõ ràng và không có ví dụ mã, vì vậy tôi vẫn còn nhận được đầu của tôi xung quanh nó. Khi tôi có một lời giải thích rõ ràng, tôi sẽ viết nó ở đây! Trừ khi một người khác đánh tôi với nó ..
Dưới đây là tóm tắt ngắn gọn về Kiểm tra hợp đồng. Âm thanh như Thiết kế theo xác nhận loại hợp đồng, mà tôi tin rằng có thể/sẽ được triển khai trong mẫu Giao diện Phi ảo trong C++.
http://thecodewhisperer.tumblr.com/post/1325859246/in-brief-contract-tests
thử nghiệm tích hợp là một cuộc nói chuyện Scam video: http://www.infoq.com/presentations/integration-tests-scam
Tóm tắt:
kiểm tra tích hợp là một scam. Có thể bạn đang viết 2-5% trong số các bài kiểm tra tích hợp bạn cần kiểm tra kỹ lưỡng. Bạn có thể là kiểm tra đơn vị trùng lặp trên toàn bộ địa điểm. Kiểm tra tích hợp của bạn có thể trùng lặp nhau trên toàn bộ địa điểm. Khi thử nghiệm tích hợp không thành công, ai biết được những gì bị hỏng?Tìm hiểu về cuộc tấn công hai hướng mà giải quyết vấn đề: kiểm tra cộng tác và kiểm tra hợp đồng.
Trong khi tôi chưa đọc GOOS (xấu hổ với tôi), tôi khá chắc chắn rằng nó không nói về các bài kiểm tra tích hợp khi nó nói rằng chỉ có một bài kiểm tra sẽ thất bại cho mỗi một thay đổi. –
Tôi hiểu, vì vậy bạn cho rằng sự mong manh thử nghiệm áp dụng nhiều hơn cho các bài kiểm tra đơn vị hơn là các bài kiểm tra tích hợp? Tôi thử nghiệm tích hợp sẽ được coi là vốn mong manh hơn và dự kiến sẽ thất bại thường xuyên hơn? – NitrousUK
Không, hoàn toàn ngược lại. Các bài kiểm tra tích hợp kiểm tra một bức tranh lớn hơn, miễn là chức năng mà chúng kiểm tra không thay đổi, chúng không được phép thất bại. –