2009-03-02 37 views
33

Khi thử nghiệm đơn vị có vẻ hiệu quả đối với các dự án lớn hơn nơi API cần phải là sức mạnh công nghiệp (ví dụ: phát triển API khung .Net, v.v.), có vẻ như quá mức trên nhỏ hơn dự án.Khi kiểm thử đơn vị so với thử nghiệm thủ công

Khi là phương pháp TDD tự động là cách tốt nhất, và khi nó có thể là tốt hơn để chỉ cần sử dụng các kỹ thuật kiểm tra thủ công, đăng nhập các lỗi, phân loại, sửa chữa họ, vv

Một vấn đề khác - khi tôi là một thử nghiệm tại Microsoft, chúng tôi nhấn mạnh rằng có một giá trị trong việc có các nhà phát triển và người thử nghiệm là những người khác nhau, và sự căng thẳng giữa hai nhóm này có thể giúp tạo ra một sản phẩm tuyệt vời cuối cùng. TDD có thể phá vỡ ý tưởng này và tạo ra một tình huống mà một nhà phát triển có thể không phải là người thích hợp để tìm ra những sai lầm của chính họ? Nó có thể được tự động, nhưng có vẻ như có rất nhiều cách để viết các bài kiểm tra, và rằng nó là vấn đề cho dù một tập hợp các xét nghiệm sẽ "chứng minh" rằng chất lượng là chấp nhận được.

+0

Kiểm tra đơn vị có thể cung cấp một dạng tài liệu có thể rất hữu ích nếu ai đó không phải là tác giả của mã phải thực hiện thay đổi để sửa lỗi hoặc đưa vào tính năng/nâng cao mới. Các nhà phát triển cần phải kiểm tra mã của họ, nhưng những thử nghiệm đó không nên là mã duy nhất, IMO. –

Trả lời

60

Hiệu quả của TDD độc lập với quy mô dự án. Tôi sẽ thực hành the three laws of TDD ngay cả trên việc thực hiện lập trình nhỏ nhất. Các bài kiểm tra không mất nhiều thời gian để viết và tiết kiệm rất nhiều thời gian gỡ lỗi. Họ cũng cho phép tôi tái cấu trúc mã mà không sợ phá vỡ bất cứ thứ gì.

TDD là kỷ luật tương tự như kỷ luật của sổ sách kế toán kép được thực hiện bởi kế toán viên. Nó ngăn ngừa lỗi trong-the-nhỏ. Nhân viên kế toán sẽ nhập mọi giao dịch hai lần, một lần dưới dạng tín dụng và một lần là ghi nợ. Nếu không có lỗi đơn giản nào được thực hiện, thì bảng cân đối sẽ tổng bằng không. Đó là số không là một kiểm tra tại chỗ đơn giản mà ngăn chặn các giám đốc điều hành từ đi tù. Bởi các lập trình viên cùng một mã thông báo kiểm tra đơn vị trước mã của họ như là một kiểm tra tại chỗ đơn giản. Trong thực tế, họ viết mỗi bit mã hai lần; một lần như là một thử nghiệm, và một lần như mã sản xuất. Nếu các kiểm tra vượt qua, hai bit mã được thỏa thuận. Không thực hành bảo vệ chống lại các lỗi lớn hơn và phức tạp hơn, nhưng cả hai thực hành đều có giá trị.

Thực hành TDD không thực sự là kỹ thuật thử nghiệm, đó là một thực tiễn phát triển. Từ "test" trong TDD ít nhiều là trùng hợp ngẫu nhiên.Như vậy, TDD không phải là một sự thay thế cho các thực hành thử nghiệm tốt và những người thử nghiệm QA tốt. Thật vậy, nó là một ý tưởng rất tốt để có kinh nghiệm xét nghiệm viết kế hoạch kiểm tra QA độc lập (và thường là trước) các lập trình viên viết mã (và các bài kiểm tra đơn vị của họ).

