Các thử nghiệm đơn vị trong quá trình xem xét mã là một sự thay thế kém cho các thử nghiệm đơn vị trong quá trình phát triển.
Những gì bạn đang đề xuất có rất nhiều ý nghĩa, bằng trực giác. Đánh giá để làm gì? Để kiểm tra xem mã có tốt không. Các xét nghiệm là gì? Để kiểm tra xem mã có tốt không. Vậy tại sao không kết hợp cả hai?
Đây là lý do tại sao.
Mang mã theo thử nghiệm là công việc khó khăn. Viết mã chỉ hoạt động ở một điều mà nó có nghĩa là làm một việc; viết mã có thể được kiểm tra hiệu quả và hiệu quả là một cách khác. Thực tế là mã hiện chạy theo hai kịch bản - "công việc thực tế" và "thử nghiệm" - đòi hỏi tính linh hoạt cao hơn nhiều, đòi hỏi mã đó phải có khả năng tự đứng vững một cách có ý nghĩa.
Viết mã của bạn để nó có thể kiểm tra được là công việc và kỹ năng bổ sung. Tái cấu trúc mã của người khác để kiểm tra, khi nó không được viết với khả năng kiểm tra bắt đầu, có thể là một nhiệm vụ chính.
Bạn đang nhân đôi nỗ lực giữa nhà phát triển và người đánh giá. Có lẽ, nhà phát triển của bạn không đưa mã của mình để xem xét mà không có ít nhất một mức độ tin cậy rằng nó đang hoạt động. Anh ta đã cần phải kiểm tra mã. Bây giờ, có nhiều cấp độ và phạm vi thử nghiệm khác nhau. QA kiểm tra mã sau khi nhà phát triển và người đánh giá. Nhưng bất kỳ phạm vi nào bạn nghĩ là phù hợp cho nhà phát triển và người đánh giá, nhà phát triển sẽ không có ý nghĩa gì khi tìm cách kiểm tra mã đến mức đó một lần , nhưng làm cho các thử nghiệm của anh ta bị vứt bỏ và khó tái tạo, sau đó đưa người đánh giá đến phát triển thử nghiệm một lần nữa, lần này là những người tự động và tái sản xuất. Bạn chỉ cần cả hai đầu tư thời gian để viết các bài kiểm tra giống nhau - một lần kém, một lần tốt.
Bạn đang biến việc xem xét thành một bước dài hơn, tốn nhiều công sức hơn. Nếu kiểm tra là một phần chính của quá trình xem xét, điều gì xảy ra khi một số thử nghiệm thất bại ? Người đánh giá có chịu trách nhiệm cho tất cả các bài kiểm tra đang chạy không, vì vậy cô ấy cũng cần gỡ lỗi mã? Hay là nó sẽ được ping-ponged qua lại, một bài kiểm tra viết, cái kia khiến chúng vượt qua?
Đôi khi bạn có thể viết một loạt các bài kiểm tra hoàn toàn trực giao với nhau, vì vậy bạn không cần phải chơi bóng bàn. Người kiểm tra viết một tá bài kiểm tra, một nửa trong số đó không thành công, nhà phát triển sửa lỗi và tất cả các bài kiểm tra vẫn còn hiệu lực và vượt qua ngay bây giờ. Nhưng ... rất nhiều thời gian, bạn đã gặp phải các lỗi chặn hoặc các lỗi yêu cầu thiết kế lại và thay đổi API hoặc không có gì. Nếu bạn không chịu trách nhiệm vượt qua các bài kiểm tra qua lại giữa người đánh giá và nhà phát triển, thì bạn không thực sự ở giai đoạn đánh giá. Bạn vẫn đang phát triển.
Cần viết bài kiểm tra không khuyến khích xem xét kỹ lưỡng hơn. Về cơ bản, điều đó có nghĩa là bạn càng đi sâu, bạn càng phải viết nhiều bài kiểm tra và có lẽ chúng sẽ là những bài kiểm tra khó cần đi sâu vào hệ thống.
So sánh với nhà phát triển viết các bài kiểm tra, trong đó ưu đãi của anh ta là: nếu tôi không viết các bài kiểm tra quan trọng, người đánh giá sẽ chỉ ra điều đó trong bài đánh giá.
Ngay cả người đánh giá cũng sẽ hiểu rõ hơn về hệ thống nếu cô ấy cần vượt qua các bài kiểm tra kỹ lưỡng về mã , sau đó nếu cô ấy cần tự quyết định khi nào cô ấy có thể ngừng viết bài kiểm tra đào sâu và chỉ cần OK xem xét mã.
Nếu nhà phát triển không viết bài kiểm tra đơn vị, người đánh giá sẽ không. Có nhiều trở ngại trong việc áp dụng thử nghiệm như một thông lệ. Có thể bạn đang chịu quá nhiều áp lực và cơ sở mã của bạn khó có thể được kiểm tra. Có thể bạn không có kinh nghiệm trong kiểm tra và cảm thấy như bạn không đủ khả năng học tập. Có lẽ bạn đã có một kẻ giết người rìu gửi những ghi chú đe dọa cho những người viết bài kiểm tra. Tôi không biết!
Nhưng bất kể nguyên nhân là gì, sẽ an toàn khi đặt cược rằng nó áp dụng như nhau cho người đánh giá và nhà phát triển. Nếu nhóm bị căng thẳng, người đánh giá sẽ không có nhiều thời gian hơn nhà phát triển (nếu có, hãy phân phối lại công việc để mọi người không quá căng thẳng ). Nếu không ai biết cách viết bài kiểm tra đơn vị tốt, người đánh giá có lẽ cũng không (nếu có, cô ấy nên ngồi xuống và dạy cho đồng đội của mình ).
Gợi ý này nghe có vẻ như cố gắng vượt qua vòng lao lý từ đồng nghiệp này sang đồng nghiệp khác. Và tôi chỉ không thấy cách nào để giải quyết tốt, trước hết và trên hết vì tạo ra một tình huống rất khó (và không lành mạnh) để tạo ra một tình huống mà một người là người duy nhất có thể làm xét nghiệm, và một người khác không thể làm bất kỳ thử nghiệm nào cả.
Những gì không làm việc là có các bài kiểm tra bìa xem xét là tốt. Nếu nhà phát triển đã viết mười bài kiểm tra, nhiều khả năng người đánh giá có thể giúp đề xuất mười bài kiểm tra khác, hơn là nếu nhà phát triển không viết bất kỳ bài kiểm tra nào.
Và, nếu thử nghiệm các trường hợp góc là một nhiệm vụ chính, có thể có ý nghĩa để phân phối rộng rãi hơn trên toàn đội. ** Một khi mã có thể kiểm tra được ở vị trí đầu tiên, việc viết nhiều bài kiểm tra trở nên dễ dàng hơn nhiều. **
Đánh giá là một thời gian tuyệt vời để phát hiện các trường hợp góc. Và, nếu người đánh giá có thể nhảy vào và viết một bài kiểm tra cho các trường hợp góc mà cô ấy tìm thấy, thì này - tốt hơn hết! Nhưng nói chung, giả sử rằng người đánh giá có thể viết các bài kiểm tra trong đó nhà phát triển không có vẻ là một ý tưởng rất kém.