Nói theo cách hàng ngày, thực tế, tôi nghĩ rằng nó hoàn toàn phụ thuộc vào bối cảnh .
Trong một nhóm lớn, làm việc theo tiêu chuẩn cao / rất cao (nghĩ rằng ngân hàng, quân sự, quy mô lớn, ngân sách cao hoặc hệ thống quan trọng trong kinh doanh) thì tôi nghĩ rõ ràng "gỡ lỗi" phải là "kết quả của thử nghiệm" , và chúng rõ ràng những điều rất khác nhau . Thử nghiệm lý tưởng dẫn đến gỡ lỗi (trong môi trường dàn dựng) và trong sản xuất, chúng ta cần gần bằng không.
Kiểm tra có phạm vi rộng, thường xuyên và rất chính thức - trong khi gỡ lỗi là một quá trình cụ thể đôi khi xảy ra khi cần khắc phục một lỗi cụ thể - điều này không rõ ràng và cần phải điều tra sâu hơn về hoạt động và kết quả đầu ra của hệ thống.
Ở đây trong tâm trí tôi kiểm tra là một cái gì đó thiết yếu, trong khi gỡ lỗi là một công cụ cụ thể chỉ cần thiết khi độ phân giải cho một lỗi là mờ đục.
Tôi hoàn toàn hiểu tiện ích rõ ràng trong TDD cho các nhóm và hệ thống lớn hơn là không thể đủ khả năng để trở thành "lỗi". Nó cũng rõ ràng rất có ý nghĩa đối với các hệ thống phức tạp (thường là "back-end") hoặc nếu có tỷ lệ phức tạp cao trong mã so với đầu ra. Sau đó, "thử nghiệm" có một cơ hội thực tế để thông báo khi nào và tại sao thất bại xảy ra. Các hệ thống thực hiện nhiều công việc phức tạp và hoặc dẫn đến kết quả đầu ra có thể đo lường rõ ràng thường dễ kiểm tra và do đó kiểm tra khác với gỡ lỗi. Trong các trường hợp này, kiểm tra ngụ ý mạnh mẽ một phương pháp dựa trên thủ tục, chính thức xác nhận hoặc không xác nhận sự phù hợp của kỳ vọng và sản lượng thực tế. Kiểm tra xảy ra mọi lúc, và đôi khi thông báo cho chúng tôi về nhu cầu gỡ lỗi.
Sẽ thật đáng yêu nếu đây là một sự thật có mặt ở khắp nơi, tôi sẽ thích nó nếu chu kỳ dev của tôi được phân định bởi đầu ra nhị phân được xác định rõ ràng (đỏ, xanh lục) nhưng ...
Trong trường hợp của tôi (được thừa nhận cụ thể - hoạt động solo 98% trên các hệ thống quản trị doanh nghiệp tập trung vào dữ liệu cỡ nhỏ, được tài trợ dưới mức trung bình) Tôi thực sự không thể thấy TDD có thể giúp tôi như thế nào. Hay đúng hơn là "gỡ lỗi" và "thử nghiệm" hầu như giống nhau.
Chủ yếu mặc dù việc sử dụng thuật ngữ "thử nghiệm" ngụ ý / liên quan chặt chẽ đến phương pháp luận của TDD.
Tôi biết đây là một người hoàn toàn, hoàn toàn không theo chủ nghĩa Zeitge "trốn tránh người không tin, trốn tránh, trốn tránh", điều đáng khinh bỉ không đáng nói. Nhưng nghĩ về bối cảnh của tôi, với một chiếc mũ thực tế, tôi thậm chí không mơ hồ, trong trí tưởng tượng điên rồ nhất của tôi, xem TDD có thể giúp tôi mang lại nhiều giá trị như thế nào cho khách hàng của mình.
Hay đúng hơn, tôi hoàn toàn không đồng ý với giả định chung rằng "thử nghiệm" là một quy trình dựa trên mã chính thức.
Phản đối cơ bản của tôi (áp dụng trong ngữ cảnh * cụ thể *) của tôi là ...
Nếu tôi không thể viết mã hoạt động một cách đáng tin cậy - thì làm thế quái nào tôi có thể viết mã hoạt động đáng tin cậy để kiểm tra có lẽ là mã tiêu chuẩn phụ.
Đối với tôi, tôi chưa bao giờ thấy bất kỳ ví dụ nào cũng như lập luận rằng (trong ngữ cảnh cụ thể của tôi) đã khiến tôi cảm thấy đủ để thậm chí bận tâm suy nghĩ về việc viết một bài kiểm tra , tôi có thể viết một số mã kiểm tra đáng kinh ngạc ngay bây giờ, có thể "kho lưu trữ của tôi có trả về Người dùng không thực thể có Tên == X, khi tôi hỏi chính xác - và chỉ - đó? ", nhưng có lẽ có nhiều tiện ích hơn trong tôi khi viết luồng này, có lẽ là internet-thực sự-chỉ là thuần túy-ngu ngốc-phun ra- rác rưởi tự mãn-hoang dã-dưới-thông tin-sôi sục-lãng phí-ngớ ngẩn, nhưng tôi chỉ cảm thấy cần phải chơi trò bênh vực của quỷ ở đây. (Loại hy vọng ai đó sẽ cho tôi thấy ánh sáng và chuyển đổi tôi, có thể điều này sẽ mang lại cho khách hàng của tôi giá trị tốt hơn cho tiền?).
Đôi khi "gỡ lỗi" có thể giống như "thử nghiệm". Điều này thực sự có nghĩa là trong cuộc sống làm việc hàng ngày của tôi, tôi dành ít nhất một phần ba thời gian để chơi với phiên bản địa phương của hệ thống của mình trong các trình duyệt khác nhau, cố gắng hết sức để thử nhiều thứ khác nhau trong nỗ lực phá vỡ công việc của tôi và sau đó điều tra những lý do tại sao nó thất bại và sửa chúng.
Tôi đồng ý 100% với tiện ích rõ ràng trong câu thần chú TDD "đỏ / xanh / tái cấu trúc", nhưng đối với tôi (làm việc trong ngân sách trung bình thấp, solo RIA đất) tôi thực sự rất thích cho ai đó làm ơn chỉ cho tôi cách tôi có thể có thể , về mặt logic và thực tế nhận được bất kỳ giá trị bổ sung nào từ việc viết nhiều hơn ( giống như mã kiểm tra có khả năng bị lỗi ) so với tôi thực sự tương tác với đầu ra đầy đủ (và về cơ bản) của những nỗ lực của tôi mà chủ yếu liên quan đến tương tác thực sự của con người.
Đối với tôi khi các nhà phát triển nói về "thử nghiệm", nó thường bao hàm TDD.
Tôi cố gắng viết mã như thể có các thử nghiệm, tôi nghĩ rằng tất cả các mô hình / thực tiễn và xu hướng mà tất cả sự phát triển tập trung vào thử nghiệm này đã khuyến khích là tuyệt vời và đẹp đẽ, nhưng đối với tôi, "thử nghiệm" trong thế giới nhỏ bé của tôi không phải là viết nhiều mã hơn thử nghiệm thế giới thực đưa ra nó theo cách tiếp cận thực tế và gần giống như gỡ lỗi, hay đúng hơn là thay đổi tích cực ở đây là "gỡ lỗi", là kết quả trực tiếp của "thử nghiệm" không tự động lấy con người làm trung tâm. Điều này trái ngược với quan điểm được chấp nhận chung về "thử nghiệm" là một cái gì đó tự động và chính thức, và "gỡ lỗi" như một thứ gì đó của con người và đặc biệt hoặc không có cấu trúc.
Nếu mục tiêu thực sự đáng giá tiền / công sức và bạn đang tạo ra các ứng dụng tương tác dựa trên web, thì đầu ra của nỗ lực là các trang web và về cơ bản là cách chúng phản ứng với đầu vào của con người - vì vậy "thử nghiệm" đạt được tốt nhất bằng cách thử nghiệm những trang web đó, thông qua tương tác thực sự của con người. Khi sự tương tác này dẫn đến đầu ra bất ngờ hoặc không mong muốn, thì "gỡ lỗi" xảy ra. Gỡ lỗi cũng liên quan chặt chẽ đến ý tưởng kiểm tra thời gian thực của trạng thái chương trình. Kiểm tra thường liên quan đến tự động hóa mà tôi nghĩ thường là một hiệp hội không may.
Nếu mục tiêu thực sự có giá trị cho nỗ lực và thử nghiệm tự động là hiệu quả và mang lại lợi ích cao, trong khi gỡ lỗi chỉ là đầu ra của thử nghiệm đó hoặc là sự thay thế kém cho thử nghiệm tự động, thì tại sao trang web được truy cập nhiều thứ hai trên thế giới (Facebook ) vì vậy thường bị đánh đố với lỗi rõ ràng (đối với người dùng, nhưng rõ ràng không phải là nhóm thử nghiệm và mã kiểm tra) lỗi?
Có lẽ bởi vì họ đang tập trung vào đèn xanh trấn an và quên sử dụng kết quả đầu ra của công việc?
Có quá nhiều nhà phát triển nghĩ rằng thử nghiệm là thứ bạn làm với mã và gỡ lỗi là thứ bạn thỉnh thoảng làm với IDE vì một biểu tượng chuyển sang màu đỏ và bạn không thể giải quyết được tại sao? Tôi nghĩ rằng những từ này có những đánh giá giá trị đáng tiếc liên quan đến chúng, thường làm lu mờ thực tế thực tế của những gì chúng ta nên tập trung vào để thu hẹp khoảng cách giữa kỳ vọng và đầu ra.