Đó là sở thích của tôi (thực sự là niềm đam mê của tôi) rằng các thử nghiệm QA độc lập này cũng được tự động sử dụng công cụ như FitNesse, Selenium hoặc Watir. Các bài kiểm tra nên dễ đọc bởi những người kinh doanh, dễ thực thi và hoàn toàn rõ ràng. Bạn sẽ có thể chạy chúng tại một thời điểm thông báo, thường là nhiều lần mỗi ngày.

Mọi hệ thống cũng cần được kiểm tra thủ công. Tuy nhiên, thử nghiệm thủ công không bao giờ nên được tiết lộ. Một thử nghiệm có thể được viết kịch bản phải được tự động hóa. Bạn chỉ muốn đưa con người vào vòng lặp khi cần có sự phán xét của con người. Vì vậy con người nên làm exploratory testing, không mù quáng theo kế hoạch kiểm tra.

Vì vậy, câu trả lời ngắn cho câu hỏi về thời điểm kiểm tra đơn vị so với kiểm tra thủ công là không có "so với". Bạn nên viết các bài kiểm tra đơn vị tự động trước tiên cho phần lớn mã bạn viết. Bạn nên có các bài kiểm tra chấp nhận QA tự động được viết bởi người kiểm tra. Và bạn cũng nên thực hành thử nghiệm thủ công thăm dò chiến lược.

+0

Rất vui được gặp bạn ở đây * Kính gửi Bác Bob * ... + 1 cho các ví dụ độc đáo của bạn ... như tính năng ghi sổ kép tại đây. Cảm ơn. – Snesh

3

TDD là cách tiếp cận tốt nhất bất cứ khi nào có thể thực hiện được. Kiểm tra TDD là tự động, có thể định lượng thông qua mã vùng và phương pháp đáng tin cậy để đảm bảo chất lượng mã.

Kiểm tra thủ công yêu cầu một lượng thời gian rất lớn (so với TDD) và bị lỗi do con người gây ra.

Không có gì nói rằng TDD có nghĩa là chỉ các nhà phát triển thử nghiệm. Nhà phát triển nên chịu trách nhiệm mã hóa tỷ lệ phần trăm của khung kiểm tra. QA phải chịu trách nhiệm cho một phần lớn hơn nhiều. Các nhà phát triển kiểm tra API theo cách họ muốn kiểm tra chúng. QA kiểm tra API theo những cách mà tôi thực sự sẽ không bao giờ nghĩ đến và làm những điều đó, trong khi dường như điên rồ, thực sự được thực hiện bởi khách hàng.

7

Kiểm tra đơn vị không có nghĩa là thay thế các thử nghiệm chức năng/thành phần. Các bài kiểm tra đơn vị thực sự tập trung, vì vậy chúng sẽ không đánh cơ sở dữ liệu, các dịch vụ bên ngoài, vv Các bài kiểm tra tích hợp làm điều đó, nhưng bạn có thể thực sự tập trung vào chúng. Điểm mấu chốt, là trên câu hỏi cụ thể, câu trả lời là họ không thay thế các bài kiểm tra thủ công đó. Giờ đây, các thử nghiệm chức năng tự động + kiểm tra thành phần tự động chắc chắn có thể thay thế các thử nghiệm thủ công. Nó sẽ phụ thuộc rất nhiều vào dự án và phương pháp tiếp cận nó trên người sẽ thực sự làm những việc đó.

Cập nhật 1: Lưu ý rằng nếu nhà phát triển đang tạo thử nghiệm chức năng tự động, bạn vẫn muốn xem xét những người có phạm vi phù hợp, bổ sung cho phù hợp. Một số nhà phát triển tạo tự động kiểm tra chức năng với "đơn vị" khuôn khổ thử nghiệm của họ, bởi vì họ vẫn phải làm các xét nghiệm khói không phụ thuộc vào đơn vị xét nghiệm, và nó thực sự giúp có những tự động :)

