Bạn không đề cập đến công cụ kiểm tra của bạn. Nhiều chức năng "kết hợp" cho phép bạn tổng hợp kết quả của nhiều lần chạy hoặc bộ. Nếu bạn muốn một số liệu bảo hiểm tổng hợp, hãy khám phá tính năng kết hợp trong công cụ bảo hiểm của bạn.
Bây giờ, chúng ta có thể nói về con voi trong phòng không?
Không có muỗng. Và không có "tổng tỷ lệ bao phủ." Ít nhất, không đơn giản.
Tỷ lệ bao phủ là một số liệu dễ hiểu được trình bày để giúp hiểu phạm vi, độ sâu và phạm vi của các bộ thử nghiệm. Nhưng giống như bất kỳ điểm chuẩn đơn giản nào, rất dễ trở thành mục tiêu cố định trên giá trị này như một loại bùa phép thuật "thử nghiệm hoàn chỉnh".
Giả sử bạn đã đạt được vinh quang về "phạm vi kiểm tra 100%." Yay! Nhưng điều đó có nghĩa gì? 100% dòng mã được kiểm tra, phải không? Vậy thì dòng này thì sao?
launch_missile = launch_authorized and launch_cmd_given else previous_launch_status
"Bao phủ" dòng đó có nghĩa là một cái gì đó - nhưng không phải là toàn bộ, bởi vì có nhiều điều kiện khác nhau True
hoặc False
với một số xác suất, nhưng không chắc là bạn đã thử nghiệm tất cả các kết hợp của các điều kiện đó. Ngay cả khi dòng đó được bảo hiểm hàng chục lần, nếu một trong những điều kiện tương đối không phổ biến, bạn vẫn không thể kiểm tra tất cả các kết quả thực có thể xảy ra trong thực tế. Để làm cho rõ ràng hơn, một ví dụ tổng hợp hơn:
engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003
Bao nhiêu lần bạn sẽ phải bao gồm dòng đó để thực sự kiểm tra toàn diện nó? Bao nhiêu lần bạn sẽ phải bao gồm nó để kiểm tra nó kết hợp với tất cả các biến khác trong chương trình (với xác suất của riêng chúng, có thể tương tự hiếm)?
Tôi không nói rằng các số liệu bảo hiểm là vô ích. Họ thực sự tuyệt vời . Họ tập trung vào một trong những vấn đề chính: Hệ thống phần mềm của tôi được thử nghiệm rộng rãi như thế nào? Họ giúp chuyển từ "chúng tôi có một số bài kiểm tra" sang "chúng tôi đã kiểm tra kỹ lưỡng".
Nhưng trong khi bạn đang làm việc với "điểm số kết hợp", thì thực tế là điểm số của bạn thường sẽ dành cho "phạm vi bảo hiểm tuyên bố" thay vì "điều kiện", "vị ngữ" hoặc "đường dẫn" . Vì vậy, bất kể số điểm tổng hợp nào của bạn cung cấp cho bạn, không chắc là nó cung cấp cho bạn một bức tranh chân thực về bao nhiêu trạng thái tiềm năng của chương trình và các kết hợp trạng thái đang được kiểm tra. Trong khi bạn đang làm việc để tăng tỷ lệ phần trăm bảo hiểm của mình, hãy xem xét việc đo mức độ bao phủ của vị ngữ. Nó sẽ cho bạn một cái nhìn thực tế hơn - và gần như bất biến, một cái nhìn tỉnh táo hơn - về tính mở rộng thử nghiệm.