Tienes un número absurdo de posibles conjuntos de entrada en tu espacio de entrada. No puedes probarlos todos, punto. Tienes que probar un subconjunto de los conjuntos de entrada y utilizar una heurística valiosa para elegir los conjuntos que haces la prueba.
Esto es lo que deben hacer sus pruebas (esto se deriva de las recomendaciones de pruebas DO-254 que usa mi compañía):
- Cada salida debe cambiar al menos una vez
- Cada entrada debe cambiar al menos una vez
Eso es un mínimo, no un máximo. En casos como este, realizamos un análisis de cobertura de decisión de condición mínima (MCDC) para ver qué otros conjuntos de entrada debemos probar. Siempre lo he explicado así:
Imagina que tu caja negra es una puerta AND con 200 entradas. No puede probar cada conjunto de entrada, por lo que prueba un subconjunto de todo el espacio de entrada. Primero, siga las reglas que mencioné anteriormente: debe probar al menos dos casos: uno que hace que la salida sea 0 / Falso y otro que hace que la salida sea 1 / Verdadero. Para la puerta AND esto es fácil: todos 0 / Falso y todos 1 / Verdadero. Eso prueba que su salida puede cambiar. Lo siguiente que debe hacer es elegir conjuntos de entrada para que haya un conjunto de entrada para el que cada entrada sea el factor decisivo en la salida. Para una entrada Y de 200 entradas, esto le proporciona 200 conjuntos de entradas diferentes: el primero tiene todas las entradas Verdadero, excepto la entrada # 1, el segundo tiene todas las entradas Verdadero, excepto el # 2, etc. Usando esta metodología, verifica que cada entrada tenga un efecto independiente en la salida. Si alguna entrada que sea falsa no produce una salida falsa, entonces sabe que tiene un problema.
Dijiste que tu lógica es todo combinatoria. Esto es preferible a una gran cantidad de cierres / chanclas, pero aún así no es perfecto. Tiene que trabajar hacia atrás desde la salida para determinar los conjuntos de entrada para los que cada entrada individual tiene un efecto decisivo en la salida. Si su lógica es complicada, tendrá mucho trabajo por delante, pero esta es la forma más rápida y completa de probar su caja negra lógica.
En cuanto a los aspectos prácticos estás por tu cuenta. La empresa en la que trabajo utiliza hardware personalizado para realizar pruebas de caja negra de FPGA a nivel de pin (y teóricamente ASIC si pudiera proporcionarnos una pieza para colocar en una placa) a velocidades operativas. Es completo y automatizado, pero cada dispositivo de prueba es personalizado para el proyecto dado, por lo que el uso de este enfoque requiere un contrato y no solo la compra de artículos de estante y su combinación.
Uno de los problemas que tendrá que se alivie con nuestro enfoque es simplemente conectar todos los cables. Supongo que la mayoría de las personas sugerirían un analizador lógico obscenamente grande, pero tienes miles de pines, por lo que tendrías que probar subconjuntos de pines a la vez. Uno de los aspectos positivos del enfoque que utilizamos es que supervisa todos los pines en todo momento, por lo que le permite ver que las salidas que espera cambiar cambian, pero también que las salidas que no deberían cambiar tampoco. No puede obtener eso si utiliza un analizador lógico con menos pines que el número de entradas / salidas que tiene.