Là phương pháp kiểm tra để kiểm tra một chức năng bằng cách kiểm tra một chức năng gọi đó là kiểm tra đơn vị?


11

Nếu chúng ta kiểm tra một hàm B, bằng cách kiểm tra một hàm C gọi hàm B đó, tức là viết chương trình kiểm tra để kiểm tra hàm C gọi hàm B đó, thì phương thức kiểm tra vẫn được gọi là kiểm tra đơn vị, hay cái gì khác?

Khi nào thì nó được ưu tiên kiểm tra gián tiếp trên một hàm gọi hàm đích và khi nào thì nó được ưu tiên để kiểm tra một hàm trực tiếp?

Câu trả lời:


9

Một định nghĩa phổ biến về kiểm tra đơn vị là của ISTQB:

Một bài kiểm tra đơn vị là phần có thể kiểm tra nhỏ nhất của một ứng dụng như các hàm, lớp, thủ tục, giao diện. Kiểm thử đơn vị là một phương pháp theo đó các đơn vị mã nguồn riêng lẻ được kiểm tra để xác định xem chúng có phù hợp để sử dụng không.

Theo định nghĩa này:

  • nếu bạn viết chương trình kiểm tra cho B, thì đó là bài kiểm tra đơn vị (của B).
  • nếu bạn viết chương trình kiểm tra cho C, thì đó là bài kiểm tra đơn vị (của C).

Bây giờ có thể có một sự khác biệt giữa ý định và phạm vi thử nghiệm. Nếu bạn viết chương trình kiểm tra cho B bằng cách sử dụng C, thì đó vẫn là kiểm tra đơn vị của C, bởi vì tất cả những gì bạn có thể làm là cung cấp đầu vào cho C và kiểm tra dựa trên đầu ra nếu B đúng. Chỉ là bạn suy luận rằng B hoạt động vì C hoạt động.

Ngoài ra còn có một định nghĩa về kiểm tra tích hợp :

Thử nghiệm được thực hiện để phát hiện các khiếm khuyết trong các giao diện và trong các tương tác giữa các thành phần hoặc hệ thống tích hợp.

Định nghĩa thông thường của các thành phần phần mềm ngụ ý rằng nó độc lập và có thể tự triển khai. Ở đây, B và C dường như không phải là thành phần độc lập, vì vậy chúng tôi không có kiểm tra tích hợp.


5

Điều này rất nhiều phụ thuộc vào những gì bạn xem xét một đơn vị. Nếu Cđơn giản đến mức việc kiểm tra riêng nó không có ý nghĩa, thì thử nghiệm của bạn là thử nghiệm đơn vị.

Điều quan trọng hơn là đối với bộ thử nghiệm đơn vị của bạn cho một đơn vị cụ thể có độ bao phủ gần 100% dòng và để kiểm tra tất cả các đường dẫn mã dự đoán thực tế.


1

Có, chúng tôi vẫn gọi nó là kiểm tra đơn vị nếu các chức năng gọi các chức năng khác.

Các bài kiểm tra đơn vị nên kiểm tra hành vi công khai của một lớp chứ không phải các triển khai riêng. Theo đề xuất của thử nghiệm này của Google về bài viết về nhà vệ sinh .

Nếu bạn tuân theo các quy tắc của Clean Code thì các chức năng của bạn không được dài hơn 4 dòng mã. Điều này làm cho không thể không kiểm tra một chức năng riêng tư khác với các bài kiểm tra đơn vị của bạn.

Tại sao bạn không nên kiểm tra đơn vị các chức năng riêng tư nhất? Bởi vì tái cấu trúc sẽ buộc bạn tiếp tục cập nhật tất cả các bài kiểm tra đơn vị thực hiện. Điều này sẽ trở nên khó chịu khi bạn có rất nhiều trong số họ, trong khi hành vi công khai không nên thay đổi trong quá trình tái cấu trúc và do đó, bài kiểm tra không cần bất kỳ cập nhật nào. Bạn sẽ có thể kiểm tra tư nhân với cha mẹ công khai của họ. Đôi khi nó có thể đáng để thử nghiệm các tư nhân phức tạp, nhưng tự hỏi liệu họ có nên là một lớp riêng biệt không?

Kiểm tra tích hợp :

Bây giờ nếu hàm là một phần của lớp khác thì nó khác. Sau đó, chúng tôi sẽ gọi nó là thử nghiệm thành phần hoặc thử nghiệm tích hợp. Bạn đang tích hợp nhiều lớp và chạy thử nghiệm với chúng. Chức năng B sẽ phụ thuộc vào Chức năng C. Để có thể kiểm tra đơn vị Chức năng B, bạn có thể sử dụng phép tiêm phụ thuộc để cô lập chức năng mà bạn đang kiểm tra, bây giờ nó sẽ là kiểm tra lại đơn vị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.