Nhà cung cấp giao diện có nên cung cấp bản triển khai giả để thử nghiệm không?


8

Chúng tôi đã lãng phí rất nhiều thời gian cho bài kiểm tra tích hợp cuối cùng của chúng tôi về một lỗi mà tôi nghĩ nên được tìm thấy trong bài kiểm tra đơn vị. Vấn đề là một giao diện / dịch vụ mà chúng tôi gọi là hoạt động khác với dự kiến ​​và thử nghiệm đơn vị không tìm thấy vấn đề này vì chúng tôi đã chế giễu giao diện đó để kiểm tra đơn vị và giả của chúng tôi tất nhiên dựa trên cách hiểu sai về giao diện của chúng tôi. làm Bây giờ tôi có thể hơi tức giận với đồng nghiệp thân yêu của chúng tôi, người đã cung cấp giao diện, bởi vì mô tả / đặc tả của họ về nó (một nhận xét JavaDoc ngắn gọn) là mơ hồ và góp phần vào sự hiểu lầm của chúng tôi. Mặt khác, tôi nghĩ rằng vấn đề có thể tránh được nếu những đồng nghiệp đó đã cung cấp một triển khai giả cho giao diện của họ mà chúng ta có thể gọi trong thử nghiệm đơn vị của mình.

Bây giờ, cách thực hành tốt nhất trong việc tổ chức tạo các đối tượng giả giữa các đội cung cấp và sử dụng giao diện chung là gì? Kinh nghiệm của bạn là gì?


Tôi hy vọng trong tất cả các cuộc điều tra đổ lỗi này, bạn đã bao gồm một số cho chính mình vì đã không hỏi tác giả nếu bạn hiểu là chính xác ... Một câu hỏi từ phía bạn có thể đã cứu tất cả nỗi đau.
Walter

2
Walter, cảm ơn bạn đã chỉnh sửa và nhận xét mang tính xây dựng. Đề nghị của bạn không trả lời trực tiếp câu hỏi, nhưng thực tế là một giải pháp cho vấn đề ban đầu tôi có. Vì tôi rất khó để hỏi những câu hỏi hay về sự hiểu biết của chính mình, tôi đã nảy ra một ý tưởng khác: chúng tôi có thể yêu cầu nhóm khác xem xét kế hoạch của chúng tôi để sử dụng giao diện của họ và họ có thể đã phát hiện ra vấn đề.
Robert Jack Will

Câu trả lời:


10

Lý tưởng nhất là có

Bất cứ ai viết mã mà người khác sử dụng không bị ràng buộc cung cấp bất cứ điều gì bổ sung cho mã. Tuy nhiên, nếu bạn muốn mọi người sử dụng mã của mình (và mọi người phải luôn luôn viết với tâm lý này), tài liệu có liên quan rộng rãi - có thể bao gồm các ví dụ - cực kỳ hữu ích.

Tôi không nghĩ rằng tôi đã từng đọc tài liệu và đã nghĩ, "Điều này thật ngu ngốc; có quá nhiều tài liệu." Mọi người tự nhiên có năng khiếu bỏ qua những gì họ cho là không cần thiết. Tuy nhiên, chúng tôi không thể chỉ đơn giản là đọc và nội suy các tài liệu hoặc khái niệm chưa được giải thích. Vì vậy, thật an toàn khi giả định: không có thứ gọi là quá nhiều tài liệu tốt . Nó cũng nên cho rằng người đọc nó như một đứa trẻ ngây thơ (tức là làm cho nó đơn giản nhất có thể).

Các ví dụ về cách khởi tạo và sử dụng một lớp luôn hữu ích. Mặc dù, nếu mã phụ thuộc quá nhiều vào tài liệu cần hiểu, thì đó là một vấn đề (riêng biệt) khác.

