Vấn đề này phát sinh từ kiểm thử phần mềm. Vấn đề là một chút khó khăn để giải thích. Trước tiên tôi sẽ đưa ra một ví dụ, sau đó cố gắng khái quát hóa vấn đề.
Có 10 mục cần kiểm tra, từ A đến J và một công cụ kiểm tra có thể kiểm tra 3 mục cùng một lúc. Thứ tự của các mục trong công cụ kiểm tra không quan trọng. Tất nhiên, để thử nghiệm toàn diện, chúng tôi cần 10 C 3 kết hợp các mặt hàng.
Vấn đề phức tạp hơn. Có một điều kiện bổ sung rằng một khi một cặp vật phẩm đã được thử nghiệm cùng nhau, thì cùng một cặp không cần phải kiểm tra lại.
Ví dụ: một khi chúng tôi thực hiện ba thử nghiệm sau:
ABC
QUẢNG CÁO
BDF
chúng tôi không phải thực hiện:
ABD
bởi vì cặp A, B được bao phủ bởi trường hợp thử nghiệm đầu tiên, A, D được bao phủ bởi cái thứ hai và B, D được bao phủ bởi cái thứ ba.
Vì vậy, vấn đề là, số lượng tối thiểu các trường hợp thử nghiệm mà chúng ta cần để đảm bảo rằng tất cả các cặp được kiểm tra là gì?
Để khái quát hóa, nếu chúng ta có n mục, s có thể được kiểm tra cùng một lúc và chúng ta cần đảm bảo rằng tất cả các tuple có thể được kiểm tra (chẳng hạn như s> t), số lượng trường hợp thử nghiệm tối thiểu mà chúng ta cần trong điều khoản của n, s và t?
Và cuối cùng, điều gì sẽ là một thuật toán tốt để tạo ra các trường hợp thử nghiệm cần thiết?