Đây là một sự khác biệt quan trọng, nhưng thật không may, bạn sẽ không bao giờ tìm thấy thỏa thuận. Vấn đề là hầu hết các nhà phát triển định nghĩa những điều này theo quan điểm riêng của họ. Nó rất giống với cuộc tranh luận về Sao Diêm Vương. (Nếu nó ở gần Mặt trời hơn, nó có phải là một hành tinh không?)
Kiểm tra đơn vị là dễ dàng để xác định. Nó kiểm tra CUT ( Code Under Test ) và không có gì khác. (Chà, càng ít càng tốt.) Điều đó có nghĩa là giả, giả, và đồ đạc.
Ở đầu kia của quang phổ, có nhiều người gọi là thử nghiệm tích hợp hệ thống . Đó là thử nghiệm càng nhiều càng tốt, nhưng vẫn tìm kiếm lỗi trong CUT của riêng bạn.
Nhưng những gì về sự rộng lớn giữa?
- Ví dụ, nếu bạn kiểm tra nhiều hơn một chút so với CUT thì sao? Điều gì sẽ xảy ra nếu bạn bao gồm một hàm Fibonacci, thay vì sử dụng một vật cố mà bạn đã tiêm? Tôi sẽ gọi đó là thử nghiệm chức năng , nhưng thế giới không đồng ý với tôi.
- Điều gì nếu bạn bao gồm
time()
hoặc rand()
? Hoặc nếu bạn gọi http://google.com
? Tôi sẽ gọi thử nghiệm hệ thống đó , nhưng một lần nữa, tôi chỉ có một mình.
Vì sao vấn đề này? Bởi vì các bài kiểm tra hệ thống là không đáng tin cậy. Chúng là cần thiết, nhưng đôi khi chúng sẽ thất bại vì những lý do ngoài tầm kiểm soát của bạn. Mặt khác, các bài kiểm tra chức năng phải luôn vượt qua, không được thất bại ngẫu nhiên; nếu chúng nhanh, chúng có thể được sử dụng ngay từ đầu để sử dụng Phát triển dựa trên thử nghiệm mà không cần viết quá nhiều thử nghiệm cho việc triển khai nội bộ của bạn. Nói cách khác, tôi nghĩ rằng các bài kiểm tra đơn vị có thể rắc rối hơn giá trị của chúng, và tôi có một công ty tốt .
Tôi đặt các bài kiểm tra trên 3 trục, với tất cả các số 0 của chúng khi kiểm tra đơn vị :
- Kiểm tra chức năng: sử dụng mã thực sâu hơn và sâu hơn vào ngăn xếp cuộc gọi của bạn.
- Tích hợp thử nghiệm: ngày càng cao lên gọi stack của bạn; nói cách khác, kiểm tra CUT của bạn bằng cách chạy mã sẽ sử dụng nó.
- Kiểm tra hệ thống: ngày càng có nhiều hoạt động không thể lặp lại (bộ lập lịch O / S, đồng hồ, mạng, v.v. )
Một bài kiểm tra có thể dễ dàng là cả 3, ở các mức độ khác nhau.