Cập nhật 2: Đơn vị kiểm tra isn' t quá mức cần thiết cho một dự án nhỏ, cũng không tự động kiểm tra khói hoặc sử dụng TDD. Điều gì là quá mức cần thiết phải có đội ngũ làm bất kỳ điều đó cho lần đầu tiên của họ về dự án nhỏ. Làm bất kỳ một trong số đó có đường cong học tập liên quan (đặc biệt là kiểm tra đơn vị hoặc TDD), và không phải lúc nào cũng được thực hiện ngay lúc đầu. Bạn cũng muốn một người nào đó đã làm việc đó trong một thời gian, để giúp tránh những cạm bẫy và nhận được một số thách thức mã hóa không rõ ràng khi bắt đầu. Vấn đề là nó không phải là phổ biến cho các đội để có những kỹ năng này.

3

tôi sẽ nói rằng đơn vị xét nghiệm là một trợ giúp các lập trình viên để trả lời câu hỏi:

Liệu mã này làm những gì tôi nghĩ rằng nó không?

Đây là câu hỏi mà họ cần phải tự hỏi bản thân rất nhiều. Các lập trình viên muốn tự động hóa bất cứ điều gì họ làm rất nhiều nơi họ có thể.

Nhóm nghiên cứu thử nghiệm riêng biệt cần phải trả lời một câu hỏi khác: -

Liệu hệ thống này làm những gì tôi (và người dùng cuối) mong đợi nó để làm gì? Hay nó làm tôi ngạc nhiên?

Có một loạt lỗi nghiêm trọng liên quan đến người lập trình hoặc nhà thiết kế có ý tưởng khác nhau về những gì chính xác mà các bài kiểm tra đơn vị sẽ không bao giờ đón.

+0

Đây là cách chúng tôi làm việc trong phần mềm quan trọng về an toàn. Các lập trình viên chứng minh mã của họ là an toàn trong tất cả các tiểu bang/chi nhánh. Người thử nghiệm (mức hệ thống) độc lập kiểm tra việc giải thích của họ về những gì thường là một yêu cầu chức năng cao cấp. Thật dễ dàng để viết mã hoàn hảo mà không thực sự đáp ứng yêu cầu của khách hàng. – MattP

1

Kiểm tra đơn vị chỉ có thể đi xa (như tất cả các loại thử nghiệm khác). Tôi nhìn vào thử nghiệm như một loại "sàng" quá trình. Mỗi loại thử nghiệm khác nhau giống như một cái sàng mà bạn đang đặt dưới đầu ra của quá trình phát triển của bạn. Những thứ xuất hiện (hy vọng) chủ yếu là các tính năng cho sản phẩm phần mềm của bạn, nhưng nó cũng chứa các lỗi. Các lỗi có nhiều hình dạng và kích cỡ khác nhau.

Một số lỗi khá dễ tìm bởi vì chúng lớn hoặc bị mắc kẹt về cơ bản bất kỳ loại rây nào. Mặt khác, một số lỗi trơn tru và sáng bóng, hoặc không có nhiều móc ở hai bên để chúng có thể trượt qua một loại rây khá dễ dàng. Một loại rây khác nhau có thể có các lỗ hình dạng hoặc kích thước khác nhau để nó có thể bắt được nhiều loại lỗi khác nhau. Bạn càng có nhiều sàng, càng có nhiều lỗi bạn sẽ bắt được.

Rõ ràng là bạn càng có nhiều sàng hơn, các tính năng cũng sẽ chậm hơn, vì vậy bạn sẽ muốn tìm một phương tiện vui vẻ mà bạn không dành quá nhiều thời gian để kiểm tra bạn không bao giờ được phát hành bất kỳ phần mềm nào.

1

