Tích hợp so với kiểm tra đơn vị
Bạn nên giữ các bài kiểm tra đơn vị của bạn và kiểm tra tích hợp của bạn hoàn toàn tách biệt. Kiểm tra đơn vị của bạn nên kiểm tra một điều và một điều duy nhất và hoàn toàn cô lập với phần còn lại của hệ thống của bạn. Một đơn vị được xác định một cách lỏng lẻo nhưng nó thường đi sâu vào một phương thức hoặc một chức năng.
Thật có ý nghĩa khi có các bài kiểm tra cho từng đơn vị để bạn biết các thuật toán của chúng được triển khai chính xác và ngay lập tức bạn biết điều gì đã sai ở đâu, nếu việc triển khai bị sai sót.
Vì bạn kiểm tra cách ly hoàn toàn trong khi kiểm tra đơn vị, bạn sử dụng các đối tượng còn sơ khai và giả để hành xử giống như phần còn lại của ứng dụng. Đây là nơi kiểm tra tích hợp đến. Kiểm tra tất cả các đơn vị cách ly là tuyệt vời nhưng bạn cần phải biết liệu các đơn vị có thực sự làm việc cùng nhau hay không.
Điều này có nghĩa là biết nếu một mô hình thực sự được lưu trữ trong cơ sở dữ liệu hoặc nếu một cảnh báo thực sự được đưa ra sau khi thuật toán X thất bại.
Hướng phát triển thử nghiệm
Lùi lại một bước và nhìn vào Phát triển hướng thử nghiệm (TDD), có một số điều cần tính đến.
- Bạn viết bài kiểm tra đơn vị của bạn trước khi bạn thực sự viết mã khiến nó vượt qua.
- Bạn thực hiện bài kiểm tra, viết mã vừa đủ để thực hiện điều này.
- Bây giờ bài kiểm tra đã qua, đã đến lúc lùi lại một bước. Có bất cứ điều gì để tái cấu trúc với chức năng mới này tại chỗ? Bạn có thể làm điều này một cách an toàn vì mọi thứ được bao phủ bởi các bài kiểm tra.
Tích hợp trước so với Tích hợp trước
Kiểm tra tích hợp phù hợp với chu trình TDD này theo một trong hai cách. Tôi biết những người thích viết chúng trước. Họ gọi thử nghiệm tích hợp là thử nghiệm đầu cuối và xác định thử nghiệm từ đầu đến cuối là thử nghiệm hoàn toàn kiểm tra toàn bộ đường dẫn của một usecase (nghĩ đến việc thiết lập một ứng dụng, khởi động nó, đi đến bộ điều khiển, thực thi nó, kiểm tra kết quả, đầu ra, v.v ...). Sau đó, họ bắt đầu với bài kiểm tra đơn vị đầu tiên của mình, làm cho nó vượt qua, thêm một giây, làm cho nó vượt qua, v.v ... Dần dần ngày càng nhiều phần của bài kiểm tra tích hợp vượt qua cho đến khi tính năng kết thúc.
Phong cách khác là xây dựng một bài kiểm tra đơn vị tính năng bằng bài kiểm tra đơn vị và thêm các bài kiểm tra tích hợp được coi là cần thiết sau đó. Sự khác biệt lớn giữa hai điều này là trong trường hợp kiểm tra tích hợp, trước tiên bạn buộc phải nghĩ đến thiết kế của một ứng dụng. Kiểu này không đồng ý với tiền đề rằng TDD là về thiết kế ứng dụng cũng như về thử nghiệm.
Thực tiễn
Trong công việc của tôi, chúng tôi có tất cả các thử nghiệm của chúng tôi trong cùng một dự án. Có nhiều nhóm khác nhau. Công cụ tích hợp liên tục chạy những gì được đánh dấu là đơn vị kiểm tra đầu tiên. Chỉ khi những người thành công chậm hơn (vì họ thực hiện các yêu cầu thực tế, sử dụng cơ sở dữ liệu thực, v.v.) thì các thử nghiệm tích hợp cũng được thực hiện.
Chúng tôi thường sử dụng một tệp thử nghiệm cho một lớp bằng cách này.
Cách đọc được đề nghị
- Phát triển phần mềm hướng đối tượng, được hướng dẫn bởi các bài kiểm tra Cuốn sách này là một ví dụ cực kỳ hay về phương pháp thử nghiệm tích hợp đầu tiên
- Nghệ thuật kiểm thử đơn vị, với các ví dụ trong dot.net Về kiểm thử đơn vị, với các ví dụ trong dot.net: D Cuốn sách rất hay về các nguyên tắc đằng sau kiểm thử đơn vị.
- Robert C. Martin trên TDD (Bài viết miễn phí): Đừng đọc hai bài báo đầu tiên anh ấy liên kết ở đó.