Как указал Кейт , количество комбинаций будет невероятно большим, если не будет исключенных комбинаций, что сделает вашу потребность неуязвимой. Однако, поскольку вы уже сказали, что у вас есть взаимоисключающие варианты, пространство для решения будет меньше.
Насколько меньше? Зависит от того, сколько вариантов являются взаимоисключающими. Я рекомендую немного поработать над этим, прежде чем идти слишком усердно.
Предполагая, что достаточное количество вариантов выбора является эксклюзивным, вам все равно придется по сути его перебирать, но вы вряд ли найдете существующий, полезный алгоритм.
Что приводит меня к вопросу: какова ваша причина для этого - исчерпывающее тестирование? Звучит хорошо, но вы можете обнаружить, что это невозможно. Я сам столкнулся с этой проблемой, и, в конце концов, вас вполне может заставить некоторая комбинация тщательно отобранных «крайних» случаев плюс некоторые квази-случайно выбранные другие случаи.
Прочитав ваш комментарий выше, похоже, вы определяете «взаимное исключение» иначе, чем я, и я боюсь, что у вас может быть проблема.
Итак, данный пациент не слеп и не слеп. Отлично. Но это не то, что я (и я подозреваю, что все остальные здесь) поняли, когда вы упомянули обоюдное исключение.
Тем, о которых я говорю, например, если слепой, не может быть инвалидом или что-то в этом роде.
Без значительного количества взаимоисключающих взаимосвязей между вашими атрибутами, которые ограничивают их комбинации, вы не сможете завершить исчерпывающее тестирование.