Điểm tốt nhất (IMO) của các thử nghiệm đơn vị tự động là khi bạn thay đổi (cải thiện, cấu trúc lại) mã hiện có, thật dễ dàng để kiểm tra rằng bạn không phá vỡ nó. Nó sẽ là tẻ nhạt để kiểm tra tất cả mọi thứ bằng tay một lần nữa và một lần nữa.

1

Mọi ứng dụng đều được kiểm tra.

Một số ứng dụng được kiểm tra dưới dạng mã của tôi biên dịch và mã có vẻ như chức năng.

Một số ứng dụng được kiểm tra với Kiểm tra đơn vị. Một số nhà phát triển là tôn giáo về bài kiểm tra đơn vị, TDD và phạm vi bảo hiểm mã cho một lỗi. Giống như tất cả mọi thứ, quá nhiều là thường xuyên hơn không xấu.

Một số ứng dụng đủ may mắn để được kiểm tra qua đội QA. Một số nhóm QA tự động kiểm tra của họ, những người khác viết các trường hợp kiểm tra và kiểm tra thủ công.

Michael Feathers, người viết: Working Effectively with Legacy Code, đã viết mã không được bao gồm trong các thử nghiệm là mã kế thừa. Cho đến khi bạn đã trải nghiệm The Big Ball of Mud, tôi không nghĩ rằng bất kỳ nhà phát triển nào thực sự hiểu được lợi ích của Kiến trúc ứng dụng tốt và một bộ Bài kiểm tra đơn vị được viết tốt.

Thử nghiệm những người khác nhau là một ý tưởng tuyệt vời. Càng nhiều người có thể xem xét một ứng dụng thì càng có nhiều khả năng tất cả các kịch bản sẽ được bảo hiểm, bao gồm cả những tình huống bạn không có ý định xảy ra.

TDD đã nhận được một đoạn rap xấu gần đây.Khi tôi nghĩ về TDD Tôi nghĩ các nhà phát triển có kỹ năng viết một cách tỉ mỉ các bài kiểm tra trước khi họ viết bài thực hiện. Trong khi điều này là đúng, những gì đã bị bỏ qua là bằng cách viết các bài kiểm tra, (đầu tiên hoặc ngay sau đó) các nhà phát triển trải nghiệm các phương pháp/lớp trong những đôi giày của người tiêu dùng. Thiết kế sai sót và thiếu sót là ngay lập tức rõ ràng.

Tôi cho rằng kích thước của dự án không liên quan. Điều quan trọng là là tuổi thọ của dự án. Dự án càng dài thì khả năng nhà phát triển khác với người viết nó sẽ hoạt động nhiều hơn. Các bài kiểm tra đơn vị là tài liệu hướng tới sự mong đợi của ứng dụng - Hướng dẫn về các loại.

0

thử nghiệm đơn vị có vẻ hiệu quả cho các dự án lớn hơn nơi API cần phải là cường độ công nghiệp, có vẻ như có thể quá mức đối với các dự án nhỏ hơn.

Đúng là các bài kiểm tra đơn vị của API di chuyển dễ vỡ, nhưng kiểm tra đơn vị cũng có hiệu quả đối với các dự án ít API như ứng dụng. Đơn vị kiểm tra có nghĩa là để kiểm tra các đơn vị một dự án được thực hiện với. Nó cho phép đảm bảo mọi đơn vị hoạt động như mong đợi. Đây là một mạng lưới an toàn thực sự khi sửa đổi - tái cấu trúc - mã.

Theo như kích thước của dự án là có liên quan, Đúng là viết đơn vị kiểm tra cho một dự án nhỏ có thể là quá mức cần thiết. Và ở đây, tôi sẽ xác định dự án nhỏ như một chương trình nhỏ, có thể được kiểm tra thủ công, nhưng rất dễ dàng và nhanh chóng, trong không quá vài giây. Ngoài ra một dự án nhỏ có thể phát triển, trong trường hợp đó có thể thuận lợi để có các bài kiểm tra đơn vị trong tầm tay.