Câu trả lời này không nên được coi là hỏa lực sẽ biện minh cho việc la hét với đồng nghiệp của bạn. Nó chỉ đơn thuần là một hướng dẫn về những gì tôi nghĩ là có lợi và nên được thực hiện. Mặc dù điều này là hoàn toàn vô dụng trong tình huống của bạn (mặc dù, tôi cảm thấy câu hỏi của bạn về cơ bản là một câu nói hay), điều tốt nhất tiếp theo bạn có thể làm là dẫn dụ bằng ví dụ và hy vọng đồng nghiệp của bạn xuất hiện.


1
Trong khi tôi đã thấy mình phàn nàn về quá nhiều tài liệu, những trường hợp đã được quý hiếm (và đã được tham gia phát hành hơn với chất lượng dẫn đến rất dài worded và khó hiểu tài liệu).
Tim Post

1
@Tim: Cảm ơn, vừa chỉnh sửa - Tôi đã tham khảo tài liệu tốt. Thật không may, bất cứ ai cũng có thể viết một đống rác như 'tài liệu'!
JK

5

Nhà cung cấp giao diện có nên cung cấp bản triển khai giả để thử nghiệm không?

Không , nhưng nhà cung cấp cũng nên cung cấp mã nguồn cho những người không tin tưởng của họ. Đọc những điều không hay này bạn sẽ có ấn tượng tốt về việc thư viện nên được sử dụng như thế nào. Có lẽ bạn có thể thêm các điểm không mong muốn vào các bài kiểm tra của nhà cung cấp để chỉ định những gì bạn mong đợi từ nhà cung cấp.

Có rất nhiều công cụ / khung mô phỏng ngoài kia có thể thực hiện giả / sơ khai / giả.

Yêu cầu nhà cung cấp thực hiện giả không có mối quan hệ chi phí / lợi ích tốt vì anh ta không thể biết phần nào của việc thực hiện giả phải gần giống với triển khai thực và phần nào chỉ là mặt tiền.

Một cách khác để giải quyết vấn đề này là nếu nhà cung cấp sử dụng codecontract để đảm bảo rằng lib được sử dụng theo cách được chỉ định.


+1 "Có nhiều công cụ / khung mô phỏng ngoài kia có thể thực hiện giả / sơ khai / giả."
Armand

Kiểm tra đơn vị: Tôi thấy có hai vấn đề trong việc sử dụng chúng làm tài liệu: 1. chúng chỉ hiển thị các ví dụ về những gì dịch vụ hỗ trợ, nhưng sẽ không cho tôi biết nếu một mục đích sử dụng nào đó tôi có được hỗ trợ. 2. Đọc các bài kiểm tra đơn vị cũng gần như đòi hỏi / mệt mỏi như đọc mã và tôi đang tìm kiếm một giải pháp giúp mọi người làm việc. Tôi đang tìm kiếm thứ gì đó hoạt động tự động, như thử nghiệm hoặc hợp đồng (mà chúng tôi cũng đang xem xét).
Robert Jack Will

"Nhà cung cấp không thể biết việc sử dụng giả": Tôi không chắc về điều đó. Đối với một điều, giả nên kiểm tra tất cả các điều kiện tiên quyết (là dịch vụ được sử dụng đúng) và nó sẽ trả về một số giá trị giả. Về cơ bản tất cả những gì cần thiết để kiểm tra đơn vị khách hàng. Bạn có thể giải thích thêm về những thông tin mà nhà cung cấp đang thiếu để làm tốt điều này?
Robert Jack Will

the mock should check all the preconditions: tại sao mock cần kiểm tra xem lib thực sự có kiểm tra này không. Nếu bạn có một bài kiểm tra tích hợp với lib thực sự, các bài kiểm tra này sẽ dẫn bạn đến vấn đề.
k3b

k3b: chúng tôi muốn tìm lỗi càng sớm càng tốt và kiểm tra tích hợp có thể muộn hơn nhiều. Đây chính xác là vấn đề mà chúng tôi đã có. Chà, chúng tôi đã làm việc để cải thiện quy trình để các thử nghiệm tích hợp có thể xảy ra sớm hơn và thường xuyên hơn, nhưng các thử nghiệm đơn vị sẽ tìm ra càng nhiều lỗi càng tốt.
Robert Jack Will
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.