có giá trị trong việc các nhà phát triển và người thử nghiệm là những người khác nhau và sự căng thẳng giữa hai nhóm này có thể giúp tạo ra một sản phẩm tuyệt vời cuối cùng. Bất kể quá trình phát triển, kiểm thử đơn vị không có nghĩa là thay thế bất kỳ giai đoạn kiểm tra nào khác, nhưng để bổ sung cho chúng với các thử nghiệm ở cấp độ phát triển, để các nhà phát triển có thể nhận được phản hồi rất sớm, mà không cần phải chờ đợi chính thức xây dựng và kiểm tra chính thức. Với thử nghiệm đơn vị, nhóm phát triển cung cấp mã hoạt động, hạ lưu, không phải mã không có lỗi, nhưng mã có thể được thử nghiệm bởi (các) nhóm thử nghiệm.

Để tổng hợp, tôi kiểm tra thủ công khi nó thực sự rất dễ dàng hoặc khi viết các bài kiểm tra đơn vị quá phức tạp và tôi không nhắm đến mức độ phù hợp 100%.

1

Câu hỏi của bạn dường như có nhiều hơn về thử nghiệm tự động so với thử nghiệm thủ công. Thử nghiệm đơn vị là một dạng thử nghiệm tự động nhưng là một dạng rất cụ thể.

Nhận xét của bạn về việc có những người thử nghiệm và nhà phát triển riêng biệt ngay trên nhãn hiệu. Nhưng điều đó không có nghĩa là nhà phát triển không nên thực hiện một số hình thức xác minh.

Kiểm tra đơn vị là cách để nhà phát triển nhận phản hồi nhanh về những gì họ đang làm. Họ viết các bài kiểm tra để chạy nhanh các đơn vị mã nhỏ và xác minh tính chính xác của chúng. Nó không thực sự thử nghiệm trong ý nghĩa bạn dường như sử dụng kiểm tra từ giống như một cú pháp kiểm tra bởi một trình biên dịch không phải là thử nghiệm. Thử nghiệm đơn vị là một kỹ thuật phát triển. Mã được viết bằng kỹ thuật này có lẽ có chất lượng cao hơn mã được viết mà không cần phải kiểm soát chất lượng.

Câu hỏi về kiểm tra tự động và kiểm tra thủ công cho phòng kiểm tra dễ dàng hơn để trả lời. Bất cứ khi nào dự án đủ lớn để biện minh cho việc đầu tư viết các bài kiểm tra tự động, bạn nên sử dụng các bài kiểm tra tự động. Khi bạn đã có rất nhiều bài kiểm tra một lần nhỏ, bạn nên thực hiện chúng theo cách thủ công.

2

Theo nghiên cứu của các dự án khác nhau (1), kiểm tra đơn vị tìm thấy 15..50% lỗi (trung bình 30%). Điều này không làm cho chúng trở thành công cụ tìm lỗi tồi tệ nhất trong kho vũ khí của bạn, nhưng cũng không phải là một viên đạn bạc. Có không có dấu đầu dòng bạc, bất kỳ chiến lược QA nào tốt đều có nhiều kỹ thuật.


Thử nghiệm tự động chạy thường xuyên hơn, do đó, nó sẽ tìm ra lỗi sớm hơn và giảm tổng chi phí vô cùng - đó là giá trị thực của tự động hóa thử nghiệm.

Đầu tư tài nguyên của bạn một cách khôn ngoan và chọn trái cây treo thấp trước.
Tôi thấy rằng các bài kiểm tra tự động dễ nhất để viết và duy trì cho các đơn vị nhỏ của các hàm và lớp được phân lập. Chức năng người dùng cuối dễ dàng được kiểm tra thủ công hơn - và một người thử nghiệm tốt sẽ tìm thấy nhiều điều kỳ quặc ngoài các bài kiểm tra bắt buộc. Đừng thiết lập chúng với nhau, bạn cần cả hai.


Dev vs Xét nghiệm phát triển có tiếng xấu ở thử nghiệm mã riêng của họ: lý do là tâm lý, kỹ thuật và kéo dài không tiết kiệm nhất - thử nghiệm thường rẻ hơn so với các nhà phát triển. Nhưng các nhà phát triển có thể làm phần của họ, và làm cho thử nghiệm dễ dàng hơn. TDD làm cho thử nghiệm một phần nội tại của xây dựng chương trình, không chỉ là một suy nghĩ, đó là giá trị thực sự của TDD.


Một điểm thú vị khác về kiểm tra: Không có điểm nào trong phạm vi phủ sóng 100%. Theo thống kê, các lỗi theo quy tắc 80:20 - phần lớn các lỗi được tìm thấy trong các phần nhỏ của mã. Some studies cho thấy rằng điều này thậm chí còn sắc nét hơn - và các xét nghiệm nên tập trung vào những nơi có lỗi phát sinh.


(1) Năng suất lập trình Jones 1986 u.a., được trích dẫn từ Mã hoàn chỉnh, thứ 2. ed. Nhưng như những người khác đã nói, đơn vị kiểm tra chỉ là một phần của các bài kiểm tra, tích hợp, hồi quy và kiểm tra hệ thống có thể được - tại leat một phần - tự động là tốt.

Giải thích kết quả của tôi: "nhiều mắt" có phát hiện khiếm khuyết tốt nhất, nhưng chỉ khi bạn có một số quy trình chính thức khiến chúng trông thực sự.

+0

Liên kết nghiên cứu là liên kết đã chết. –

+0

@AdamParkin: Được thay thế bằng tìm kiếm google của tiêu đề chung. Hãy xem thời lượng này kéo dài bao lâu (không thể nhanh chóng tìm thấy nguồn đáng tin cậy trích dẫn nguồn dữ liệu thực tế) – peterchen

0

Chỉ cần làm rõ một cái gì đó nhiều người dường như bỏ lỡ:

TDD, theo nghĩa của "viết không kiểm tra, viết code để thực hiện thử nghiệm vượt qua, cấu trúc lại, lặp lại" thường nhất hiệu quả và hữu ích là khi bạn viết đơn vị kiểm tra.

Bạn viết một bài kiểm tra đơn vị chỉ quanh lớp/chức năng/đơn vị mã bạn đang làm việc, sử dụng mocks hoặc sơ khai để trừu tượng hóa phần còn lại của hệ thống.

"Automated" thử nghiệm thường dùng để tích hợp mức độ chấp nhận/kiểm tra cao/functional - bạn thể làm TDD xung quanh mức độ thử nghiệm, và nó thường là lựa chọn duy nhất cho mã nặng nề ui-driven, nhưng bạn nên biết rằng loại thử nghiệm này dễ vỡ hơn, khó viết test-trước hơn, và không thay thế cho thử nghiệm đơn vị.

1

Đã ở cả hai bên, QA và phát triển, tôi sẽ xác nhận rằng ai đó phải luôn kiểm tra thủ công mã của bạn. Ngay cả khi bạn đang sử dụng TDD, có rất nhiều điều mà bạn là một nhà phát triển có thể không có khả năng bao phủ với các bài kiểm tra đơn vị, hoặc có thể không nghĩ về thử nghiệm. Điều này đặc biệt bao gồm khả năng sử dụng và tính thẩm mỹ. Thẩm mỹ bao gồm chính tả, ngữ pháp và định dạng đầu ra thích hợp.

cuộc sống Bất dụ 1:

Một nhà phát triển đã tạo ra một báo cáo chúng tôi hiển thị trên mạng nội bộ của chúng tôi cho các nhà quản lý. Có nhiều công thức, tất cả các công cụ mà nhà phát triển đã kiểm tra trước khi mã đến QA. Chúng tôi đã xác minh rằng các công thức đã thực sự tạo ra kết quả chính xác. Những gì chúng tôi yêu cầu phát triển để sửa chữa, gần như ngay lập tức, là một thực tế là các con số được hiển thị màu hồng trên nền màu tím.

cuộc sống Bất dụ 2:

tôi viết mã trong thời gian rảnh rỗi của tôi, sử dụng TDD. Tôi thích nghĩ rằng tôi kiểm tra kỹ lưỡng.Một ngày nọ, vợ tôi đi ngang qua khi tôi nhắn tin, đọc nó, và nhanh chóng hỏi, "Thông điệp đó có nghĩa là gì?" Tôi nghĩ rằng thông điệp khá rõ ràng, nhưng khi tôi đọc lại nó, tôi nhận ra nó đang nói về các nút cha và con trong một điều khiển cây, và có lẽ sẽ không có ý nghĩa với người dùng trung bình. Tôi đã viết lại tin nhắn. Trong trường hợp này, đó là một vấn đề khả năng sử dụng, mà không bị bắt bởi thử nghiệm của riêng tôi.

1

Tôi tin rằng có thể kết hợp chuyên môn của nhân viên QA/thử nghiệm (xác định tiêu chí kiểm tra/chấp nhận), với khái niệm TDD về cách sử dụng API do nhà phát triển sở hữu (ngược lại với GUI hoặc giao diện HTTP/nhắn tin) một ứng dụng đang được kiểm tra.

Vẫn còn quan trọng để có nhân viên QA độc lập, nhưng chúng tôi không cần đội kiểm tra thủ công lớn nữa với các công cụ kiểm tra hiện đại như FitNesse, Selenium và Twist.

0

TDD mang lại cho tôi, với tư cách là nhà phát triển, tự tin rằng thay đổi tôi thực hiện đối với mã có hậu quả dự định và CHỈ những hậu quả dự định, và do đó ẩn dụ của TDD là "mạng lưới an toàn" hữu ích; thay đổi bất kỳ mã nào trong một hệ thống mà không có nó và bạn có thể không có ý tưởng gì khác bạn có thể đã bị hỏng.

Sự căng thẳng về kỹ thuật giữa nhà phát triển và người thử nghiệm thực sự là tin xấu; các nhà phát triển nuôi dưỡng "tốt, những người thử nghiệm được trả tiền để tìm ra lỗi" suy nghĩ (dẫn đến lười biếng) và người thử nghiệm - cảm thấy như thể họ không được nhìn thấy để làm công việc của họ nếu họ không tìm thấy lỗi nào - ném lên như nhiều vấn đề tầm thường như họ có thể. Đây là một sự lãng phí tổng thời gian của mọi người.

Phát triển phần mềm tốt nhất, trong kinh nghiệm khiêm tốn của tôi, là nơi thử nghiệm cũng là nhà phát triển và các bài kiểm tra và mã đơn vị được viết cùng nhau như một phần của bài tập lập trình đôi. Điều này ngay lập tức đặt hai người trên cùng một khía cạnh của vấn đề, làm việc cùng nhau hướng tới cùng một mục tiêu, hơn là đặt họ đối lập với nhau.

0

Kiểm tra đơn vị không giống như kiểm tra chức năng. Và như xa như tự động hóa là có liên quan, nó thường nên được xem xét khi chu kỳ kiểm tra sẽ được lặp đi lặp lại nhiều hơn 2 hoặc 3 lần ... Nó được ưa thích cho thử nghiệm hồi quy. Nếu dự án nhỏ hoặc nó sẽ không có những thay đổi hoặc cập nhật thường xuyên thì việc kiểm tra thủ công là một lựa chọn tốt hơn và ít tốn kém hơn. Trong trường hợp này, tự động hóa sẽ chứng minh là tốn kém hơn với việc viết và bảo trì kịch bản.

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